在IE11中包装密钥时出现NotSupportedError

时间:2015-09-16 03:47:44

标签: javascript internet-explorer encryption rsa webcryptoapi

下面是一个非常简单的测试,它生成两个键,然后尝试用另一个键包装一个。 Internet Explorer 11中的'wrapKey'调用抛出'NotSupportedError',我不知道它指的是什么/抱怨什么。

非常欢迎提示/建议!根据文档(https://msdn.microsoft.com/en-us/library/dn302337%28v=vs.85%29.aspx),应该支持用于包装的算法(RSA-OAEP)......我不太明白“wrapKey方法保护JSON Web Key中的密钥材料( JWK)结构封装了JSON Web加密(JWE)。具体来说,密钥的密钥材料是使用随机生成的内容加密密钥加密的,而后者又使用keyEncryptionKey使用指定的keyWrappingAlgorithm加密。 - 听起来它是在谈论在幕后/幕后完成的事情,理论上我不应该在我的调用代码中担心?

var rsaOaepAlgo = { name: "RSA-OAEP",
                    modulusLength: 2048,
                    hash: { name: 'SHA-256' },
                    publicExponent: new Uint8Array([0x01, 0x00, 0x01]) }
var aesCbcAlgo = {  name: "AES-CBC",
                    length: 128 }

var p = webcrypto.subtle.generateKey(
                rsaOaepAlgo,
                true,
                ["wrapKey", "unwrapKey", "encrypt", "decrypt"]
        )
return webcrypto.promisify(p)
.then(function(generatedWrapKey) {
    console.log('generated wrap key')
    keyToUseForWrapping = generatedWrapKey
    p = webcrypto.subtle.generateKey(aesCbcAlgo, true, ["encrypt", "decrypt"])
    return webcrypto.promisify(p)
})
.then(function(importedKey) {
    console.log('imported key to wrap successfully')
    keyToUseForEncryption = importedKey
    console.log(keyToUseForWrapping.publicKey.algorithm)
    console.log(keyToUseForEncryption.algorithm)
    console.log('attempting to wrap the key')
    p = webcrypto.subtle.wrapKey(keyToUseForEncryption, keyToUseForWrapping.publicKey, rsaOaepAlgo)
    return webcrypto.promisify(p)
})

0 个答案:

没有答案