go模块pkcs11中的PKCS11 ECDSA参数
PKCS11 ECDSA parameters in go module pkcs11
我想知道如何使用 go 模块为 ECDSA 模板传递正确的参数值 miekg/pkcs11:到目前为止我得到的是:
privateKeyTemplate := []*pkcs11.Attribute{
pkcs11.NewAttribute(pkcs11.CKA_TOKEN, tokenPersistent),
pkcs11.NewAttribute(pkcs11.CKA_ECDSA_PARAMS, []byte{{/*how to use secp256k1?*/}),
pkcs11.NewAttribute(pkcs11.CKA_SIGN, true),
pkcs11.NewAttribute(pkcs11.CKA_LABEL, label),
pkcs11.NewAttribute(pkcs11.CKA_SENSITIVE, true),
pkcs11.NewAttribute(pkcs11.CKA_EXTRACTABLE, true),
}
有人可以帮我解决这个问题吗?
谢谢
编辑:
Alexander 提供的字节数组是正确的,但请注意,我原来的问题也具有误导性。 不应该 将 ECDSA_PARAMS 放在私钥模板中,而只能放在 public 密钥模板中。
检查 OpenSC 项目中的这一行 (3189):
FILL_ATTR(privkey_templ[n_privkey_attr], CKA_EC_PARAMS, gost.param_oid.value, gost.param_oid.len);
还有这个 (3199):
FILL_ATTR(privkey_templ[n_privkey_attr], CKA_GOSTR3410_PARAMS, gost.param_oid.value, gost.param_oid.len);
根据我使用 GOST 密钥的经验,我建议这里必须是一个编码的 OID。在您的情况下,它可能如下所示:
[]byte{ 06, 04, 01, 02, 03, 04 }
我想知道如何使用 go 模块为 ECDSA 模板传递正确的参数值 miekg/pkcs11:到目前为止我得到的是:
privateKeyTemplate := []*pkcs11.Attribute{
pkcs11.NewAttribute(pkcs11.CKA_TOKEN, tokenPersistent),
pkcs11.NewAttribute(pkcs11.CKA_ECDSA_PARAMS, []byte{{/*how to use secp256k1?*/}),
pkcs11.NewAttribute(pkcs11.CKA_SIGN, true),
pkcs11.NewAttribute(pkcs11.CKA_LABEL, label),
pkcs11.NewAttribute(pkcs11.CKA_SENSITIVE, true),
pkcs11.NewAttribute(pkcs11.CKA_EXTRACTABLE, true),
}
有人可以帮我解决这个问题吗?
谢谢
编辑:
Alexander 提供的字节数组是正确的,但请注意,我原来的问题也具有误导性。 不应该 将 ECDSA_PARAMS 放在私钥模板中,而只能放在 public 密钥模板中。
检查 OpenSC 项目中的这一行 (3189):
FILL_ATTR(privkey_templ[n_privkey_attr], CKA_EC_PARAMS, gost.param_oid.value, gost.param_oid.len);
还有这个 (3199):
FILL_ATTR(privkey_templ[n_privkey_attr], CKA_GOSTR3410_PARAMS, gost.param_oid.value, gost.param_oid.len);
根据我使用 GOST 密钥的经验,我建议这里必须是一个编码的 OID。在您的情况下,它可能如下所示:
[]byte{ 06, 04, 01, 02, 03, 04 }