Skip to content

Commit

Permalink
Fixes (#501)
Browse files Browse the repository at this point in the history
* i18n ru improve

Signed-off-by: Sergey Ponomarev <[email protected]>

* Use Base64.toBase64String()

Signed-off-by: Sergey Ponomarev <[email protected]>

* Use .append(char)

Signed-off-by: Sergey Ponomarev <[email protected]>

* i18n ru: welcome icons

Signed-off-by: Sergey Ponomarev <[email protected]>

* populateSigAlgs() handle CryptoException

Signed-off-by: Sergey Ponomarev <[email protected]>

---------

Signed-off-by: Sergey Ponomarev <[email protected]>
  • Loading branch information
stokito authored Jun 16, 2024
1 parent 448a88a commit fe4a278
Show file tree
Hide file tree
Showing 12 changed files with 33 additions and 37 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -185,7 +185,7 @@ public static String getCsrEncodedDerPem(PKCS10CertificationRequest csr) throws
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ASN1OutputStream deros = ASN1OutputStream.create(baos, ASN1Encoding.DER);
deros.writeObject(csr.toASN1Structure().toASN1Primitive());
String tmp = new String(Base64.encode(baos.toByteArray()));
String tmp = Base64.toBase64String(baos.toByteArray());

// Header
String csrStr = BEGIN_CSR_FORM_1 + "\n";
Expand Down
2 changes: 1 addition & 1 deletion kse/src/main/java/org/kse/crypto/csr/spkac/Spkac.java
Original file line number Diff line number Diff line change
Expand Up @@ -341,7 +341,7 @@ public void output(OutputStream os) throws IOException, SpkacException {
osw = new OutputStreamWriter(os);

outputProperty(osw, SPKAC_PROPERTY,
new String(Base64.encode(createSignedPublicKeyAndChallenge().getEncoded(ASN1Encoding.DER))));
Base64.toBase64String(createSignedPublicKeyAndChallenge().getEncoded(ASN1Encoding.DER)));
outputProperty(osw, CN_PROPERTY, subject.getCN());
outputProperty(osw, OU_PROPERTY, subject.getOU());
outputProperty(osw, O_PROPERTY, subject.getO());
Expand Down
10 changes: 4 additions & 6 deletions kse/src/main/java/org/kse/crypto/signing/JarSigner.java
Original file line number Diff line number Diff line change
Expand Up @@ -227,8 +227,7 @@ public static void sign(File jarFile, File signedJarFile, PrivateKey privateKey,

// Get the digest of manifest entries created above
byte[] mdSf = DigestUtil.getMessageDigest(manifestEntry.getBytes(), digestType);
byte[] mdSf64 = Base64.encode(mdSf);
String mdSf64Str = new String(mdSf64);
String mdSf64Str = Base64.toBase64String(mdSf);

// Write this digest as entries in signature file
sbSf.append(createAttributeText(NAME_ATTR, jarEntry.getName()));
Expand All @@ -245,13 +244,13 @@ public static void sign(File jarFile, File signedJarFile, PrivateKey privateKey,
byte[] manifest = sbManifest.toString().getBytes();

byte[] digestMf = DigestUtil.getMessageDigest(manifest, digestType);
String digestMfStr = new String(Base64.encode(digestMf));
String digestMfStr = Base64.toBase64String(digestMf);

// Get base 64 encoded digest of manifest's main attributes for inclusion in signature file
byte[] manifestMainAttrsBytes = manifestMainAttrs.getBytes();

byte[] digestMfMainAttrs = DigestUtil.getMessageDigest(manifestMainAttrsBytes, digestType);
String digestMfMainAttrsStr = new String(Base64.encode(digestMfMainAttrs));
String digestMfMainAttrsStr = Base64.toBase64String(digestMfMainAttrs);

// Write out Manifest Digest, Created By and Signature Version to start of signature file
sbSf.insert(0, CRLF);
Expand Down Expand Up @@ -436,8 +435,7 @@ private static String getDigestManifestAttrs(JarFile jar, JarEntry jarEntry, Dig

// Get the digest of content in Base64
byte[] md = DigestUtil.getMessageDigest(jis, digestType);
byte[] md64 = Base64.encode(md);
String md64Str = new String(md64);
String md64Str = Base64.toBase64String(md);

// Write manifest entries for JARs digest
String sbManifestEntry = createAttributeText(NAME_ATTR, jarEntry.getName()) +
Expand Down
4 changes: 2 additions & 2 deletions kse/src/main/java/org/kse/crypto/signing/MidletSigner.java
Original file line number Diff line number Diff line change
Expand Up @@ -130,7 +130,7 @@ public static void sign(File jadFile, File outputJadFile, File jarFile, RSAPriva
X509Certificate certificate = certificateChain[i];
String base64Cert = null;
try {
base64Cert = new String(Base64.encode(certificate.getEncoded()));
base64Cert = Base64.toBase64String(certificate.getEncoded());
} catch (CertificateEncodingException ex) {
throw new CryptoException(res.getString("Base64CertificateFailed.exception.message"), ex);
}
Expand All @@ -141,7 +141,7 @@ public static void sign(File jadFile, File outputJadFile, File jarFile, RSAPriva

// Get signed Base 64 SHA-1 digest of JAR file as attr
byte[] signedJarDigest = signJarDigest(jarFile, privateKey);
String base64SignedJarDigest = new String(Base64.encode(signedJarDigest));
String base64SignedJarDigest = Base64.toBase64String(signedJarDigest);
newJadProperties.put(MIDLET_JAR_RSA_SHA1_ATTR, base64SignedJarDigest);

// Sort properties alphabetically
Expand Down
11 changes: 7 additions & 4 deletions kse/src/main/java/org/kse/gui/dialogs/DialogHelper.java
Original file line number Diff line number Diff line change
Expand Up @@ -54,10 +54,9 @@ private DialogHelper() {
* @param keyPairType
* @param privateKey
* @param jcbSignatureAlgorithm
* @throws CryptoException
*/
public static void populateSigAlgs(KeyPairType keyPairType, PrivateKey privateKey,
JComboBox<SignatureType> jcbSignatureAlgorithm) throws CryptoException {
JComboBox<SignatureType> jcbSignatureAlgorithm) {

List<SignatureType> sigAlgs;

Expand All @@ -84,8 +83,12 @@ public static void populateSigAlgs(KeyPairType keyPairType, PrivateKey privateKe
break;
case RSA:
default:
KeyInfo keyInfo = KeyPairUtil.getKeyInfo(privateKey);
sigAlgs = SignatureType.rsaSignatureTypes(keyInfo.getSize());
try {
KeyInfo keyInfo = KeyPairUtil.getKeyInfo(privateKey);
sigAlgs = SignatureType.rsaSignatureTypes(keyInfo.getSize());
} catch (CryptoException e) {
sigAlgs = Collections.emptyList();
}
}

jcbSignatureAlgorithm.removeAllItems();
Expand Down
9 changes: 2 additions & 7 deletions kse/src/main/java/org/kse/gui/dialogs/sign/DSignJar.java
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,6 @@

import org.apache.commons.io.IOUtils;
import org.kse.KSE;
import org.kse.crypto.CryptoException;
import org.kse.crypto.digest.DigestType;
import org.kse.crypto.keypair.KeyPairType;
import org.kse.crypto.signing.JarSigner;
Expand Down Expand Up @@ -132,11 +131,8 @@ public class DSignJar extends JEscDialog {
* @param signPrivateKey Signing key pair's private key
* @param signKeyPairType Signing key pair's type
* @param signatureName Default signature name
* @throws CryptoException A crypto problem was encountered constructing the
* dialog
*/
public DSignJar(JFrame parent, PrivateKey signPrivateKey, KeyPairType signKeyPairType, String signatureName)
throws CryptoException {
public DSignJar(JFrame parent, PrivateKey signPrivateKey, KeyPairType signKeyPairType, String signatureName) {
super(parent, Dialog.ModalityType.DOCUMENT_MODAL);
this.signPrivateKey = signPrivateKey;
this.signKeyPairType = signKeyPairType;
Expand All @@ -148,9 +144,8 @@ public DSignJar(JFrame parent, PrivateKey signPrivateKey, KeyPairType signKeyPai
* Initializes the dialogue panel and associated elements
*
* @param signatureName String
* @throws CryptoException
*/
private void initComponents(String signatureName) throws CryptoException {
private void initComponents(String signatureName) {
jlSignDirectly = new JLabel(res.getString("DSignJar.jlSignDirectly.text"));
jrbSignDirectly = new JRadioButton("", true);
jrbSignDirectly.setToolTipText(res.getString("DSignJar.jrbSignDirectly.tooltip"));
Expand Down
8 changes: 4 additions & 4 deletions kse/src/main/java/org/kse/utilities/pem/PemUtil.java
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ public static String encode(PemInfo pemInfo) {
sbPem.append(PEM_BEGIN_MARKER);
sbPem.append(pemInfo.getType());
sbPem.append(PEM_FIVE_DASHES);
sbPem.append("\n");
sbPem.append('\n');

// Output any header attributes
PemAttributes attributes = pemInfo.getAttributes();
Expand All @@ -82,7 +82,7 @@ public static String encode(PemInfo pemInfo) {
}

// Output content
String base64 = new String(Base64.encode(pemInfo.getContent()));
String base64 = Base64.toBase64String(pemInfo.getContent());

// Limit line lengths
for (int i = 0; i < base64.length(); i += MAX_PRINTABLE_ENCODING_LINE_LENGTH) {
Expand All @@ -95,14 +95,14 @@ public static String encode(PemInfo pemInfo) {
}

sbPem.append(base64, i, i + lineLength);
sbPem.append("\n");
sbPem.append('\n');
}

// Output footer
sbPem.append(PEM_END_MARKER);
sbPem.append(pemInfo.getType());
sbPem.append(PEM_FIVE_DASHES);
sbPem.append("\n");
sbPem.append('\n');

return sbPem.toString();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ JPublicKeyFingerprint.jbViewPublicKeyFingerprint.tooltip=\u041F\u043E\u0441\u043
JPublicKeyFingerprint.jcbFingerprintAlg.tooltip=\u0410\u043B\u0433\u043E\u0440\u0438\u0442\u043C\u044B \u043E\u0442\u043F\u0435\u0447\u0430\u0442\u043A\u043E\u0432:\n1. RFC 5280 \u2014 \u043C\u0435\u0442\u043E\u0434 1 SubjectKeyIdentifier (SKI)\n2. RFC 5280 \u2014 \u043C\u0435\u0442\u043E\u0434 2 SubjectKeyIdentifier (SKI)\n3. SHA-1, \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u0430\u043D\u043D\u044B\u0439 \u043F\u043E ASN.1 \u0441\u0442\u0440\u0443\u043A\u0442\u0443\u0440\u0435 SubjectPublicKeyInfo (SPKI)\n4. SHA-256, \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u0430\u043D\u043D\u044B\u0439 \u043F\u043E ASN.1 \u0441\u0442\u0440\u0443\u043A\u0442\u0443\u0440\u0435 SubjectPublicKeyInfo (SPKI)
JPublicKeyFingerprint.jtfPublicKeyFingerprint.tooltip=\u041E\u0442\u043F\u0435\u0447\u0430\u0442\u043E\u043A \u043F\u0443\u0431\u043B\u0438\u0447\u043D\u043E\u0433\u043E \u043A\u043B\u044E\u0447\u0430
JDistinguishedName.jbClearDistinguishedName.tooltip=\u041E\u0447\u0438\u0441\u0442\u0438\u0442\u044C \u0438\u043C\u044F
JDistinguishedName.jbViewEditDistinguishedName.Edit.tooltip=\u0420\u0435\u0434\u0430\u043A\u0442\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0438\u043C\u044F
JDistinguishedName.jbViewEditDistinguishedName.Edit.tooltip=\u0418\u0437\u043C\u0435\u043D\u0438\u0442\u044C \u0438\u043C\u044F
JDistinguishedName.jbViewEditDistinguishedName.View.tooltip=\u041F\u043E\u0441\u043C\u043E\u0442\u0440\u0435\u0442\u044C \u0438\u043C\u044F
JValidityPeriod.jbApply.text=\u041F\u0440\u0438\u043C\u0435\u043D\u0438\u0442\u044C
JValidityPeriod.jcbType.days.text=\u0414\u043D\u0435\u0439
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ DCustomExtension.jbOK.text=OK
DCustomExtension.jtaEncodedHexValue.tooltip=\u0428\u0435\u0441\u0442\u043D\u0430\u0434\u0446\u0430\u0442\u0435\u0440\u0438\u0447\u043D\u0430\u044F \u043A\u043E\u0434\u0438\u0440\u043E\u0432\u043A\u0430 DER-\u043A\u043E\u0434\u0438\u0440\u043E\u0432\u0430\u043D\u043D\u043E\u0433\u043E ASN.1 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043D\u0438\u044F\n\u0431\u0435\u0437 \u0438\u043D\u043A\u0430\u043F\u0441\u0443\u043B\u0438\u0440\u0443\u044E\u0449\u0435\u0433\u043E \u0442\u0435\u0433\u0430 OCTET STRING \u0438 \u0431\u0430\u0439\u0442\u043E\u0432 \u0434\u043B\u0438\u043D\u044B
DExtendedKeyUsage.Title=\u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043D\u0438\u0435 \u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043D\u043D\u043E\u0433\u043E \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u043D\u0438\u044F \u043A\u043B\u044E\u0447\u0430 (EKU)
DExtendedKeyUsage.ValueReq.message=\u0414\u043E\u043B\u0436\u043D\u043E \u0431\u044B\u0442\u044C \u043E\u0442\u043C\u0435\u0447\u0435\u043D\u043E \u0445\u043E\u0442\u044F \u0431\u044B \u043E\u0434\u043D\u043E \u0438\u0437 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0439 \u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043D\u043D\u043E\u0433\u043E \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u043D\u0438\u044F \u043A\u043B\u044E\u0447\u0430.
DExtendedKeyUsage.jbAddEku.text=\u0420\u0435\u0434\u0430\u043A\u0442\u0438\u0440\u043E\u0432\u0430\u0442\u044C
DExtendedKeyUsage.jbAddEku.text=\u0418\u0437\u043C\u0435\u043D\u0438\u0442\u044C
DExtendedKeyUsage.jbCancel.text=\u041E\u0442\u043C\u0435\u043D\u0430
DExtendedKeyUsage.jbOK.text=OK
DExtendedKeyUsage.jcbAdobePDFSigning.text=\u041F\u043E\u0434\u043F\u0438\u0441\u0430\u043D\u0438\u0435 Adobe PDF
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ DSignJar.jcbDigestAlgorithm.tooltip=\u0410\u043B\u0433\u043E\u0440\u0438\u0442\u
DSignJar.jcbSignatureAlgorithm.tooltip=\u0410\u043B\u0433\u043E\u0440\u0438\u0442\u043C \u043F\u043E\u0434\u043F\u0438\u0441\u0438, \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u043C\u044B\u0439 \u0434\u043B\u044F \u043F\u043E\u0434\u043F\u0438\u0441\u0430\u043D\u0438\u044F JAR \u0444\u0430\u0439\u043B\u0430
DSignJar.jcbTimestampServerUrl.tooltip=\u041C\u0435\u0441\u0442\u043E\u043D\u0430\u0445\u043E\u0436\u0434\u0435\u043D\u0438\u0435 \u041E\u0440\u0433\u0430\u043D\u0430 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u0432\u0440\u0435\u043C\u0435\u043D\u0438 (Time Stamping Authority, TSA)
DSignJar.jlAddTimestamp.text=\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u043E\u0442\u043C\u0435\u0442\u043A\u0443 \u0432\u0440\u0435\u043C\u0435\u043D\u0438:
DSignJar.jlDigestAlgorithm.text=\u0410\u043B\u0433\u043E\u0440\u0438\u0442\u043C \u0434\u0430\u0439\u0434\u0436\u0435\u0441\u0442\u0430 \u043F\u043E\u0434\u043F\u0438\u0441\u0438: {0}
DSignJar.jlDigestAlgorithm.text=\u0410\u043B\u0433\u043E\u0440\u0438\u0442\u043C \u0434\u0430\u0439\u0434\u0436\u0435\u0441\u0442\u0430 \u043F\u043E\u0434\u043F\u0438\u0441\u0438:
DSignJar.jlFileCount.text=\u0412\u044B\u0431\u0440\u0430\u043D\u043E {0} \u0444\u0430\u0439\u043B\u043E\u0432.
DSignJar.jlFiles.text=\u0424\u0430\u0439\u043B\u044B
DSignJar.jlInputJar.text=\u0412\u0445\u043E\u0434\u043D\u044B\u0435 JAR \u0444\u0430\u0439\u043B(\u044B):
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
JQuickStartPane.jqslHeading.text=<html><center>KeyStore Explorer<br>\u0411\u044B\u0441\u0442\u0440\u044B\u0439 \u0441\u0442\u0430\u0440\u0442</center></html>
JQuickStartPane.jqsbNewKeyStore.text=<html><center>\u0421\u043E\u0437\u0434\u0430\u0442\u044C<br>\u043D\u043E\u0432\u043E\u0435 \u0445\u0440\u0430\u043D\u0438\u043B\u0438\u0449\u0435 \u043A\u043B\u044E\u0447\u0435\u0439.</center></html>
JQuickStartPane.jqsbOpenKeyStore.text=<html><center>\u041E\u0442\u043A\u0440\u044B\u0442\u044C \u0445\u0440\u0430\u043D\u0438\u043B\u0438\u0449\u0435 \u043A\u043B\u044E\u0447\u0435\u0439<br>.</center></html>
JQuickStartPane.jqsbOpenDefaultKeyStore.text=<html><center>\u041E\u0442\u043A\u0440\u044B\u0442\u044C \u0445\u0440\u0430\u043D\u0438\u043B\u0438\u0449\u0435 \u043A\u043B\u044E\u0447\u0435\u0439 \u043F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E<br>.</center></html>
JQuickStartPane.jqsbOpenCaCertificatesKeyStore.text=<html><center>\u041E\u0442\u043A\u0440\u044B\u0442\u044C \u0445\u0440\u0430\u043D\u0438\u043B\u0438\u0449\u0435 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043A\u0430\u0442\u043E\u0432 \u0423\u0426<br>.</center></html>
JQuickStartPane.jqsbExamineCertificate.text=<html><center>\u041F\u0440\u043E\u0432\u0435\u0440\u0438\u0442\u044C \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043A\u0430\u0442<br></center></html>
JQuickStartPane.jqsbHelp.text=<html><center>\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u0441\u0442\u0440\u0430\u043D\u0438\u0446\u044B \u0441\u043F\u0440\u0430\u0432\u043A\u0438<br></center></html>
JQuickStartPane.jqslHeading.text=<html><center>KeyStore Explorer<br/>\u0411\u044B\u0441\u0442\u0440\u044B\u0439 \u0441\u0442\u0430\u0440\u0442</center></html>
JQuickStartPane.jqsbNewKeyStore.text=<html><center>\u0421\u043E\u0437\u0434\u0430\u0442\u044C \u043D\u043E\u0432\u043E\u0435<br/>\u0445\u0440\u0430\u043D\u0438\u043B\u0438\u0449\u0435 \u043A\u043B\u044E\u0447\u0435\u0439</center></html>
JQuickStartPane.jqsbOpenKeyStore.text=<html><center>\u041E\u0442\u043A\u0440\u044B\u0442\u044C<br/>\u0445\u0440\u0430\u043D\u0438\u043B\u0438\u0449\u0435 \u043A\u043B\u044E\u0447\u0435\u0439</center></html>
JQuickStartPane.jqsbOpenDefaultKeyStore.text=<html><center>\u041E\u0442\u043A\u0440\u044B\u0442\u044C \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C\u0441\u043A\u043E\u0435<br/>\u0445\u0440\u0430\u043D\u0438\u043B\u0438\u0449\u0435 \u043A\u043B\u044E\u0447\u0435\u0439</center></html>
JQuickStartPane.jqsbOpenCaCertificatesKeyStore.text=<html><center>\u041E\u0442\u043A\u0440\u044B\u0442\u044C \u0445\u0440\u0430\u043D\u0438\u043B\u0438\u0449\u0435<br/>\u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043A\u0430\u0442\u043E\u0432 \u0423\u0426</center></html>
JQuickStartPane.jqsbExamineCertificate.text=<html><center>\u041F\u0440\u043E\u0432\u0435\u0440\u0438\u0442\u044C <br/>\u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043A\u0430\u0442</center></html>
JQuickStartPane.jqsbHelp.text=<html><center>\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C <br/>\u0441\u0442\u0440\u0430\u043D\u0438\u0446\u044B \u0441\u043F\u0440\u0430\u0432\u043A\u0438</center></html>
4 changes: 2 additions & 2 deletions kse/src/main/resources/org/kse/gui/resources_ru.properties
Original file line number Diff line number Diff line change
Expand Up @@ -42,15 +42,15 @@ KseFrame.jcbmiShowHideToolBar.mnemonic=t
KseFrame.jmChangeType.mnemonic=c
KseFrame.jmChangeType.text=\u0418\u0437\u043C\u0435\u043D\u0438\u0442\u044C \u0442\u0438\u043F \u0445\u0440\u0430\u043D\u0438\u043B\u0438\u0449\u0430 \u043A\u043B\u044E\u0447\u0435\u0439
KseFrame.jmEdit.mnemonic=e
KseFrame.jmEdit.text=\u0420\u0435\u0434\u0430\u043A\u0442\u0438\u0440\u043E\u0432\u0430\u0442\u044C
KseFrame.jmEdit.text=\u041F\u0440\u0430\u0432\u043A\u0430
KseFrame.jmExamine.mnemonic=x
KseFrame.jmExamine.text=\u041F\u0440\u043E\u0432\u0435\u0440\u0438\u0442\u044C
KseFrame.jmFile.mnemonic=f
KseFrame.jmFile.text=\u0424\u0430\u0439\u043B
KseFrame.jmHelp.mnemonic=h
KseFrame.jmHelp.text=\u041F\u043E\u043C\u043E\u0449\u044C
KseFrame.jmKeyPairDetails.text=\u041F\u043E\u0434\u0440\u043E\u0431\u043D\u043E\u0441\u0442\u0438
KseFrame.jmKeyPairEditCertChain.text=\u0420\u0435\u0434\u0430\u043A\u0442\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0446\u0435\u043F\u043E\u0447\u043A\u0443 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043A\u0430\u0442\u043E\u0432
KseFrame.jmKeyPairEditCertChain.text=\u0418\u0437\u043C\u0435\u043D\u0438\u0442\u044C \u0446\u0435\u043F\u043E\u0447\u043A\u0443 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043A\u0430\u0442\u043E\u0432
KseFrame.jmKeyPairExport.text=\u042D\u043A\u0441\u043F\u043E\u0440\u0442\u0438\u0440\u043E\u0432\u0430\u0442\u044C
KseFrame.jmKeyPairImportCaReply.text=\u0418\u043C\u043F\u043E\u0440\u0442 \u043E\u0442\u0432\u0435\u0442\u0430 \u0423\u0426
KseFrame.jmKeyPairSign.text=\u041F\u043E\u0434\u043F\u0438\u0441\u0430\u0442\u044C
Expand Down

0 comments on commit fe4a278

Please sign in to comment.