派生JS中的AES-KW密钥

问题描述 投票:1回答:1

我尝试在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可以成功。

javascript aes
1个回答
0
投票

技术上,将crypto.subtle.deriveKey设置为crypto.subtle.deriveKeyname: 'AES-KW'提供了一个密钥,该密钥可根据derivedKeyAlgorithm用于包装另一个密钥,另请参见RFC 3394。由于此AES-KW必须用作AES-KW而不是['wrapKey', 'unwrapKey'],另请参见此keyUsages

['encrypt', 'decrypt']设为example (getKey),将getKey设为name: 'AES-GCM',提供了一个密钥,该密钥可用于。

derivedKeyAlgorithm的示例:

['encrypt', 'decrypt']
© www.soinside.com 2019 - 2024. All rights reserved.