封装和解包密钥


\Wrapping and unwrapping keys

const { subtle } = globalThis.crypto;
async function generateAndWrapHmacKey(format = 'jwk', hash = 'SHA-512') {
 const [
 key,
 wrappingKey,
 ] = await Promise.all([
 subtle.generateKey({
 name: 'HMAC', hash,
 }, true, ['sign', 'verify']),
 subtle.generateKey({
 name: 'AES-KW',
 length: 256,
 }, true, ['wrapKey', 'unwrapKey']),
 ]);
 const wrappedKey = await subtle.wrapKey(format, key, wrappingKey, 'AES-KW');
 return { wrappedKey, wrappingKey };
}
async function unwrapHmacKey(
 wrappedKey,
 wrappingKey,
 format = 'jwk',
 hash = 'SHA-512') {
 const key = await subtle.unwrapKey(
 format,
 wrappedKey,
 wrappingKey,
 'AES-KW',
 { name: 'HMAC', hash },
 true,
 ['sign', 'verify']);
 return key;
} 

AltStyle によって変換されたページ (->オリジナル) /