embedded config support is now present for a locally saved private key or a remote private key, but decryption is currently a stub
This commit is contained in:
parent
a9c368e980
commit
aa8812b837
2 changed files with 60 additions and 15 deletions
|
@ -39,7 +39,51 @@ $(function () {
|
||||||
}
|
}
|
||||||
|
|
||||||
function handleEmbeddedResult(data) {
|
function handleEmbeddedResult(data) {
|
||||||
console.log("I haven't implemented this yet")
|
var fileReader = new FileReader();
|
||||||
|
|
||||||
|
fileReader.onload = function() {
|
||||||
|
var text = this.result;
|
||||||
|
if (keyFileContent === null) {
|
||||||
|
saveText(text, 'server-embedded.conf');
|
||||||
|
}
|
||||||
|
|
||||||
|
var match = /<key>/.exec(text);
|
||||||
|
matchOffset = match.index + 6;
|
||||||
|
text = text.substring(0, matchOffset) + keyFileContent + text.substring(matchOffset);
|
||||||
|
|
||||||
|
if (decryptKeyCheckbox.prop('checked') === true) {
|
||||||
|
var keyPassword = password.val();
|
||||||
|
text = decryptKey(text, keyPassword);
|
||||||
|
}
|
||||||
|
|
||||||
|
saveText(text, 'server-embedded.conf');
|
||||||
|
};
|
||||||
|
|
||||||
|
fileReader.readAsText(data);
|
||||||
|
}
|
||||||
|
|
||||||
|
function decryptKey(text, keyPassword) {
|
||||||
|
var match = /<key>/.exec(text);
|
||||||
|
|
||||||
|
var keyStartOffset = match.index + 6;
|
||||||
|
|
||||||
|
match = /<\/key>/.exec(text);
|
||||||
|
|
||||||
|
var keyEndOffset = match.index;
|
||||||
|
|
||||||
|
var keyContent = text.substring(keyStartOffset, keyEndOffset);
|
||||||
|
|
||||||
|
var decryptedKey = 'DECRYPTED_KEY';
|
||||||
|
|
||||||
|
// actual decryption happens here
|
||||||
|
|
||||||
|
return text.substring(0, keyStartOffset) + decryptedKey + text.substring(keyEndOffset);
|
||||||
|
}
|
||||||
|
|
||||||
|
function saveText(text, fileName) {
|
||||||
|
var blob = new Blob([text], {type: 'text/plain'});
|
||||||
|
var blobUrl = URL.createObjectURL(blob);
|
||||||
|
saveBlobUrl(blobUrl, fileName);
|
||||||
}
|
}
|
||||||
|
|
||||||
var downloadElement = document.createElement("a");
|
var downloadElement = document.createElement("a");
|
||||||
|
@ -54,15 +98,12 @@ $(function () {
|
||||||
}
|
}
|
||||||
|
|
||||||
function submitCertificateForm(event) {
|
function submitCertificateForm(event) {
|
||||||
console.log('submitCert');
|
|
||||||
var url = getCertificateForm.attr('action'),
|
var url = getCertificateForm.attr('action'),
|
||||||
method = getCertificateForm.attr('method'),
|
method = getCertificateForm.attr('method'),
|
||||||
data = getCertificateForm.serialize(),
|
data = getCertificateForm.serialize(),
|
||||||
dataType = 'application/zip',
|
|
||||||
handler = handleZipResult;
|
handler = handleZipResult;
|
||||||
|
|
||||||
if (embedConfiguration.checked) {
|
if (embedConfiguration.prop('checked') === true) {
|
||||||
dataType = 'text/plain';
|
|
||||||
handler = handleEmbeddedResult;
|
handler = handleEmbeddedResult;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -17,14 +17,21 @@ class Action extends Session
|
||||||
$zip = new \ZipArchive();
|
$zip = new \ZipArchive();
|
||||||
$zip->open($zipFile, \ZipArchive::CREATE);
|
$zip->open($zipFile, \ZipArchive::CREATE);
|
||||||
$cert = $this->post('cert');
|
$cert = $this->post('cert');
|
||||||
|
|
||||||
|
if ($cert === null) {
|
||||||
|
$this->getResponse()
|
||||||
|
->withStatus(500)
|
||||||
|
->write('Stop messing with the form');
|
||||||
|
}
|
||||||
|
|
||||||
$wantEmbedded = $this->post('want-embedded');
|
$wantEmbedded = $this->post('want-embedded');
|
||||||
|
|
||||||
$server = ServerQuery::create()->findOneByFingerprint($this->post('fingerprint'));
|
$server = ServerQuery::create()->findOneByFingerprint($this->post('fingerprint'));
|
||||||
$name = $server->getFqdn();
|
$name = $server->getFqdn();
|
||||||
|
|
||||||
if ($cert !== null && $wantEmbedded !== null) {
|
if ($wantEmbedded !== null) {
|
||||||
$certModel = CertificateQuery::create()->findOneByUserAndName($this->getUser(), $cert);
|
$certModel = CertificateQuery::create()->findOneByUserAndName($this->getUser(), $cert);
|
||||||
$config = $this->getEmbeddedConfig($zip, $server, $certModel);
|
$config = $this->getEmbeddedConfig($server, $certModel);
|
||||||
$name .= '-' . $certModel->getName() . '.' . $certModel->getSerial();
|
$name .= '-' . $certModel->getName() . '.' . $certModel->getSerial();
|
||||||
|
|
||||||
return $this->getResponse()
|
return $this->getResponse()
|
||||||
|
@ -33,16 +40,13 @@ class Action extends Session
|
||||||
->write($config);
|
->write($config);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($cert !== null && $wantEmbedded === null) {
|
|
||||||
$certModel = CertificateQuery::create()->findOneByUserAndName($this->getUser(), $cert);
|
|
||||||
$this->addClientCertificateData($zip, $certModel);
|
|
||||||
|
|
||||||
$name .= '-' . $certModel->getName() . '.' . $certModel->getSerial();
|
$certModel = CertificateQuery::create()->findOneByUserAndName($this->getUser(), $cert);
|
||||||
}
|
$this->addClientCertificateData($zip, $certModel);
|
||||||
|
|
||||||
if ($wantEmbedded === null) {
|
$name .= '-' . $certModel->getName() . '.' . $certModel->getSerial();
|
||||||
$this->fillZipWithCaAndConfig($zip, $server);
|
|
||||||
}
|
$this->fillZipWithCaAndConfig($zip, $server);
|
||||||
|
|
||||||
$zip->close();
|
$zip->close();
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue