我正在尝试使用Web Crypto API加密邮件。
基本上,我要做的是使用deriveKey
函数,该函数通过生成的密钥带来承诺,并使用该密钥对消息进行加密。
但是,我的问题是,加密完成后如何解决?因为现在我在promise中获取了加密的文本,并且操作了html元素,但是我希望函数返回加密的文本本身,以便可以从其他地方作为函数调用它并以加密的文本形式返回。 / p>
public encrypt(location: string, message: String) {
let context = this
// Get the key and encrypt the message
return this.deriveKey(location).then(function (aesKey) {
let plainTextBytes = DataConvertionCalculations.stringToByteArray(message);
window.crypto.subtle.encrypt(
{ name: "AES-GCM", iv: context.ivBytes },
aesKey,
plainTextBytes,
).then(function (cipherTextBuffer) {
let ciphertextBytes = new Uint8Array(cipherTextBuffer)
let base64Ciphertext = DataConvertionCalculations.byteArrayToBase64(ciphertextBytes)
let ciphertextField = <HTMLTextAreaElement>document.getElementById("messageToDecrypt")
ciphertextField.value = base64Ciphertext
});
});
}
从代码中可以看到,一旦到达最后一个then函数,就创建了cipherTextBuffer
,但是,在最后一个then
范围内,我无法调用resolve()
方法完成链条。如何通过将方法解析到另一个函数或类变量中来获取base64cipherText
或仅获取cipherTextBuffer
值?