mirror of
https://github.com/the-djmaze/snappymail.git
synced 2026-08-30 04:29:21 +03:00
S/MIME allow changing private key passphrase due to #1505
This commit is contained in:
parent
570c7e1a1a
commit
b98b21c1c6
44 changed files with 198 additions and 21 deletions
|
|
@ -251,14 +251,14 @@ export class AppUser extends AbstractApp {
|
|||
}
|
||||
}
|
||||
|
||||
AskPopupView.password = function(sAskDesc, btnText) {
|
||||
AskPopupView.password = function(sAskDesc, btnText, ask) {
|
||||
return new Promise(resolve => {
|
||||
this.showModal([
|
||||
sAskDesc,
|
||||
view => resolve({password:view.passphrase(), remember:view.remember()}),
|
||||
() => resolve(null),
|
||||
true,
|
||||
5,
|
||||
ask || 5,
|
||||
btnText
|
||||
]);
|
||||
});
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@ export class IdentityModel extends AbstractModel {
|
|||
|
||||
addComputablesTo(this, {
|
||||
smimeKeyEncrypted: () => this.smimeKey().includes('-----BEGIN ENCRYPTED PRIVATE KEY-----'),
|
||||
smimeKeyValid: () => /^-----BEGIN (ENCRYPTED )?PRIVATE KEY-----/.test(this.smimeKey()),
|
||||
smimeKeyValid: () => /^-----BEGIN (ENCRYPTED |RSA )?PRIVATE KEY-----/.test(this.smimeKey()),
|
||||
smimeCertificateValid: () => /^-----BEGIN CERTIFICATE-----/.test(this.smimeCertificate())
|
||||
});
|
||||
}
|
||||
|
|
|
|||
|
|
@ -42,26 +42,54 @@ export class IdentityPopupView extends AbstractViewPopup {
|
|||
this.defaultOptionsAfterRender = defaultOptionsAfterRender;
|
||||
|
||||
this.createSelfSigned = this.createSelfSigned.bind(this);
|
||||
this.setSMimeKeyPass = this.setSMimeKeyPass.bind(this);
|
||||
}
|
||||
|
||||
async createSelfSigned() {
|
||||
const identity = this.identity(),
|
||||
pass = await AskPopupView.password('', 'CRYPTO/CREATE_SELF_SIGNED');
|
||||
if (pass) {
|
||||
Remote.request('SMimeCreateCertificate', (iError, oData) => {
|
||||
if (oData.Result.x509) {
|
||||
identity.smimeKey(oData.Result.pkey);
|
||||
identity.smimeCertificate(oData.Result.x509);
|
||||
} else {
|
||||
this.submitError(oData.ErrorMessage);
|
||||
}
|
||||
}, {
|
||||
name: identity.name(),
|
||||
email: identity.email(),
|
||||
privateKey: identity.smimeKey(),
|
||||
passphrase: pass.password
|
||||
});
|
||||
createSelfSigned() {
|
||||
AskPopupView.password('', 'CRYPTO/CREATE_SELF_SIGNED').then(pass => {
|
||||
if (pass) {
|
||||
const identity = this.identity();
|
||||
Remote.request('SMimeCreateCertificate', (iError, oData) => {
|
||||
if (oData.Result.x509) {
|
||||
identity.smimeKey(oData.Result.pkey);
|
||||
identity.smimeCertificate(oData.Result.x509);
|
||||
} else {
|
||||
this.submitError(oData.ErrorMessage);
|
||||
}
|
||||
}, {
|
||||
name: identity.name(),
|
||||
email: identity.email(),
|
||||
privateKey: identity.smimeKey(),
|
||||
passphrase: pass.password
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
async setSMimeKeyPass() {
|
||||
const identity = this.identity();
|
||||
let old = null
|
||||
if (identity.smimeKeyEncrypted()) {
|
||||
old = await AskPopupView.password(i18n('CRYPTO/CURRENT_PASS'), 'CRYPTO/DECRYPT', 1);
|
||||
if (!old) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
AskPopupView.password(i18n('CRYPTO/NEW_PASS'), 'GLOBAL/SAVE', 1).then(pass => {
|
||||
if (pass) {
|
||||
Remote.request('SMimeExportPrivateKey', (iError, oData) => {
|
||||
if (oData.Result) {
|
||||
identity.smimeKey(oData.Result);
|
||||
} else {
|
||||
this.submitError(oData.ErrorMessage);
|
||||
}
|
||||
}, {
|
||||
privateKey: identity.smimeKey(),
|
||||
oldPassphrase: old?.password,
|
||||
newPassphrase: pass.password
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
submitForm(form) {
|
||||
|
|
|
|||
|
|
@ -68,6 +68,20 @@ trait SMime
|
|||
return $this->DefaultResponse($result ?: false);
|
||||
}
|
||||
|
||||
public function DoSMimeExportPrivateKey() : array
|
||||
{
|
||||
$SMIME = $this->SMIME();
|
||||
$SMIME->setPrivateKey(
|
||||
$this->GetActionParam('privateKey'),
|
||||
new \SnappyMail\SensitiveString($this->GetActionParam('oldPassphrase', ''))
|
||||
);
|
||||
$result = $SMIME->exportPrivateKey(
|
||||
new \SnappyMail\SensitiveString($this->GetActionParam('newPassphrase', ''))
|
||||
);
|
||||
|
||||
return $this->DefaultResponse($result);
|
||||
}
|
||||
|
||||
public function DoSMimeDecryptMessage() : array
|
||||
{
|
||||
$sFolderName = $this->GetActionParam('folder', '');
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ class OpenSSL
|
|||
private string $homedir;
|
||||
private array $headers = [];
|
||||
private int $flags = 0;
|
||||
private int $cipher_algo = \OPENSSL_CIPHER_AES_128_CBC;
|
||||
private int $cipher_algo = \OPENSSL_CIPHER_AES_128_CBC; // \OPENSSL_CIPHER_AES_256_CBC
|
||||
private ?string $untrusted_certificates_filename = null;
|
||||
|
||||
// Used for sign and decrypt
|
||||
|
|
@ -144,6 +144,22 @@ class OpenSSL
|
|||
}
|
||||
}
|
||||
|
||||
public function exportPrivateKey(?\SnappyMail\SensitiveString $passphrase = null): string
|
||||
{
|
||||
if (!$this->privateKey) {
|
||||
throw new \RuntimeException('OpenSSL exportPrivateKey: key not loaded');
|
||||
}
|
||||
$options = [
|
||||
'encrypt_key' => true,
|
||||
'encrypt_key_cipher' => \OPENSSL_CIPHER_AES_256_CBC
|
||||
];
|
||||
$output = '';
|
||||
if (!\openssl_pkey_export($this->privateKey, $output, $passphrase/*, $options*/)) {
|
||||
throw new \RuntimeException('OpenSSL exportPrivateKey: ' . \openssl_error_string());
|
||||
}
|
||||
return $output;
|
||||
}
|
||||
|
||||
/*
|
||||
public function asn1parse(/*string|Temporary* / $input) : ?string
|
||||
{
|
||||
|
|
|
|||
|
|
@ -285,6 +285,9 @@
|
|||
"CREATE_SELF_SIGNED": "Create self-signed",
|
||||
"VALID_UNTIL": "Valid until",
|
||||
"PRIVATE_KEY": "Private key",
|
||||
"CHANGE_PASS": "Change passphrase",
|
||||
"CURRENT_PASS": "Current passphrase",
|
||||
"NEW_PASS": "New passphrase",
|
||||
"ASK_CRYPTKEY_PASS": "Your login passphrase has changed. Please fill in your old login password to decrypt data"
|
||||
},
|
||||
"OPENPGP": {
|
||||
|
|
|
|||
|
|
@ -285,6 +285,9 @@
|
|||
"CREATE_SELF_SIGNED": "Create self-signed",
|
||||
"VALID_UNTIL": "Valid until",
|
||||
"PRIVATE_KEY": "Private key",
|
||||
"CHANGE_PASS": "Change passphrase",
|
||||
"CURRENT_PASS": "Current passphrase",
|
||||
"NEW_PASS": "New passphrase",
|
||||
"ASK_CRYPTKEY_PASS": "Your login passphrase has changed. Please fill in your old login password to decrypt data"
|
||||
},
|
||||
"OPENPGP": {
|
||||
|
|
|
|||
|
|
@ -285,6 +285,9 @@
|
|||
"CREATE_SELF_SIGNED": "Create self-signed",
|
||||
"VALID_UNTIL": "Valid until",
|
||||
"PRIVATE_KEY": "Private key",
|
||||
"CHANGE_PASS": "Change passphrase",
|
||||
"CURRENT_PASS": "Current passphrase",
|
||||
"NEW_PASS": "New passphrase",
|
||||
"ASK_CRYPTKEY_PASS": "Your login passphrase has changed. Please fill in your old login password to decrypt data"
|
||||
},
|
||||
"OPENPGP": {
|
||||
|
|
|
|||
|
|
@ -285,6 +285,9 @@
|
|||
"CREATE_SELF_SIGNED": "Create self-signed",
|
||||
"VALID_UNTIL": "Valid until",
|
||||
"PRIVATE_KEY": "Private key",
|
||||
"CHANGE_PASS": "Change passphrase",
|
||||
"CURRENT_PASS": "Current passphrase",
|
||||
"NEW_PASS": "New passphrase",
|
||||
"ASK_CRYPTKEY_PASS": "Your login passphrase has changed. Please fill in your old login password to decrypt data"
|
||||
},
|
||||
"OPENPGP": {
|
||||
|
|
|
|||
|
|
@ -285,6 +285,9 @@
|
|||
"CREATE_SELF_SIGNED": "Create self-signed",
|
||||
"VALID_UNTIL": "Valid until",
|
||||
"PRIVATE_KEY": "Private key",
|
||||
"CHANGE_PASS": "Change passphrase",
|
||||
"CURRENT_PASS": "Current passphrase",
|
||||
"NEW_PASS": "New passphrase",
|
||||
"ASK_CRYPTKEY_PASS": "Your login passphrase has changed. Please fill in your old login password to decrypt data"
|
||||
},
|
||||
"OPENPGP": {
|
||||
|
|
|
|||
|
|
@ -285,6 +285,9 @@
|
|||
"CREATE_SELF_SIGNED": "Create self-signed",
|
||||
"VALID_UNTIL": "Valid until",
|
||||
"PRIVATE_KEY": "Private key",
|
||||
"CHANGE_PASS": "Change passphrase",
|
||||
"CURRENT_PASS": "Current passphrase",
|
||||
"NEW_PASS": "New passphrase",
|
||||
"ASK_CRYPTKEY_PASS": "Your login passphrase has changed. Please fill in your old login password to decrypt data"
|
||||
},
|
||||
"OPENPGP": {
|
||||
|
|
|
|||
|
|
@ -285,6 +285,9 @@
|
|||
"CREATE_SELF_SIGNED": "Create self-signed",
|
||||
"VALID_UNTIL": "Valid until",
|
||||
"PRIVATE_KEY": "Private key",
|
||||
"CHANGE_PASS": "Change passphrase",
|
||||
"CURRENT_PASS": "Current passphrase",
|
||||
"NEW_PASS": "New passphrase",
|
||||
"ASK_CRYPTKEY_PASS": "Your login passphrase has changed. Please fill in your old login password to decrypt data"
|
||||
},
|
||||
"OPENPGP": {
|
||||
|
|
|
|||
|
|
@ -285,6 +285,9 @@
|
|||
"CREATE_SELF_SIGNED": "Create self-signed",
|
||||
"VALID_UNTIL": "Valid until",
|
||||
"PRIVATE_KEY": "Private key",
|
||||
"CHANGE_PASS": "Change passphrase",
|
||||
"CURRENT_PASS": "Current passphrase",
|
||||
"NEW_PASS": "New passphrase",
|
||||
"ASK_CRYPTKEY_PASS": "Your login passphrase has changed. Please fill in your old login password to decrypt data"
|
||||
},
|
||||
"OPENPGP": {
|
||||
|
|
|
|||
|
|
@ -285,6 +285,9 @@
|
|||
"CREATE_SELF_SIGNED": "Create self-signed",
|
||||
"VALID_UNTIL": "Valid until",
|
||||
"PRIVATE_KEY": "Private key",
|
||||
"CHANGE_PASS": "Change passphrase",
|
||||
"CURRENT_PASS": "Current passphrase",
|
||||
"NEW_PASS": "New passphrase",
|
||||
"ASK_CRYPTKEY_PASS": "Your login passphrase has changed. Please fill in your old login password to decrypt data"
|
||||
},
|
||||
"OPENPGP": {
|
||||
|
|
|
|||
|
|
@ -285,6 +285,9 @@
|
|||
"CREATE_SELF_SIGNED": "Create self-signed",
|
||||
"VALID_UNTIL": "Valid until",
|
||||
"PRIVATE_KEY": "Private key",
|
||||
"CHANGE_PASS": "Change passphrase",
|
||||
"CURRENT_PASS": "Current passphrase",
|
||||
"NEW_PASS": "New passphrase",
|
||||
"ASK_CRYPTKEY_PASS": "Your login passphrase has changed. Please fill in your old login password to decrypt data"
|
||||
},
|
||||
"OPENPGP": {
|
||||
|
|
|
|||
|
|
@ -285,6 +285,9 @@
|
|||
"CREATE_SELF_SIGNED": "Create self-signed",
|
||||
"VALID_UNTIL": "Valid until",
|
||||
"PRIVATE_KEY": "Private key",
|
||||
"CHANGE_PASS": "Change passphrase",
|
||||
"CURRENT_PASS": "Current passphrase",
|
||||
"NEW_PASS": "New passphrase",
|
||||
"ASK_CRYPTKEY_PASS": "Your login passphrase has changed. Please fill in your old login password to decrypt data"
|
||||
},
|
||||
"OPENPGP": {
|
||||
|
|
|
|||
|
|
@ -285,6 +285,9 @@
|
|||
"CREATE_SELF_SIGNED": "Create self-signed",
|
||||
"VALID_UNTIL": "Valid until",
|
||||
"PRIVATE_KEY": "Private key",
|
||||
"CHANGE_PASS": "Change passphrase",
|
||||
"CURRENT_PASS": "Current passphrase",
|
||||
"NEW_PASS": "New passphrase",
|
||||
"ASK_CRYPTKEY_PASS": "Your login passphrase has changed. Please fill in your old login password to decrypt data"
|
||||
},
|
||||
"OPENPGP": {
|
||||
|
|
|
|||
|
|
@ -285,6 +285,9 @@
|
|||
"CREATE_SELF_SIGNED": "Create self-signed",
|
||||
"VALID_UNTIL": "Valid until",
|
||||
"PRIVATE_KEY": "Private key",
|
||||
"CHANGE_PASS": "Change passphrase",
|
||||
"CURRENT_PASS": "Current passphrase",
|
||||
"NEW_PASS": "New passphrase",
|
||||
"ASK_CRYPTKEY_PASS": "Your login passphrase has changed. Please fill in your old login password to decrypt data"
|
||||
},
|
||||
"OPENPGP": {
|
||||
|
|
|
|||
|
|
@ -285,6 +285,9 @@
|
|||
"CREATE_SELF_SIGNED": "Create self-signed",
|
||||
"VALID_UNTIL": "Valable jusque",
|
||||
"PRIVATE_KEY": "Clé privée",
|
||||
"CHANGE_PASS": "Change passphrase",
|
||||
"CURRENT_PASS": "Current passphrase",
|
||||
"NEW_PASS": "New passphrase",
|
||||
"ASK_CRYPTKEY_PASS": "Your login passphrase has changed. Please fill in your old login password to decrypt data"
|
||||
},
|
||||
"OPENPGP": {
|
||||
|
|
|
|||
|
|
@ -285,6 +285,9 @@
|
|||
"CREATE_SELF_SIGNED": "Create self-signed",
|
||||
"VALID_UNTIL": "Valid until",
|
||||
"PRIVATE_KEY": "Private key",
|
||||
"CHANGE_PASS": "Change passphrase",
|
||||
"CURRENT_PASS": "Current passphrase",
|
||||
"NEW_PASS": "New passphrase",
|
||||
"ASK_CRYPTKEY_PASS": "Your login passphrase has changed. Please fill in your old login password to decrypt data"
|
||||
},
|
||||
"OPENPGP": {
|
||||
|
|
|
|||
|
|
@ -285,6 +285,9 @@
|
|||
"CREATE_SELF_SIGNED": "Create self-signed",
|
||||
"VALID_UNTIL": "Valid until",
|
||||
"PRIVATE_KEY": "Private key",
|
||||
"CHANGE_PASS": "Change passphrase",
|
||||
"CURRENT_PASS": "Current passphrase",
|
||||
"NEW_PASS": "New passphrase",
|
||||
"ASK_CRYPTKEY_PASS": "Your login passphrase has changed. Please fill in your old login password to decrypt data"
|
||||
},
|
||||
"OPENPGP": {
|
||||
|
|
|
|||
|
|
@ -285,6 +285,9 @@
|
|||
"CREATE_SELF_SIGNED": "Create self-signed",
|
||||
"VALID_UNTIL": "Valid until",
|
||||
"PRIVATE_KEY": "Private key",
|
||||
"CHANGE_PASS": "Change passphrase",
|
||||
"CURRENT_PASS": "Current passphrase",
|
||||
"NEW_PASS": "New passphrase",
|
||||
"ASK_CRYPTKEY_PASS": "Your login passphrase has changed. Please fill in your old login password to decrypt data"
|
||||
},
|
||||
"OPENPGP": {
|
||||
|
|
|
|||
|
|
@ -285,6 +285,9 @@
|
|||
"CREATE_SELF_SIGNED": "Create self-signed",
|
||||
"VALID_UNTIL": "Valid until",
|
||||
"PRIVATE_KEY": "Private key",
|
||||
"CHANGE_PASS": "Change passphrase",
|
||||
"CURRENT_PASS": "Current passphrase",
|
||||
"NEW_PASS": "New passphrase",
|
||||
"ASK_CRYPTKEY_PASS": "Your login passphrase has changed. Please fill in your old login password to decrypt data"
|
||||
},
|
||||
"OPENPGP": {
|
||||
|
|
|
|||
|
|
@ -285,6 +285,9 @@
|
|||
"CREATE_SELF_SIGNED": "Create self-signed",
|
||||
"VALID_UNTIL": "Valid until",
|
||||
"PRIVATE_KEY": "Private key",
|
||||
"CHANGE_PASS": "Change passphrase",
|
||||
"CURRENT_PASS": "Current passphrase",
|
||||
"NEW_PASS": "New passphrase",
|
||||
"ASK_CRYPTKEY_PASS": "Your login passphrase has changed. Please fill in your old login password to decrypt data"
|
||||
},
|
||||
"OPENPGP": {
|
||||
|
|
|
|||
|
|
@ -285,6 +285,9 @@
|
|||
"CREATE_SELF_SIGNED": "Create self-signed",
|
||||
"VALID_UNTIL": "Valid until",
|
||||
"PRIVATE_KEY": "Private key",
|
||||
"CHANGE_PASS": "Change passphrase",
|
||||
"CURRENT_PASS": "Current passphrase",
|
||||
"NEW_PASS": "New passphrase",
|
||||
"ASK_CRYPTKEY_PASS": "Your login passphrase has changed. Please fill in your old login password to decrypt data"
|
||||
},
|
||||
"OPENPGP": {
|
||||
|
|
|
|||
|
|
@ -285,6 +285,9 @@
|
|||
"CREATE_SELF_SIGNED": "Create self-signed",
|
||||
"VALID_UNTIL": "Valid until",
|
||||
"PRIVATE_KEY": "Private key",
|
||||
"CHANGE_PASS": "Change passphrase",
|
||||
"CURRENT_PASS": "Current passphrase",
|
||||
"NEW_PASS": "New passphrase",
|
||||
"ASK_CRYPTKEY_PASS": "Your login passphrase has changed. Please fill in your old login password to decrypt data"
|
||||
},
|
||||
"OPENPGP": {
|
||||
|
|
|
|||
|
|
@ -285,6 +285,9 @@
|
|||
"CREATE_SELF_SIGNED": "Create self-signed",
|
||||
"VALID_UNTIL": "Valid until",
|
||||
"PRIVATE_KEY": "Private key",
|
||||
"CHANGE_PASS": "Change passphrase",
|
||||
"CURRENT_PASS": "Current passphrase",
|
||||
"NEW_PASS": "New passphrase",
|
||||
"ASK_CRYPTKEY_PASS": "Your login passphrase has changed. Please fill in your old login password to decrypt data"
|
||||
},
|
||||
"OPENPGP": {
|
||||
|
|
|
|||
|
|
@ -285,6 +285,9 @@
|
|||
"CREATE_SELF_SIGNED": "Create self-signed",
|
||||
"VALID_UNTIL": "Valid until",
|
||||
"PRIVATE_KEY": "Private key",
|
||||
"CHANGE_PASS": "Change passphrase",
|
||||
"CURRENT_PASS": "Current passphrase",
|
||||
"NEW_PASS": "New passphrase",
|
||||
"ASK_CRYPTKEY_PASS": "Your login passphrase has changed. Please fill in your old login password to decrypt data"
|
||||
},
|
||||
"OPENPGP": {
|
||||
|
|
|
|||
|
|
@ -285,6 +285,9 @@
|
|||
"CREATE_SELF_SIGNED": "Zelfondertekend certificaat aanmaken",
|
||||
"VALID_UNTIL": "Geldig tot",
|
||||
"PRIVATE_KEY": "Privésleutel",
|
||||
"CHANGE_PASS": "Change passphrase",
|
||||
"CURRENT_PASS": "Current passphrase",
|
||||
"NEW_PASS": "New passphrase",
|
||||
"ASK_CRYPTKEY_PASS": "Your login passphrase has changed. Please fill in your old login password to decrypt data"
|
||||
},
|
||||
"OPENPGP": {
|
||||
|
|
|
|||
|
|
@ -285,6 +285,9 @@
|
|||
"CREATE_SELF_SIGNED": "Utwórz samodzielnie podpisany certyfikat",
|
||||
"VALID_UNTIL": "Ważny do",
|
||||
"PRIVATE_KEY": "Private key",
|
||||
"CHANGE_PASS": "Change passphrase",
|
||||
"CURRENT_PASS": "Current passphrase",
|
||||
"NEW_PASS": "New passphrase",
|
||||
"ASK_CRYPTKEY_PASS": "Your login passphrase has changed. Please fill in your old login password to decrypt data"
|
||||
},
|
||||
"OPENPGP": {
|
||||
|
|
|
|||
|
|
@ -285,6 +285,9 @@
|
|||
"CREATE_SELF_SIGNED": "Create self-signed",
|
||||
"VALID_UNTIL": "Valid until",
|
||||
"PRIVATE_KEY": "Private key",
|
||||
"CHANGE_PASS": "Change passphrase",
|
||||
"CURRENT_PASS": "Current passphrase",
|
||||
"NEW_PASS": "New passphrase",
|
||||
"ASK_CRYPTKEY_PASS": "Your login passphrase has changed. Please fill in your old login password to decrypt data"
|
||||
},
|
||||
"OPENPGP": {
|
||||
|
|
|
|||
|
|
@ -285,6 +285,9 @@
|
|||
"CREATE_SELF_SIGNED": "Criar auto-assinado",
|
||||
"VALID_UNTIL": "Válido até",
|
||||
"PRIVATE_KEY": "Chave privada",
|
||||
"CHANGE_PASS": "Change passphrase",
|
||||
"CURRENT_PASS": "Current passphrase",
|
||||
"NEW_PASS": "New passphrase",
|
||||
"ASK_CRYPTKEY_PASS": "Your login passphrase has changed. Please fill in your old login password to decrypt data"
|
||||
},
|
||||
"OPENPGP": {
|
||||
|
|
|
|||
|
|
@ -285,6 +285,9 @@
|
|||
"CREATE_SELF_SIGNED": "Criar auto-assinado",
|
||||
"VALID_UNTIL": "Válido até",
|
||||
"PRIVATE_KEY": "Chave privada",
|
||||
"CHANGE_PASS": "Change passphrase",
|
||||
"CURRENT_PASS": "Current passphrase",
|
||||
"NEW_PASS": "New passphrase",
|
||||
"ASK_CRYPTKEY_PASS": "Your login passphrase has changed. Please fill in your old login password to decrypt data"
|
||||
},
|
||||
"OPENPGP": {
|
||||
|
|
|
|||
|
|
@ -285,6 +285,9 @@
|
|||
"CREATE_SELF_SIGNED": "Create self-signed",
|
||||
"VALID_UNTIL": "Valid until",
|
||||
"PRIVATE_KEY": "Private key",
|
||||
"CHANGE_PASS": "Change passphrase",
|
||||
"CURRENT_PASS": "Current passphrase",
|
||||
"NEW_PASS": "New passphrase",
|
||||
"ASK_CRYPTKEY_PASS": "Your login passphrase has changed. Please fill in your old login password to decrypt data"
|
||||
},
|
||||
"OPENPGP": {
|
||||
|
|
|
|||
|
|
@ -285,6 +285,9 @@
|
|||
"CREATE_SELF_SIGNED": "Create self-signed",
|
||||
"VALID_UNTIL": "Valid until",
|
||||
"PRIVATE_KEY": "Private key",
|
||||
"CHANGE_PASS": "Change passphrase",
|
||||
"CURRENT_PASS": "Current passphrase",
|
||||
"NEW_PASS": "New passphrase",
|
||||
"ASK_CRYPTKEY_PASS": "Your login passphrase has changed. Please fill in your old login password to decrypt data"
|
||||
},
|
||||
"OPENPGP": {
|
||||
|
|
|
|||
|
|
@ -285,6 +285,9 @@
|
|||
"CREATE_SELF_SIGNED": "Create self-signed",
|
||||
"VALID_UNTIL": "Valid until",
|
||||
"PRIVATE_KEY": "Private key",
|
||||
"CHANGE_PASS": "Change passphrase",
|
||||
"CURRENT_PASS": "Current passphrase",
|
||||
"NEW_PASS": "New passphrase",
|
||||
"ASK_CRYPTKEY_PASS": "Your login passphrase has changed. Please fill in your old login password to decrypt data"
|
||||
},
|
||||
"OPENPGP": {
|
||||
|
|
|
|||
|
|
@ -285,6 +285,9 @@
|
|||
"CREATE_SELF_SIGNED": "Create self-signed",
|
||||
"VALID_UNTIL": "Valid until",
|
||||
"PRIVATE_KEY": "Private key",
|
||||
"CHANGE_PASS": "Change passphrase",
|
||||
"CURRENT_PASS": "Current passphrase",
|
||||
"NEW_PASS": "New passphrase",
|
||||
"ASK_CRYPTKEY_PASS": "Your login passphrase has changed. Please fill in your old login password to decrypt data"
|
||||
},
|
||||
"OPENPGP": {
|
||||
|
|
|
|||
|
|
@ -285,6 +285,9 @@
|
|||
"CREATE_SELF_SIGNED": "Create self-signed",
|
||||
"VALID_UNTIL": "Valid until",
|
||||
"PRIVATE_KEY": "Private key",
|
||||
"CHANGE_PASS": "Change passphrase",
|
||||
"CURRENT_PASS": "Current passphrase",
|
||||
"NEW_PASS": "New passphrase",
|
||||
"ASK_CRYPTKEY_PASS": "Your login passphrase has changed. Please fill in your old login password to decrypt data"
|
||||
},
|
||||
"OPENPGP": {
|
||||
|
|
|
|||
|
|
@ -285,6 +285,9 @@
|
|||
"CREATE_SELF_SIGNED": "Create self-signed",
|
||||
"VALID_UNTIL": "Valid until",
|
||||
"PRIVATE_KEY": "Private key",
|
||||
"CHANGE_PASS": "Change passphrase",
|
||||
"CURRENT_PASS": "Current passphrase",
|
||||
"NEW_PASS": "New passphrase",
|
||||
"ASK_CRYPTKEY_PASS": "Your login passphrase has changed. Please fill in your old login password to decrypt data"
|
||||
},
|
||||
"OPENPGP": {
|
||||
|
|
|
|||
|
|
@ -285,6 +285,9 @@
|
|||
"CREATE_SELF_SIGNED": "Create self-signed",
|
||||
"VALID_UNTIL": "Valid until",
|
||||
"PRIVATE_KEY": "Private key",
|
||||
"CHANGE_PASS": "Change passphrase",
|
||||
"CURRENT_PASS": "Current passphrase",
|
||||
"NEW_PASS": "New passphrase",
|
||||
"ASK_CRYPTKEY_PASS": "Your login passphrase has changed. Please fill in your old login password to decrypt data"
|
||||
},
|
||||
"OPENPGP": {
|
||||
|
|
|
|||
|
|
@ -285,6 +285,9 @@
|
|||
"CREATE_SELF_SIGNED": "Create self-signed",
|
||||
"VALID_UNTIL": "Valid until",
|
||||
"PRIVATE_KEY": "Private key",
|
||||
"CHANGE_PASS": "Change passphrase",
|
||||
"CURRENT_PASS": "Current passphrase",
|
||||
"NEW_PASS": "New passphrase",
|
||||
"ASK_CRYPTKEY_PASS": "Your login passphrase has changed. Please fill in your old login password to decrypt data"
|
||||
},
|
||||
"OPENPGP": {
|
||||
|
|
|
|||
|
|
@ -285,6 +285,9 @@
|
|||
"CREATE_SELF_SIGNED": "Create self-signed",
|
||||
"VALID_UNTIL": "Valid until",
|
||||
"PRIVATE_KEY": "Private key",
|
||||
"CHANGE_PASS": "Change passphrase",
|
||||
"CURRENT_PASS": "Current passphrase",
|
||||
"NEW_PASS": "New passphrase",
|
||||
"ASK_CRYPTKEY_PASS": "Your login passphrase has changed. Please fill in your old login password to decrypt data"
|
||||
},
|
||||
"OPENPGP": {
|
||||
|
|
|
|||
|
|
@ -285,6 +285,9 @@
|
|||
"CREATE_SELF_SIGNED": "Create self-signed",
|
||||
"VALID_UNTIL": "Valid until",
|
||||
"PRIVATE_KEY": "Private key",
|
||||
"CHANGE_PASS": "Change passphrase",
|
||||
"CURRENT_PASS": "Current passphrase",
|
||||
"NEW_PASS": "New passphrase",
|
||||
"ASK_CRYPTKEY_PASS": "Your login passphrase has changed. Please fill in your old login password to decrypt data"
|
||||
},
|
||||
"OPENPGP": {
|
||||
|
|
|
|||
|
|
@ -92,6 +92,11 @@
|
|||
<label data-i18n="CRYPTO/PRIVATE_KEY"></label>
|
||||
<textarea name="smimeKey" class="input-xxlarge" rows="14" autofocus="" autocomplete="off" data-bind="value: smimeKey"></textarea>
|
||||
</div>
|
||||
<!-- <div class="control-group" data-bind="visible:smimeKeyValid() && !smimeKeyEncrypted()"> -->
|
||||
<div class="control-group" data-bind="visible:smimeKeyValid">
|
||||
<label></label>
|
||||
<button type="button" data-bind="click: $root.setSMimeKeyPass" data-i18n="CRYPTO/CHANGE_PASS"></button>
|
||||
</div>
|
||||
<div class="control-group" data-bind="css: {'error': smimeCertificate() && !smimeCertificateValid()}">
|
||||
<label data-i18n="SMIME/CERTIFICATE"></label>
|
||||
<textarea name="smimeCertificate" class="input-xxlarge" rows="14" autofocus="" autocomplete="off" data-bind="value: smimeCertificate"></textarea>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue