我尝试在js中派生AES-KW密钥,例如:
let { publicKey: pub, privateKey: key } =
await crypto.subtle.generateKey(
{ name: 'ECDH', namedCurve: 'P-521' },
true,
['deriveKey'],
)
await crypto.subtle.deriveKey(
{ name: 'ECDH', public: pub },
key,
{ name: 'AES-KW', length: 256 },
false,
["encrypt", "decrypt"],
)
有错误:未捕获(承诺)DOMException:无法使用指定的密钥用法创建密钥。
我不知道为什么,因为AES-GCM可以成功。
技术上,将crypto.subtle.deriveKey
设置为crypto.subtle.deriveKey
的name: 'AES-KW'
提供了一个密钥,该密钥可根据derivedKeyAlgorithm
用于包装另一个密钥,另请参见RFC 3394。由于此AES-KW
必须用作AES-KW
而不是['wrapKey', 'unwrapKey']
,另请参见此keyUsages
。
将['encrypt', 'decrypt']
设为example (getKey
),将getKey
设为name: 'AES-GCM'
,提供了一个密钥,该密钥可用于。
derivedKeyAlgorithm
的示例: ['encrypt', 'decrypt']