下面是一个非常简单的测试,它生成两个密钥,然后尝试使用另一个来包装一个。Internet Explorer 11 中的“wrapKey”调用抛出“NotSupportedError”,我不知道它到底指的是什么/抱怨什么。
提示/建议将非常受欢迎!根据文档(https://msdn.microsoft.com/en-us/library/dn302337%28v=vs.85%29.aspx),应该支持用于包装的算法(RSA-OAEP)。 .而且我不太明白“wrapKey方法保护用JSON Web Encryption(JWE)封装的JSON Web Key(JWK)结构中的密钥材料。具体来说,密钥的密钥材料是使用随机生成的内容加密进行加密的密钥,然后使用指定的 keyWrappingAlgorithm 使用 keyEncryptionKey 对其进行加密。” - 听起来像是在谈论在我的调用代码中理论上我不需要担心的幕后/幕后完成的事情?
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)
})