我正在使用 k6 JavaScript API 来运行测试,k6 在使用库方面非常有限,因此为了进行 EC 加密,我正在使用
k6/experimental/webcrypto
:
import { crypto } from "k6/experimental/webcrypto";
export function generateKeyPair() {
crypto.subtle.generateKey(
{
name: "ECDSA",
namedCurve: "P-256"
},
true,
["sign", "verify"],
).then((keypair) => {
console.log(keypair)
})
}
但是,当调用我的函数时,我收到以下错误:
ERRO[0009] Uncaught (in promise) NotSupportedError
在nodeJS中使用@peculiar/webcrypto模块尝试相同的功能不会产生错误:
const { Crypto } = require("@peculiar/webcrypto");
function keygenPerculiarCrypto(){
const crypto = new Crypto();
crypto.subtle.generateKey(
{
name: "ECDSA",
namedCurve: "P-256"
},
true,
["sign", "verify"],
).then((keypair) => {
console.log(keypair)
})
}
为什么k6版本不行而node版本可以?
在 k6 中进行 EC 加密有其他选择吗?
最近才在 k6 版本 0.51 中添加了对 ECDSA 的支持,该版本于 于 5 月 13 日发布:
此版本为 k6/experimental/webcrypto 模块带来了对非对称加密的支持。我们添加了对椭圆曲线算法 ECDH (xk6-webcrypto#67) 和 ECDSA (xk6-webcrypto#69) 算法以及新的导入/导出密钥格式(如 spki 和 pkcs8)的支持。
尝试使用 k6 0.50.0 运行脚本会给出(完整)错误消息:
ERRO[0000] 未捕获(承诺)NotSupportedError:不支持的算法:ECDSA
升级到 k6 0.51.0 可以正常工作并输出密钥对信息:
INFO[0000] {"privateKey":{"type":"private","extractable":true,"algorithm":{"key_algorithm":{"algorithm":{"name":"ECDSA"}," name":"ECDSA"},"algorithm":{"name":"ECDSA"},"name":"ECDSA","namedCurve":"P-256"},"usages":["sign"] },"publicKey":{"type":"public","extractable":true,"algorithm":{"key_algorithm":{"algorithm":{"name":"ECDSA"},"name":" ECDSA"},"算法":{"名称":"ECDSA"},"名称":"ECDSA","namedCurve":"P-256"},"用法":["验证"]}} 来源=控制台