如何解决webcrypto api承诺

时间:2018-10-01 19:03:42

标签: javascript typescript promise es6-promise webcryptoapi

我正在尝试使用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值?

0 个答案:

没有答案