exportKey
注意
实验性模块
k6/experimental/webcrypto
已成熟,其功能现在通过crypto 对象
全局可用。k6/experimental/webcrypto
已弃用,并将在不久的将来移除。要迁移您的脚本,请移除
k6/experimental/webcrypto
导入,并改用crypto
对象。
exportKey()
方法接受 CryptoKey 对象作为输入,并将其导出为外部可移植格式。
请注意,要使密钥可导出,创建时必须将 extractable
标志设置为 true
。
使用
exportKey(format, key)
参数
名称 | 类型 | 描述 |
---|---|---|
format | 字符串 | 定义密钥导出的数据格式。根据算法和密钥类型,数据格式可能有所不同。当前支持的格式有 raw 、jwk 、spki 和 pkcs8 。 |
key | CryptoKey | 要导出的密钥。 |
支持的算法
AES-CBC | AES-CTR | AES-GCM | AES-KW | ECDH | ECDSA | HMAC | RSA-OAEP | RSASSA-PKCS1-v1_5 | RSA-PSS |
---|---|---|---|---|---|---|---|---|---|
✅ AesCbcParams | ✅ AesCtrParams | ✅ AesGcmParams | ❌ | ✅ EcdhKeyDeriveParams | ✅ EcdsaParams | ✅ HmacKeyGenParams | ✅ RsaHashedImportParams | ✅ RsaHashedImportParams | ✅ RsaHashedImportParams |
支持的格式
ECDH
和ECDSA
算法支持pkcs8
、spki
、raw
和jwk
格式。RSA-OAEP
、RSASSA-PKCS1-v1_5
和RSA-PSS
算法支持pkcs8
、spki
和jwk
格式。AES-*
和HMAC
算法当前支持raw
和jwk
格式。
返回值
一个 Promise
,解析为一个新的 ArrayBuffer
或一个包含密钥的 JsonWebKey 对象/字典。
抛出
类型 | 描述 |
---|---|
InvalidAccessError | 尝试导出不可导出密钥时抛出。 |
NotSupportedError | 尝试以未知格式导出时抛出。 |
TypeError | 尝试使用无效格式时抛出。 |
示例
import { crypto } from 'k6/experimental/webcrypto';
export default async function () {
/**
* Generate a symmetric key using the AES-CBC algorithm.
*/
const generatedKey = await crypto.subtle.generateKey(
{
name: 'AES-CBC',
length: '256',
},
true,
['encrypt', 'decrypt']
);
/**
* Export the key in raw format.
*/
const exportedKey = await crypto.subtle.exportKey('raw', generatedKey);
/**
* Reimport the key in raw format to verify its integrity.
*/
const importedKey = await crypto.subtle.importKey('raw', exportedKey, 'AES-CBC', true, [
'encrypt',
'decrypt',
]);
console.log(JSON.stringify(importedKey));
}