From 290046abcc7559fdb6c2be529cdfb56590ab1a5c Mon Sep 17 00:00:00 2001
From: Gaetan Boismal <gaetan.boismal@forgerock.com>
Date: Mon, 31 Oct 2016 14:00:38 +0000
Subject: [PATCH] OPENDJ-2772 Create base64 tool in the sdk
---
opendj-ldap-toolkit/src/main/resources/com/forgerock/opendj/ldap/tools/tools_pl.properties | 9 +
opendj-ldap-toolkit/src/main/java/com/forgerock/opendj/ldap/tools/Base64.java | 326 ++++++++++++++++++++++++++++++++++++
opendj-ldap-toolkit/src/main/assembly/bin/base64 | 25 ++
opendj-ldap-toolkit/src/main/resources/com/forgerock/opendj/ldap/tools/tools_zh_CN.properties | 14 +
opendj-ldap-toolkit/src/main/resources/com/forgerock/opendj/ldap/tools/tools_ca_ES.properties | 9 +
opendj-ldap-toolkit/src/main/resources/com/forgerock/opendj/ldap/tools/tools_de.properties | 14 +
opendj-ldap-toolkit/src/main/resources/com/forgerock/opendj/ldap/tools/tools_fr.properties | 15 +
opendj-ldap-toolkit/src/main/resources/com/forgerock/opendj/ldap/tools/tools_ko.properties | 14 +
opendj-ldap-toolkit/src/main/resources/com/forgerock/opendj/ldap/tools/tools.properties | 24 ++
opendj-ldap-toolkit/src/main/resources/com/forgerock/opendj/ldap/tools/tools_es.properties | 14 +
opendj-ldap-toolkit/src/main/assembly/bat/base64.bat | 21 ++
opendj-ldap-toolkit/src/main/resources/com/forgerock/opendj/ldap/tools/tools_zh_TW.properties | 14 +
opendj-ldap-toolkit/src/main/resources/com/forgerock/opendj/ldap/tools/tools_ja.properties | 14 +
13 files changed, 513 insertions(+), 0 deletions(-)
diff --git a/opendj-ldap-toolkit/src/main/assembly/bat/base64.bat b/opendj-ldap-toolkit/src/main/assembly/bat/base64.bat
new file mode 100644
index 0000000..fd95eb9
--- /dev/null
+++ b/opendj-ldap-toolkit/src/main/assembly/bat/base64.bat
@@ -0,0 +1,21 @@
+
+@echo off
+rem The contents of this file are subject to the terms of the Common Development and
+rem Distribution License (the License). You may not use this file except in compliance with the
+rem License.
+rem
+rem You can obtain a copy of the License at legal/CDDLv1.0.txt. See the License for the
+rem specific language governing permission and limitations under the License.
+rem
+rem When distributing Covered Software, include this CDDL Header Notice in each file and include
+rem the License file at legal/CDDLv1.0.txt. If applicable, add the following below the CDDL
+rem Header, with the fields enclosed by brackets [] replaced by your own identifying
+rem information: "Portions Copyright [year] [name of copyright owner]".
+rem
+rem Copyright 2016 ForgeRock AS.
+
+setlocal
+
+set OPENDJ_INVOKE_CLASS="com.forgerock.opendj.ldap.tools.Base64"
+set SCRIPT_NAME=base64
+call "%~dp0\..\lib\_client-script.bat" %*
diff --git a/opendj-ldap-toolkit/src/main/assembly/bin/base64 b/opendj-ldap-toolkit/src/main/assembly/bin/base64
new file mode 100644
index 0000000..c7f5e0e
--- /dev/null
+++ b/opendj-ldap-toolkit/src/main/assembly/bin/base64
@@ -0,0 +1,25 @@
+#!/bin/sh
+#
+# The contents of this file are subject to the terms of the Common Development and
+# Distribution License (the License). You may not use this file except in compliance with the
+# License.
+#
+# You can obtain a copy of the License at legal/CDDLv1.0.txt. See the License for the
+# specific language governing permission and limitations under the License.
+#
+# When distributing Covered Software, include this CDDL Header Notice in each file and include
+# the License file at legal/CDDLv1.0.txt. If applicable, add the following below the CDDL
+# Header, with the fields enclosed by brackets [] replaced by your own identifying
+# information: "Portions Copyright [year] [name of copyright owner]".
+#
+# Copyright 2016 ForgeRock AS.
+
+
+OPENDJ_INVOKE_CLASS="com.forgerock.opendj.ldap.tools.Base64"
+export OPENDJ_INVOKE_CLASS
+
+SCRIPT_NAME="base64"
+export SCRIPT_NAME
+
+SCRIPT_DIR=`dirname "${0}"`
+"${SCRIPT_DIR}/../lib/_client-script.sh" "${@}"
diff --git a/opendj-ldap-toolkit/src/main/java/com/forgerock/opendj/ldap/tools/Base64.java b/opendj-ldap-toolkit/src/main/java/com/forgerock/opendj/ldap/tools/Base64.java
new file mode 100644
index 0000000..edb80fa
--- /dev/null
+++ b/opendj-ldap-toolkit/src/main/java/com/forgerock/opendj/ldap/tools/Base64.java
@@ -0,0 +1,326 @@
+/*
+ * The contents of this file are subject to the terms of the Common Development and
+ * Distribution License (the License). You may not use this file except in compliance with the
+ * License.
+ *
+ * You can obtain a copy of the License at legal/CDDLv1.0.txt. See the License for the
+ * specific language governing permission and limitations under the License.
+ *
+ * When distributing Covered Software, include this CDDL Header Notice in each file and include
+ * the License file at legal/CDDLv1.0.txt. If applicable, add the following below the CDDL
+ * Header, with the fields enclosed by brackets [] replaced by your own identifying
+ * information: "Portions Copyright [year] [name of copyright owner]".
+ *
+ * Copyright 2006-2009 Sun Microsystems, Inc.
+ * Portions Copyright 2014-2016 ForgeRock AS.
+ */
+
+package com.forgerock.opendj.ldap.tools;
+
+import static com.forgerock.opendj.cli.CliMessages.ERR_FILEARG_NO_SUCH_FILE;
+import static com.forgerock.opendj.cli.CommonArguments.showUsageArgument;
+import static com.forgerock.opendj.cli.ToolVersionHandler.newSdkVersionHandler;
+import static com.forgerock.opendj.cli.Utils.filterExitCode;
+import static com.forgerock.opendj.cli.Utils.throwIfArgumentsConflict;
+import static com.forgerock.opendj.ldap.CoreMessages.ERR_BASE64_DECODE_INVALID_LENGTH;
+import static com.forgerock.opendj.ldap.tools.LDAPToolException.newToolException;
+import static com.forgerock.opendj.ldap.tools.LDAPToolException.newToolExceptionAlreadyPrinted;
+import static com.forgerock.opendj.ldap.tools.LDAPToolException.newToolParamException;
+import static com.forgerock.opendj.ldap.tools.ToolsMessages.*;
+import static com.forgerock.opendj.ldap.tools.Utils.parseArguments;
+import static com.forgerock.opendj.util.StaticUtils.getExceptionMessage;
+import static org.forgerock.util.Utils.closeSilently;
+
+import java.io.BufferedReader;
+import java.io.BufferedWriter;
+import java.io.ByteArrayOutputStream;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.FileReader;
+import java.io.FileWriter;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.PrintStream;
+import java.io.UnsupportedEncodingException;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.StringTokenizer;
+
+import com.forgerock.opendj.cli.ArgumentException;
+import com.forgerock.opendj.cli.BooleanArgument;
+import com.forgerock.opendj.cli.ConsoleApplication;
+import com.forgerock.opendj.cli.StringArgument;
+import com.forgerock.opendj.cli.SubCommand;
+import com.forgerock.opendj.cli.SubCommandArgumentParser;
+import org.forgerock.opendj.ldap.ResultCode;
+
+/**
+ * Tool that can be used for performing base64 encoding and decoding.
+ * <p>
+ * Base64 is a mechanism for encoding binary data in ASCII form by converting
+ * sets of three bytes with eight significant bits each to sets of four bytes
+ * with six significant bits each.
+ */
+public final class Base64 extends ConsoleApplication {
+
+ /**
+ * The main method for base64 tool.
+ *
+ * @param args
+ * The command-line arguments provided to this program.
+ */
+ public static void main(final String[] args) {
+ System.exit(filterExitCode(run(System.out, System.err, args)));
+ }
+
+ /**
+ * Run {@link Base64} tool with the provided arguments.
+ * Output and errors will be write on the provided streams.
+ * This method can be use to run the tool programmatically.
+ *
+ * @param out
+ * {@link PrintStream} which will be use by the tool to write results and information messages.
+ * @param err
+ * {@link PrintStream} which will be use by the tool to write errors.
+ * @param args
+ * Arguments set to pass to the tool.
+ * @return
+ * An integer which represents the result code of the tool.
+ */
+ public static int run(final PrintStream out, final PrintStream err, final String... args) {
+ final Base64 base64 = new Base64(out, err);
+ try {
+ return base64.run(args);
+ } catch (final LDAPToolException e) {
+ e.printErrorMessage(base64);
+ return e.getResultCode();
+ }
+ }
+
+ private Base64(final PrintStream out, final PrintStream err) {
+ super(out, err);
+ }
+
+ @Override
+ public boolean isInteractive() {
+ return false;
+ }
+
+ private int run(final String[] args) throws LDAPToolException {
+ final SubCommandArgumentParser argParser =
+ new SubCommandArgumentParser(Base64.class.getName(), INFO_BASE64_TOOL_DESCRIPTION.get(), false);
+ argParser.setShortToolDescription(REF_SHORT_DESC_BASE64.get());
+ argParser.setVersionHandler(newSdkVersionHandler());
+
+ final BooleanArgument showUsage;
+
+ final SubCommand decodeSubCommand;
+ final StringArgument encodedData;
+ final StringArgument encodedFile;
+ final StringArgument toRawFile;
+
+ final SubCommand encodeSubCommand;
+ final StringArgument rawData;
+ final StringArgument rawFile;
+ final StringArgument toEncodedFile;
+
+ try {
+ decodeSubCommand = new SubCommand(argParser, "decode", INFO_BASE64_DECODE_DESCRIPTION.get());
+ encodeSubCommand = new SubCommand(argParser, "encode", INFO_BASE64_ENCODE_DESCRIPTION.get());
+
+ encodedData = StringArgument.builder("encodedData")
+ .shortIdentifier('d')
+ .description(INFO_BASE64_ENCODED_DATA_DESCRIPTION.get())
+ .valuePlaceholder(INFO_DATA_PLACEHOLDER.get())
+ .buildAndAddToSubCommand(decodeSubCommand);
+
+ encodedFile = StringArgument.builder("encodedDataFile")
+ .shortIdentifier('f')
+ .description(INFO_BASE64_ENCODED_FILE_DESCRIPTION.get())
+ .valuePlaceholder(INFO_PATH_PLACEHOLDER.get())
+ .buildAndAddToSubCommand(decodeSubCommand);
+
+ toRawFile = StringArgument.builder("toRawFile")
+ .shortIdentifier('o')
+ .description(INFO_BASE64_TO_RAW_FILE_DESCRIPTION.get())
+ .valuePlaceholder(INFO_PATH_PLACEHOLDER.get())
+ .buildAndAddToSubCommand(decodeSubCommand);
+
+ rawData = StringArgument.builder("rawData")
+ .shortIdentifier('d')
+ .description(INFO_BASE64_RAW_DATA_DESCRIPTION.get())
+ .valuePlaceholder(INFO_DATA_PLACEHOLDER.get())
+ .buildAndAddToSubCommand(encodeSubCommand);
+
+ rawFile = StringArgument.builder("rawDataFile")
+ .shortIdentifier('f')
+ .description(INFO_BASE64_RAW_FILE_DESCRIPTION.get())
+ .valuePlaceholder(INFO_PATH_PLACEHOLDER.get())
+ .buildAndAddToSubCommand(encodeSubCommand);
+
+ toEncodedFile = StringArgument.builder("toEncodedFile")
+ .shortIdentifier('o')
+ .description(INFO_BASE64_TO_ENCODED_FILE_DESCRIPTION.get())
+ .valuePlaceholder(INFO_PATH_PLACEHOLDER.get())
+ .buildAndAddToSubCommand(encodeSubCommand);
+
+ final List<SubCommand> subCommandList = new ArrayList<>(2);
+ subCommandList.add(decodeSubCommand);
+ subCommandList.add(encodeSubCommand);
+
+ showUsage = showUsageArgument();
+ argParser.addGlobalArgument(showUsage);
+ argParser.setUsageGroupArgument(showUsage, subCommandList);
+ argParser.setUsageArgument(showUsage, getOutputStream());
+ } catch (final ArgumentException ae) {
+ throw newToolParamException(ae, ERR_CANNOT_INITIALIZE_ARGS.get(ae.getMessage()));
+ }
+
+ parseArguments(argParser, getErrStream(), args);
+ if (argParser.usageOrVersionDisplayed()) {
+ return ResultCode.SUCCESS.intValue();
+ }
+
+ try {
+ throwIfArgumentsConflict(encodedData, encodedFile);
+ throwIfArgumentsConflict(rawData, rawFile);
+ } catch (final ArgumentException e) {
+ argParser.displayMessageAndUsageReference(getErrStream(), ERR_ERROR_PARSING_ARGS.get(e.getMessage()));
+ throw newToolParamException(e, e.getMessageObject());
+ }
+
+ final SubCommand subCommand = argParser.getSubCommand();
+ if (subCommand == null) {
+ argParser.displayMessageAndUsageReference(getErrStream(), ERR_BASE64_NO_SUBCOMMAND_SPECIFIED.get());
+ throw newToolExceptionAlreadyPrinted(null, ResultCode.CLIENT_SIDE_PARAM_ERROR);
+ }
+
+ if (subCommand.getName().equals(encodeSubCommand.getName())) {
+ return encode(rawData, rawFile, toEncodedFile);
+ } else if (subCommand.getName().equals(decodeSubCommand.getName())) {
+ return decode(encodedData, encodedFile, toRawFile);
+ } else {
+ argParser.displayMessageAndUsageReference(
+ getErrStream(), ERR_BASE64_UNKNOWN_SUBCOMMAND.get(subCommand.getName()));
+ throw newToolExceptionAlreadyPrinted(null, ResultCode.CLIENT_SIDE_PARAM_ERROR);
+ }
+ }
+
+ private int encode(final StringArgument rawDataArg,
+ final StringArgument rawDataFilePathArg,
+ final StringArgument toEncodeFilePathArg) throws LDAPToolException {
+ byte[] dataToEncode;
+ if (rawDataArg.isPresent()) {
+ try {
+ dataToEncode = rawDataArg.getValue().getBytes("UTF-8");
+ } catch (final UnsupportedEncodingException e) {
+ throw newToolException(e, ResultCode.OPERATIONS_ERROR,
+ ERR_BASE64_ERROR_DECODING_RAW_DATA.get(e.getMessage()));
+ }
+ } else {
+ final boolean readFromFile = rawDataFilePathArg.isPresent();
+ InputStream inputStream = null;
+ final String rawDataFilePath = rawDataFilePathArg.getValue();
+ try {
+ inputStream = readFromFile ? new FileInputStream(rawDataFilePath) : getInputStream();
+ final ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ byte[] buffer = new byte[8192];
+ int bytesRead;
+ while ((bytesRead = inputStream.read(buffer)) >= 0) {
+ baos.write(buffer, 0, bytesRead);
+ }
+
+ dataToEncode = baos.toByteArray();
+ } catch (final FileNotFoundException e) {
+ throw newToolParamException(
+ e, ERR_FILEARG_NO_SUCH_FILE.get(rawDataFilePath, rawDataFilePathArg.getLongIdentifier()));
+ } catch (final Exception e) {
+ throw newToolException(e, ResultCode.OPERATIONS_ERROR,
+ ERR_BASE64_CANNOT_READ_RAW_DATA.get(getExceptionMessage(e)));
+ } finally {
+ if (readFromFile) {
+ closeSilently(inputStream);
+ }
+ }
+ }
+
+ final String base64Data = org.forgerock.util.encode.Base64.encode(dataToEncode);
+ if (toEncodeFilePathArg.isPresent()) {
+ try (final BufferedWriter writer = new BufferedWriter(new FileWriter(toEncodeFilePathArg.getValue()))) {
+ writer.write(base64Data);
+ writer.newLine();
+ } catch (final Exception e) {
+ throw newToolException(e, ResultCode.OPERATIONS_ERROR,
+ ERR_BASE64_CANNOT_WRITE_ENCODED_DATA.get(getExceptionMessage(e)));
+ }
+ } else {
+ getOutputStream().println(base64Data);
+ }
+ return ResultCode.SUCCESS.intValue();
+ }
+
+ private int decode(final StringArgument encodedDataArg,
+ final StringArgument encodedDataFilePathArg,
+ final StringArgument toRawFilePathArg) throws LDAPToolException {
+ String dataToDecode = null;
+ if (encodedDataArg.isPresent()) {
+ dataToDecode = encodedDataArg.getValue();
+ } else {
+ final boolean readFromFile = encodedDataFilePathArg.isPresent();
+ BufferedReader reader = null;
+ final String encodedDataFilePath = encodedDataFilePathArg.getValue();
+ try {
+ reader = new BufferedReader(readFromFile ? new FileReader(encodedDataFilePath)
+ : new InputStreamReader(System.in));
+ final StringBuilder buffer = new StringBuilder();
+ String line;
+ while ((line = reader.readLine()) != null) {
+ final StringTokenizer tokenizer = new StringTokenizer(line);
+ while (tokenizer.hasMoreTokens()) {
+ buffer.append(tokenizer.nextToken());
+ }
+ }
+
+ dataToDecode = buffer.toString();
+ } catch (final FileNotFoundException e) {
+ throw newToolParamException(
+ e, ERR_FILEARG_NO_SUCH_FILE.get(encodedDataFilePath,
+ encodedDataFilePathArg.getLongIdentifier()));
+ } catch (final Exception e) {
+ throw newToolException(e, ResultCode.OPERATIONS_ERROR,
+ ERR_BASE64_CANNOT_READ_ENCODED_DATA.get(getExceptionMessage(e)));
+ } finally {
+ if (readFromFile) {
+ closeSilently(reader);
+ }
+ }
+ }
+
+ if (dataToDecode.length() % 4 != 0) {
+ throw newToolParamException(ERR_BASE64_DECODE_INVALID_LENGTH.get(dataToDecode));
+ }
+
+ final byte[] decodedData = org.forgerock.util.encode.Base64.decode(dataToDecode);
+ if (decodedData == null) {
+ throw newToolParamException(ERR_BASE64_ERROR_DECODING_RAW_DATA.get(dataToDecode));
+ }
+
+ try {
+ if (toRawFilePathArg.isPresent()) {
+ try (final FileOutputStream outputStream = new FileOutputStream(toRawFilePathArg.getValue())) {
+ outputStream.write(decodedData);
+ }
+ } else {
+ final PrintStream outputPrintStream = getOutputStream();
+ outputPrintStream.write(decodedData);
+ outputPrintStream.println();
+ outputPrintStream.flush();
+ }
+ } catch (final Exception e) {
+ throw newToolException(e, ResultCode.OPERATIONS_ERROR,
+ ERR_BASE64_CANNOT_WRITE_RAW_DATA.get(getExceptionMessage(e)));
+ }
+ return ResultCode.SUCCESS.intValue();
+ }
+}
diff --git a/opendj-ldap-toolkit/src/main/resources/com/forgerock/opendj/ldap/tools/tools.properties b/opendj-ldap-toolkit/src/main/resources/com/forgerock/opendj/ldap/tools/tools.properties
index ee0c97b..8915f93 100644
--- a/opendj-ldap-toolkit/src/main/resources/com/forgerock/opendj/ldap/tools/tools.properties
+++ b/opendj-ldap-toolkit/src/main/resources/com/forgerock/opendj/ldap/tools/tools.properties
@@ -365,6 +365,30 @@
ERR_ADDRATE_SIZE_THRESHOLD_LOWER_THAN_ITERATIONS=The size threshold must be lower than \
the maximum number of add operations
INFO_ADDRATE_DESCRIPTION_NOPURGE=Disable the purge phase when the tool stops.
+#
+# Base64 Tool
+#
+INFO_BASE64_TOOL_DESCRIPTION=This utility can be used to encode and decode information using base64
+INFO_BASE64_DECODE_DESCRIPTION=Decode base64-encoded information into \
+ raw data. When no options are specified, this subcommand reads from standard input and writes to standard output
+INFO_BASE64_ENCODE_DESCRIPTION=Encode raw data using base64. \
+ When no options are specified, this subcommand reads from standard input and writes to standard output
+INFO_BASE64_ENCODED_DATA_DESCRIPTION=The base64-encoded data to be decoded
+INFO_BASE64_ENCODED_FILE_DESCRIPTION=The path to a file containing the base64-encoded data to be decoded
+INFO_BASE64_RAW_DATA_DESCRIPTION=The raw data to be base64 encoded
+INFO_BASE64_RAW_FILE_DESCRIPTION=The path to a file containing the raw data to be base64 encoded
+INFO_BASE64_TO_ENCODED_FILE_DESCRIPTION=The path to a file to which the base64-encoded data should be written
+INFO_BASE64_TO_RAW_FILE_DESCRIPTION=The path to a file to which the raw base64-decoded data should be written
+ERR_BASE64_CANNOT_READ_RAW_DATA=An error occurred while attempting to read the raw data to encode: %s
+ERR_BASE64_CANNOT_WRITE_ENCODED_DATA=An error occurred while attempting to write the encoded data: %s
+ERR_BASE64_CANNOT_READ_ENCODED_DATA=An error occurred while attempting to read the base64-encoded data: %s
+ERR_BASE64_CANNOT_WRITE_RAW_DATA=An error occurred while attempting to write the decoded data: %s
+ERR_BASE64_UNKNOWN_SUBCOMMAND=Unknown subcommand %s
+INFO_DATA_PLACEHOLDER={data}
+REF_SHORT_DESC_BASE64=encode and decode base64 strings
+ERR_BASE64_NO_SUBCOMMAND_SPECIFIED=A subcommand must be specified with this tool.\n\
+ Please use either 'base64 encode' or 'base64 decode'.
+ERR_BASE64_ERROR_DECODING_RAW_DATA=Unable to decode provided data: %s
# Strings for generated reference documentation.
REF_SHORT_DESC_ADDRATE=measure add and delete throughput and response time
diff --git a/opendj-ldap-toolkit/src/main/resources/com/forgerock/opendj/ldap/tools/tools_ca_ES.properties b/opendj-ldap-toolkit/src/main/resources/com/forgerock/opendj/ldap/tools/tools_ca_ES.properties
index 6a6f364..2db05b0 100644
--- a/opendj-ldap-toolkit/src/main/resources/com/forgerock/opendj/ldap/tools/tools_ca_ES.properties
+++ b/opendj-ldap-toolkit/src/main/resources/com/forgerock/opendj/ldap/tools/tools_ca_ES.properties
@@ -58,3 +58,12 @@
INFO_LDAPSEARCH_MATCHING_ENTRY_COUNT=# N\u00famero total de les entrades que coincideixen: %d
ERR_TOOL_RESULT_CODE=Codi de resultat: %d (%s)
ERR_TOOL_MATCHED_DN=DN coincident: %s
+INFO_BASE64_TOOL_DESCRIPTION=Aquesta utilitat pot ser utilitzada per codificar i descodificar informaci\u00f3 mitjan\u00e7ant base64
+INFO_BASE64_DECODE_DESCRIPTION=Descodificar informaci\u00f3 codificada en base64 a dades en cru
+INFO_BASE64_ENCODE_DESCRIPTION=Codificar dades en cru utilitzant base64
+INFO_BASE64_ENCODED_DATA_DESCRIPTION=Les dades codificades en base64 a ser descodificades
+INFO_BASE64_ENCODED_FILE_DESCRIPTION=La ruta al fitxer que cont\u00e9 les dades codificades en base64 a ser descodificades
+INFO_BASE64_RAW_DATA_DESCRIPTION=Les dades en cru a ser codificades en base64
+INFO_BASE64_RAW_FILE_DESCRIPTION=La ruta al fitxer que cont\u00e9 les dades en cru a ser codificades en base64
+INFO_BASE64_TO_ENCODED_FILE_DESCRIPTION=La ruta al fitxer on la qual les dades en base64 hauran de ser escrites
+INFO_BASE64_TO_RAW_FILE_DESCRIPTION=La ruta al fitxer on la qual les dades en cru descodificades de la base64 hauran de ser escrites
diff --git a/opendj-ldap-toolkit/src/main/resources/com/forgerock/opendj/ldap/tools/tools_de.properties b/opendj-ldap-toolkit/src/main/resources/com/forgerock/opendj/ldap/tools/tools_de.properties
index b17ed25..1fcc9c9 100644
--- a/opendj-ldap-toolkit/src/main/resources/com/forgerock/opendj/ldap/tools/tools_de.properties
+++ b/opendj-ldap-toolkit/src/main/resources/com/forgerock/opendj/ldap/tools/tools_de.properties
@@ -109,3 +109,17 @@
ERR_EFFECTIVERIGHTS_INVALID_AUTHZID=Die in der Steuerung geteffectiverights enthaltene Authorisierungs-ID "%s" ist ung\u00fcltig, da sie nicht mit "dn:" beginnt, um einen Benutzer-DN anzuzeigen
ERR_LDAPCOMPARE_ERROR_READING_FILE=Fehler beim Lesen von Datei '%s'. Stellen Sie sicher, dass die Datei vorhanden ist und Sie die Lesezugriffsrechte hierf\u00fcr besitzen Details: %s
ERR_LDAPCOMPARE_FILENAME_AND_DNS=Beide Eintrags-DNs und ein Dateiname wurden f\u00fcr den Vergleichsvorgang angegeben. Diese Argumente sind nicht kompatibel
+INFO_BASE64_TOOL_DESCRIPTION=Dieses Dienstprogramm dient zum Verschl\u00fcsseln und Entschl\u00fcsseln von Informationen mit Base64
+INFO_BASE64_DECODE_DESCRIPTION=Base64-enkodierte Informationen als Rohdaten entschl\u00fcsseln
+INFO_BASE64_ENCODE_DESCRIPTION=Rohdaten mit Base64 verschl\u00fcsseln
+INFO_BASE64_ENCODED_DATA_DESCRIPTION=Die Base64-enkodierten Daten, die entschl\u00fcsselt werden sollen
+INFO_BASE64_ENCODED_FILE_DESCRIPTION=Der Pfad zu der Datei, die die Base64-enkodierten Daten enth\u00e4lt, die entschl\u00fcsselt werden sollen
+INFO_BASE64_RAW_DATA_DESCRIPTION=Die Rohdaten, die mit Base64 verschl\u00fcsselt werden sollen
+INFO_BASE64_RAW_FILE_DESCRIPTION=Der Pfad zu der Datei, die die Rohdaten enth\u00e4lt, die mit Base64 verschl\u00fcsselt werden sollen
+INFO_BASE64_TO_ENCODED_FILE_DESCRIPTION=Der Pfad zu der Datei, in die die Base64-enkodierten Daten geschrieben werden sollen
+INFO_BASE64_TO_RAW_FILE_DESCRIPTION=Der Pfad zu der Datei, in die die Base64-dekodierten Rohdaten geschreiben werden sollen
+ERR_BASE64_CANNOT_READ_RAW_DATA=Fehler beim Versuch, die Rohdaten zum Entschl\u00fcsseln zu lesen: %s
+ERR_BASE64_CANNOT_WRITE_ENCODED_DATA=Fehler beim Versuch, die verschl\u00fcsselten Daten zu schreiben: %s
+ERR_BASE64_CANNOT_READ_ENCODED_DATA=Fehler beim Versuch, mit Base64 verschl\u00fcsselten Daten zu lesen: %s
+ERR_BASE64_CANNOT_WRITE_RAW_DATA=Fehler beim Versuch, die entschl\u00fcsselten Daten zu schreiben: %s
+ERR_BASE64_UNKNOWN_SUBCOMMAND=Unbekannter Unterbefehl %s
diff --git a/opendj-ldap-toolkit/src/main/resources/com/forgerock/opendj/ldap/tools/tools_es.properties b/opendj-ldap-toolkit/src/main/resources/com/forgerock/opendj/ldap/tools/tools_es.properties
index 792bdd6..d53e0f0 100644
--- a/opendj-ldap-toolkit/src/main/resources/com/forgerock/opendj/ldap/tools/tools_es.properties
+++ b/opendj-ldap-toolkit/src/main/resources/com/forgerock/opendj/ldap/tools/tools_es.properties
@@ -111,3 +111,17 @@
ERR_LDAPCOMPARE_FILENAME_AND_DNS=Se han proporcionado ambos ND de entrada y un nombre de archivo para la operaci\u00f3n de comparaci\u00f3n Estos argumentos no son compatibles
INFO_LDIFDIFF_DESCRIPTION_USE_COMPARE_RESULT=Utilice los resultados de comparaci\u00f3n de LDAP como un c\u00f3digo de salida para se\\u00F1alar diferencias entre los dos archivos LDIF
INFO_LDAPCOMPARE_DESCRIPTION_USE_COMPARE_RESULT=Utilice los resultados de comparaci\u00f3n de LDAP como un c\u00f3digo de salida para las comparaci\u00f3nes LDAP
+INFO_BASE64_TOOL_DESCRIPTION=Esta utilidad se puede utilizar para codificar y descodificar informaci\u00f3n mediante base64
+INFO_BASE64_DECODE_DESCRIPTION=Descodificar informaci\u00f3n codificada en base64 en datos no procesados
+INFO_BASE64_ENCODE_DESCRIPTION=Codificar datos no procesados mediante base64
+INFO_BASE64_ENCODED_DATA_DESCRIPTION=Datos codificados en base64 que se van a descodificar
+INFO_BASE64_ENCODED_FILE_DESCRIPTION=La ruta del archivo que contiene los datos codificados en base64 que se van a descodificar
+INFO_BASE64_RAW_DATA_DESCRIPTION=Los datos no procesados que se van a codificar en base64
+INFO_BASE64_RAW_FILE_DESCRIPTION=La ruta de un archivo que contiene los datos no procesados que se van a codificar en base64
+INFO_BASE64_TO_ENCODED_FILE_DESCRIPTION=La ruta de un archivo en el que se deben escribir los datos codificados en base64
+INFO_BASE64_TO_RAW_FILE_DESCRIPTION=La ruta de un archivo en el que se deben escribir los datos descodificados en base64 no procesados
+ERR_BASE64_CANNOT_READ_RAW_DATA=Se ha producido un error al tratar de leer los datos no procesados que codificar: %s
+ERR_BASE64_CANNOT_WRITE_ENCODED_DATA=Se ha producido un error al tratar de escribir los datos codificados: %s
+ERR_BASE64_CANNOT_READ_ENCODED_DATA=Se ha producido un error al tratar de leer los datos codificados en base64: %s
+ERR_BASE64_CANNOT_WRITE_RAW_DATA=Se ha producido un error al tratar de escribir los datos descodificados: %s
+ERR_BASE64_UNKNOWN_SUBCOMMAND=Subcomando desconocido %s
diff --git a/opendj-ldap-toolkit/src/main/resources/com/forgerock/opendj/ldap/tools/tools_fr.properties b/opendj-ldap-toolkit/src/main/resources/com/forgerock/opendj/ldap/tools/tools_fr.properties
index 878d23e..63320b2 100644
--- a/opendj-ldap-toolkit/src/main/resources/com/forgerock/opendj/ldap/tools/tools_fr.properties
+++ b/opendj-ldap-toolkit/src/main/resources/com/forgerock/opendj/ldap/tools/tools_fr.properties
@@ -111,3 +111,18 @@
ERR_LDAPCOMPARE_FILENAME_AND_DNS=Vous avez fourni \u00e0 la fois des DN d'entr\u00e9e et un nom de fichier pour l'op\u00e9ration de comparaison. Ces arguments ne sont pas compatibles
INFO_LDIFDIFF_DESCRIPTION_USE_COMPARE_RESULT=Utiliser le r\u00e9sultat de comparaison LDAP en tant que code de sortie pour signaler les diff\u00e9rences entre deux fichiers LDIF
INFO_LDAPCOMPARE_DESCRIPTION_USE_COMPARE_RESULT=Utiliser le r\u00e9sultat de comparaison LDAP en tant que code de sortie pour les comparaisons LDAP
+INFO_BASE64_TOOL_DESCRIPTION=Cet utilitaire permet de coder et d\u00e9coder des informations en utilisant la base64
+INFO_BASE64_DECODE_DESCRIPTION=D\u00e9coder des informations cod\u00e9es en base64 en donn\u00e9es brutes
+INFO_BASE64_ENCODE_DESCRIPTION=Coder des donn\u00e9es brutes au moyen de la base64
+INFO_BASE64_ENCODED_DATA_DESCRIPTION=Les donn\u00e9es cod\u00e9es en base64 \u00e0 d\u00e9coder
+INFO_BASE64_ENCODED_FILE_DESCRIPTION=Le chemin vers le fichier contenant les donn\u00e9es cod\u00e9es en base64 \u00e0 d\u00e9coder
+INFO_BASE64_RAW_DATA_DESCRIPTION=Les donn\u00e9es brutes \u00e0 coder en base64
+INFO_BASE64_RAW_FILE_DESCRIPTION=Le chemin vers le fichier contenant les donn\u00e9es brutes \u00e0 coder en base64
+INFO_BASE64_TO_ENCODED_FILE_DESCRIPTION=Le chemin vers un fichier dans lequel les donn\u00e9es cod\u00e9es en base64 doivent \u00eatre \u00e9crites
+INFO_BASE64_TO_RAW_FILE_DESCRIPTION=Le chemin vers le fichier dans lequel les donn\u00e9es brutes d\u00e9cod\u00e9es de la base64 doivent \u00eatre \u00e9crites
+ERR_BASE64_CANNOT_READ_RAW_DATA=Une erreur s'est produite lors de la tentative de lecture des donn\u00e9es brutes \u00e0 coder\u00a0: %s
+ERR_BASE64_CANNOT_WRITE_ENCODED_DATA=Une erreur s'est produite lors de la tentative d'\u00e9criture des donn\u00e9es cod\u00e9es\u00a0: %s
+ERR_BASE64_CANNOT_READ_ENCODED_DATA=Une erreur s'est produite lors de la tentative de lecture des donn\u00e9es cod\u00e9es base64\u00a0: %s
+ERR_BASE64_CANNOT_WRITE_RAW_DATA=Une erreur s'est produite lors de la tentative d'\u00e9criture des donn\u00e9es d\u00e9cod\u00e9es\u00a0: %s
+ERR_BASE64_UNKNOWN_SUBCOMMAND=Sous-commande inconnue %s
+INFO_DATA_PLACEHOLDER={donn\u00e9es}
diff --git a/opendj-ldap-toolkit/src/main/resources/com/forgerock/opendj/ldap/tools/tools_ja.properties b/opendj-ldap-toolkit/src/main/resources/com/forgerock/opendj/ldap/tools/tools_ja.properties
index cd86d46..4a9aa1a 100644
--- a/opendj-ldap-toolkit/src/main/resources/com/forgerock/opendj/ldap/tools/tools_ja.properties
+++ b/opendj-ldap-toolkit/src/main/resources/com/forgerock/opendj/ldap/tools/tools_ja.properties
@@ -109,3 +109,17 @@
ERR_EFFECTIVERIGHTS_INVALID_AUTHZID=geteffectiverights \u5236\u5fa1\u306b\u542b\u307e\u308c\u308b\u8a8d\u53ef ID "%s" \u304c\u7121\u52b9\u3067\u3059\u3002\u5148\u982d\u306b\u30e6\u30fc\u30b6\u30fc DN \u3092\u793a\u3059 "dn:" \u304c\u3042\u308a\u307e\u305b\u3093
ERR_LDAPCOMPARE_ERROR_READING_FILE=\u30d5\u30a1\u30a4\u30eb '%s' \u306e\u8aad\u307f\u53d6\u308a\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002\u3053\u306e\u30d5\u30a1\u30a4\u30eb\u304c\u5b58\u5728\u3057\u3001\u8aad\u307f\u53d6\u308a\u30a2\u30af\u30bb\u30b9\u6a29\u304c\u3042\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u8a73\u7d30: %s
ERR_LDAPCOMPARE_FILENAME_AND_DNS=\u30a8\u30f3\u30c8\u30ea DN \u3068\u30d5\u30a1\u30a4\u30eb\u540d\u306e\u4e21\u65b9\u304c\u6bd4\u8f03\u64cd\u4f5c\u306b\u6307\u5b9a\u3055\u308c\u307e\u3057\u305f\u3002\u3053\u308c\u3089\u306e\u5f15\u6570\u306f\u4e92\u63db\u6027\u304c\u3042\u308a\u307e\u305b\u3093
+INFO_BASE64_TOOL_DESCRIPTION=\u3053\u306e\u30e6\u30fc\u30c6\u30a3\u30ea\u30c6\u30a3\u30fc\u3092\u4f7f\u7528\u3059\u308b\u3068\u3001\u60c5\u5831\u3092 Base64 \u3067\u7b26\u53f7\u5316\u304a\u3088\u3073\u5fa9\u53f7\u5316\u3067\u304d\u307e\u3059
+INFO_BASE64_DECODE_DESCRIPTION=Base64 \u3067\u7b26\u53f7\u5316\u3055\u308c\u305f\u60c5\u5831\u3092 raw \u30c7\u30fc\u30bf\u306b\u5fa9\u53f7\u5316\u3057\u307e\u3059
+INFO_BASE64_ENCODE_DESCRIPTION=Base64 \u3092\u4f7f\u3063\u3066 raw \u30c7\u30fc\u30bf\u3092\u7b26\u53f7\u5316\u3057\u307e\u3059
+INFO_BASE64_ENCODED_DATA_DESCRIPTION=Base64 \u3067\u7b26\u53f7\u5316\u3055\u308c\u305f\u30c7\u30fc\u30bf\u3092\u5fa9\u53f7\u5316\u3057\u307e\u3059
+INFO_BASE64_ENCODED_FILE_DESCRIPTION=\u5fa9\u53f7\u5316\u5bfe\u8c61\u306e Base64 \u3067\u7b26\u53f7\u5316\u3055\u308c\u305f\u30c7\u30fc\u30bf\u3092\u542b\u3080\u30d5\u30a1\u30a4\u30eb\u3078\u306e\u30d1\u30b9
+INFO_BASE64_RAW_DATA_DESCRIPTION=Base64 \u3067\u7b26\u53f7\u5316\u3059\u308b raw \u30c7\u30fc\u30bf
+INFO_BASE64_RAW_FILE_DESCRIPTION=Base64 \u3067\u7b26\u53f7\u5316\u3059\u308b raw \u30c7\u30fc\u30bf\u3092\u542b\u3080\u30d5\u30a1\u30a4\u30eb\u3078\u306e\u30d1\u30b9
+INFO_BASE64_TO_ENCODED_FILE_DESCRIPTION=Base64 \u3067\u7b26\u53f7\u5316\u3055\u308c\u305f\u30c7\u30fc\u30bf\u306e\u66f8\u304d\u8fbc\u307f\u5148\u30d5\u30a1\u30a4\u30eb\u3078\u306e\u30d1\u30b9
+INFO_BASE64_TO_RAW_FILE_DESCRIPTION=Base64 \u3067\u5fa9\u53f7\u5316\u3055\u308c\u305f raw \u30c7\u30fc\u30bf\u306e\u66f8\u304d\u8fbc\u307f\u5148\u30d5\u30a1\u30a4\u30eb\u3078\u306e\u30d1\u30b9
+ERR_BASE64_CANNOT_READ_RAW_DATA=\u7b26\u53f7\u5316\u3059\u308b raw \u30c7\u30fc\u30bf\u306e\u8aad\u307f\u53d6\u308a\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f: %s
+ERR_BASE64_CANNOT_WRITE_ENCODED_DATA=\u7b26\u53f7\u5316\u3055\u308c\u305f\u30c7\u30fc\u30bf\u306e\u66f8\u304d\u8fbc\u307f\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f: %s
+ERR_BASE64_CANNOT_READ_ENCODED_DATA=Base64 \u3067\u7b26\u53f7\u5316\u3055\u308c\u305f\u30c7\u30fc\u30bf\u306e\u66f8\u304d\u8fbc\u307f\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f: %s
+ERR_BASE64_CANNOT_WRITE_RAW_DATA=\u5fa9\u53f7\u5316\u3055\u308c\u305f\u30c7\u30fc\u30bf\u306e\u66f8\u304d\u8fbc\u307f\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f: %s
+ERR_BASE64_UNKNOWN_SUBCOMMAND=\u4e0d\u660e\u306a\u30b5\u30d6\u30b3\u30de\u30f3\u30c9 %s
diff --git a/opendj-ldap-toolkit/src/main/resources/com/forgerock/opendj/ldap/tools/tools_ko.properties b/opendj-ldap-toolkit/src/main/resources/com/forgerock/opendj/ldap/tools/tools_ko.properties
index daa3b63..979025a 100644
--- a/opendj-ldap-toolkit/src/main/resources/com/forgerock/opendj/ldap/tools/tools_ko.properties
+++ b/opendj-ldap-toolkit/src/main/resources/com/forgerock/opendj/ldap/tools/tools_ko.properties
@@ -106,3 +106,17 @@
INFO_LDAPSEARCH_VLV_CONTENT_COUNT=# VLV \ucee8\ud150\ud2b8 \uc218: %d
WARN_LDAPSEARCH_VLV_ERROR=# \uac00\uc0c1 \ubaa9\ub85d \ubcf4\uae30 \ucc98\ub9ac \uc2e4\ud328: %s
ERR_EFFECTIVERIGHTS_INVALID_AUTHZID=\uc0ac\uc6a9\uc790 DN\uc744 \ub098\ud0c0\ub0b4\ub294 "dn:"\uc73c\ub85c \uc2dc\uc791\ud558\uc9c0 \uc54a\uae30 \ub54c\ubb38\uc5d0 geteffectiverights \uc81c\uc5b4\uc5d0 \ud3ec\ud568\ub41c \uc778\uc99d \uc544\uc774\ub514 \"%s\"\uc774(\uac00) \uc798\ubabb\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
+INFO_BASE64_TOOL_DESCRIPTION=\uc774 \uc720\ud2f8\ub9ac\ud2f0\ub97c \uc0ac\uc6a9\ud558\uc5ec base64\ub85c \uc815\ubcf4\ub97c \uc778\ucf54\ub529 \ubc0f \ud574\ub3c5\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.
+INFO_BASE64_DECODE_DESCRIPTION=base64\ub85c \uc778\ucf54\ub529\ub41c \uc815\ubcf4\ub97c \uc6d0\uc2dc \ub370\uc774\ud130\ub85c \ud574\ub3c5\ud569\ub2c8\ub2e4.
+INFO_BASE64_ENCODE_DESCRIPTION=base64\ub97c \uc0ac\uc6a9\ud558\uc5ec \uc6d0\uc2dc \ub370\uc774\ud130\ub97c \uc778\ucf54\ub529\ud569\ub2c8\ub2e4.
+INFO_BASE64_ENCODED_DATA_DESCRIPTION=\ud574\ub3c5\ud560 base64\ub85c \uc778\ucf54\ub529\ub41c \ub370\uc774\ud130
+INFO_BASE64_ENCODED_FILE_DESCRIPTION=\ud574\ub3c5\ud560 base64\ub85c \uc778\ucf54\ub529\ub41c \ub370\uc774\ud130\ub97c \ud3ec\ud568\ud558\ub294 \ud30c\uc77c \uacbd\ub85c
+INFO_BASE64_RAW_DATA_DESCRIPTION=base64\ub85c \uc778\ucf54\ub529\ud560 \uc6d0\uc2dc \ub370\uc774\ud130
+INFO_BASE64_RAW_FILE_DESCRIPTION=base64\ub85c \uc778\ucf54\ub529\ud560 \uc6d0\uc2dc \ub370\uc774\ud130\ub97c \ud3ec\ud568\ud558\ub294 \ud30c\uc77c \uacbd\ub85c
+INFO_BASE64_TO_ENCODED_FILE_DESCRIPTION=base64\ub85c \uc778\ucf54\ub529\ub41c \ub370\uc774\ud130\ub97c \uae30\ub85d\ud560 \ud30c\uc77c \uacbd\ub85c
+INFO_BASE64_TO_RAW_FILE_DESCRIPTION=\uc6d0\uc2dc base64\ub85c \ud574\ub3c5\ud560 \ub370\uc774\ud130\ub97c \uae30\ub85d\ud560 \ud30c\uc77c \uacbd\ub85c
+ERR_BASE64_CANNOT_READ_RAW_DATA=\uc778\ucf54\ub529\ud560 \uc6d0\uc2dc \ub370\uc774\ud130\ub97c \uc77d\ub294 \ub3d9\uc548 \uc624\ub958\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4: %s
+ERR_BASE64_CANNOT_WRITE_ENCODED_DATA=\uc778\ucf54\ub529\ub41c \ub370\uc774\ud130\ub97c \uc4f0\ub294 \ub3d9\uc548 \uc624\ub958\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4: %s
+ERR_BASE64_CANNOT_READ_ENCODED_DATA=base64\ub85c \uc778\ucf54\ub529\ub41c \ub370\uc774\ud130\ub97c \uc77d\ub294 \ub3d9\uc548 \uc624\ub958\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4: %s
+ERR_BASE64_CANNOT_WRITE_RAW_DATA=\ud574\ub3c5\ub41c \ub370\uc774\ud130\ub97c \uc4f0\ub294 \ub3d9\uc548 \uc624\ub958\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4: %s
+ERR_BASE64_UNKNOWN_SUBCOMMAND=\uc54c \uc218 \uc5c6\ub294 \ud558\uc704 \uba85\ub839 %s\uc785\ub2c8\ub2e4.
diff --git a/opendj-ldap-toolkit/src/main/resources/com/forgerock/opendj/ldap/tools/tools_pl.properties b/opendj-ldap-toolkit/src/main/resources/com/forgerock/opendj/ldap/tools/tools_pl.properties
index 382a912..f34db25 100644
--- a/opendj-ldap-toolkit/src/main/resources/com/forgerock/opendj/ldap/tools/tools_pl.properties
+++ b/opendj-ldap-toolkit/src/main/resources/com/forgerock/opendj/ldap/tools/tools_pl.properties
@@ -59,3 +59,12 @@
ERR_CANNOT_INITIALIZE_ARGS=Nieoczekiwany b\u0142\u0105d wyst\u0105pi\u0142 podczas pr\u00f3by inicjalizacji argument\u00f3w wiersza polece\u0144: %s
INFO_LDAPSEARCH_MATCHING_ENTRY_COUNT=# Ca\u0142kowita ilo\u015b\u0107 pasuj\u0105cych wpis\u00f3w: %d
INFO_LDAPPWMOD_TOOL_DESCRIPTION=To narz\u0119dzie mo\u017ce by\u0107 u\u017cyte do przeprowadzenia operacji modyfikacji has\u0142a LDAP na Directory Server
+INFO_BASE64_DECODE_DESCRIPTION=Zdekoduj informacj\u0119 zakodowan\u0105 base64 do danych
+INFO_BASE64_TOOL_DESCRIPTION=To narz\u0119dzie mo\u017ce by\u0107 u\u017cyte do kodowania i dekodowania informacji u\u017cywaj\u0105c base64
+INFO_BASE64_RAW_FILE_DESCRIPTION=\u015acie\u017cka do pliku zawieraj\u0105cego dane, kt\u00f3re maj\u0105 by\u0107 zakodowane base64
+INFO_BASE64_RAW_DATA_DESCRIPTION=Dane kt\u00f3re maj\u0105 by\u0107 zakodowane base64
+INFO_BASE64_ENCODE_DESCRIPTION=Zakoduj dane u\u017cywaj\u0105c base64
+INFO_BASE64_ENCODED_DATA_DESCRIPTION=Dane zakodowane base64 do odkodowania
+INFO_BASE64_TO_RAW_FILE_DESCRIPTION=\u015acie\u017cka do pliku do kt\u00f3rego zdekodowane dane maj\u0105 by\u0107 zapisane
+INFO_BASE64_TO_ENCODED_FILE_DESCRIPTION=\u015acie\u017cka do pliku do kt\u00f3rego dane zakodowane base64 maj\u0105 by\u0107 zapisane
+INFO_BASE64_ENCODED_FILE_DESCRIPTION=\u015acie\u017cka do pliku zawieraj\u0105cego dane zakodowane base64, kt\u00f3re maj\u0105 by\u0107 zdekodowane
diff --git a/opendj-ldap-toolkit/src/main/resources/com/forgerock/opendj/ldap/tools/tools_zh_CN.properties b/opendj-ldap-toolkit/src/main/resources/com/forgerock/opendj/ldap/tools/tools_zh_CN.properties
index 179dc0b..6974c8e 100644
--- a/opendj-ldap-toolkit/src/main/resources/com/forgerock/opendj/ldap/tools/tools_zh_CN.properties
+++ b/opendj-ldap-toolkit/src/main/resources/com/forgerock/opendj/ldap/tools/tools_zh_CN.properties
@@ -109,3 +109,17 @@
ERR_EFFECTIVERIGHTS_INVALID_AUTHZID=geteffectiverights \u63a7\u5236\u4e2d\u5305\u542b\u7684\u6388\u6743 ID "%s" \u65e0\u6548\uff0c\u56e0\u4e3a\u5b83\u4e0d\u662f\u4ee5 "dn:" \u5f00\u5934\uff08\u8868\u793a\u7528\u6237 DN\uff09
ERR_LDAPCOMPARE_ERROR_READING_FILE=\u8bfb\u53d6\u6587\u4ef6 '%s' \u65f6\u51fa\u73b0\u9519\u8bef\u3002\u68c0\u67e5\u8be5\u6587\u4ef6\u662f\u5426\u5b58\u5728\uff0c\u4ee5\u53ca\u60a8\u662f\u5426\u6709\u6743\u8bfb\u53d6\u8be5\u6587\u4ef6\u3002\u8be6\u7ec6\u4fe1\u606f: %s
ERR_LDAPCOMPARE_FILENAME_AND_DNS=\u5df2\u63d0\u4f9b\u7528\u4e8e\u6bd4\u8f83\u64cd\u4f5c\u7684\u6761\u76ee DN \u548c\u6587\u4ef6\u540d\u3002\u8fd9\u4e9b\u53c2\u6570\u4e0d\u517c\u5bb9
+INFO_BASE64_TOOL_DESCRIPTION=\u6b64\u5b9e\u7528\u7a0b\u5e8f\u53ef\u7528\u4e8e\u4f7f\u7528 base64 \u5bf9\u4fe1\u606f\u8fdb\u884c\u7f16\u7801\u548c\u89e3\u7801
+INFO_BASE64_DECODE_DESCRIPTION=\u5c06 base64 \u7f16\u7801\u4fe1\u606f\u89e3\u7801\u4e3a\u539f\u59cb\u6570\u636e
+INFO_BASE64_ENCODE_DESCRIPTION=\u4f7f\u7528 base64 \u5bf9\u539f\u59cb\u6570\u636e\u8fdb\u884c\u7f16\u7801
+INFO_BASE64_ENCODED_DATA_DESCRIPTION=\u8981\u89e3\u7801\u7684 base64 \u7f16\u7801\u6570\u636e
+INFO_BASE64_ENCODED_FILE_DESCRIPTION=\u5305\u542b\u8981\u89e3\u7801\u7684 base64 \u7f16\u7801\u6570\u636e\u7684\u6587\u4ef6\u7684\u8def\u5f84
+INFO_BASE64_RAW_DATA_DESCRIPTION=\u8981\u8fdb\u884c base64 \u7f16\u7801\u7684\u539f\u59cb\u6570\u636e
+INFO_BASE64_RAW_FILE_DESCRIPTION=\u5305\u542b\u8981\u8fdb\u884c base64 \u7f16\u7801\u7684\u539f\u59cb\u6570\u636e\u7684\u6587\u4ef6\u7684\u8def\u5f84
+INFO_BASE64_TO_ENCODED_FILE_DESCRIPTION=\u5e94\u5728\u5176\u4e2d\u5199\u5165 base64 \u7f16\u7801\u6570\u636e\u7684\u6587\u4ef6\u7684\u8def\u5f84
+INFO_BASE64_TO_RAW_FILE_DESCRIPTION=\u5e94\u5728\u5176\u4e2d\u5199\u5165\u539f\u59cb base64 \u89e3\u7801\u6570\u636e\u7684\u6587\u4ef6\u7684\u8def\u5f84
+ERR_BASE64_CANNOT_READ_RAW_DATA=\u5728\u5c1d\u8bd5\u8bfb\u53d6\u8981\u89e3\u7801\u7684\u539f\u59cb\u6570\u636e\u65f6\u51fa\u73b0\u9519\u8bef: %s
+ERR_BASE64_CANNOT_WRITE_ENCODED_DATA=\u5728\u5c1d\u8bd5\u5199\u5165\u7f16\u7801\u7684\u6570\u636e\u65f6\u51fa\u73b0\u9519\u8bef: %s
+ERR_BASE64_CANNOT_READ_ENCODED_DATA=\u5728\u5c1d\u8bd5\u8bfb\u53d6 base64 \u7f16\u7801\u7684\u6570\u636e\u65f6\u51fa\u73b0\u9519\u8bef: %s
+ERR_BASE64_CANNOT_WRITE_RAW_DATA=\u5728\u5c1d\u8bd5\u5199\u5165\u89e3\u7801\u7684\u6570\u636e\u65f6\u51fa\u73b0\u9519\u8bef: %s
+ERR_BASE64_UNKNOWN_SUBCOMMAND=\u672a\u77e5\u5b50\u547d\u4ee4 %s
diff --git a/opendj-ldap-toolkit/src/main/resources/com/forgerock/opendj/ldap/tools/tools_zh_TW.properties b/opendj-ldap-toolkit/src/main/resources/com/forgerock/opendj/ldap/tools/tools_zh_TW.properties
index 29904dc..e75c752 100644
--- a/opendj-ldap-toolkit/src/main/resources/com/forgerock/opendj/ldap/tools/tools_zh_TW.properties
+++ b/opendj-ldap-toolkit/src/main/resources/com/forgerock/opendj/ldap/tools/tools_zh_TW.properties
@@ -106,3 +106,17 @@
INFO_LDAPSEARCH_VLV_CONTENT_COUNT=# VLV \u5167\u5bb9\u8a08\u6578: %d
WARN_LDAPSEARCH_VLV_ERROR=# \u865b\u64ec\u6e05\u55ae\u6aa2\u8996\u8655\u7406\u5931\u6557: %s
ERR_EFFECTIVERIGHTS_INVALID_AUTHZID=geteffectiverights \u63a7\u5236\u5167\u542b\u7684\u6388\u6b0a ID\u300c%s\u300d\u7121\u6548\uff0c\u56e0\u70ba\u5b83\u4e26\u975e\u4ee5\u300cdn:\u300d\u958b\u982d\u4ee5\u8868\u793a\u4f7f\u7528\u8005 DN
+INFO_BASE64_TOOL_DESCRIPTION=\u6b64\u516c\u7528\u7a0b\u5f0f\u53ef\u7528\u65bc\u4f7f\u7528 base64 \u5c07\u8cc7\u8a0a\u7de8\u78bc\u53ca\u89e3\u78bc
+INFO_BASE64_DECODE_DESCRIPTION=\u5c07 base64 \u7de8\u78bc\u7684\u8cc7\u8a0a\u89e3\u78bc\u70ba\u539f\u59cb\u8cc7\u6599
+INFO_BASE64_ENCODE_DESCRIPTION=\u4f7f\u7528 base64 \u7de8\u78bc\u539f\u59cb\u8cc7\u6599
+INFO_BASE64_ENCODED_DATA_DESCRIPTION=\u8981\u89e3\u78bc\u7684 base64 \u7de8\u78bc\u8cc7\u6599
+INFO_BASE64_ENCODED_FILE_DESCRIPTION=\u6a94\u6848\u7684\u8def\u5f91\uff0c\u8a72\u6a94\u6848\u5305\u542b\u8981\u89e3\u78bc\u7684 base64 \u7de8\u78bc\u8cc7\u6599
+INFO_BASE64_RAW_DATA_DESCRIPTION=\u8981\u4ee5 base64 \u7de8\u78bc\u7684\u539f\u59cb\u8cc7\u6599
+INFO_BASE64_RAW_FILE_DESCRIPTION=\u6a94\u6848\u7684\u8def\u5f91\uff0c\u8a72\u6a94\u6848\u5305\u542b\u8981\u4ee5 base64 \u7de8\u78bc\u7684\u539f\u59cb\u8cc7\u6599
+INFO_BASE64_TO_ENCODED_FILE_DESCRIPTION=\u61c9\u5beb\u5165 base64 \u7de8\u78bc\u8cc7\u6599\u4e4b\u6a94\u6848\u7684\u8def\u5f91
+INFO_BASE64_TO_RAW_FILE_DESCRIPTION=\u61c9\u5beb\u5165\u539f\u59cb base64 \u89e3\u78bc\u8cc7\u6599\u4e4b\u6a94\u6848\u7684\u8def\u5f91
+ERR_BASE64_CANNOT_READ_RAW_DATA=\u5617\u8a66\u8b80\u53d6\u8981\u7de8\u78bc\u7684\u539f\u59cb\u8cc7\u6599\u6642\u767c\u751f\u932f\u8aa4: %s
+ERR_BASE64_CANNOT_WRITE_ENCODED_DATA=\u5617\u8a66\u5beb\u5165\u5df2\u7de8\u78bc\u7684\u8cc7\u6599\u6642\u767c\u751f\u932f\u8aa4: %s
+ERR_BASE64_CANNOT_READ_ENCODED_DATA=\u5617\u8a66\u8b80\u53d6 base64 \u7de8\u78bc\u7684\u8cc7\u6599\u6642\u767c\u751f\u932f\u8aa4: %s
+ERR_BASE64_CANNOT_WRITE_RAW_DATA=\u5617\u8a66\u5beb\u5165\u5df2\u89e3\u78bc\u7684\u8cc7\u6599\u6642\u767c\u751f\u932f\u8aa4: %s
+ERR_BASE64_UNKNOWN_SUBCOMMAND=\u4e0d\u660e\u7684\u5b50\u6307\u4ee4 %s
--
Gitblit v1.10.0