Je me connecte à Gemalto HSM qui prend en charge secp256r1. J'ai le code suivant pour créer une paire de clés ECDSA en utilisant Pkcs11interop. J'obtiens le paramsBytes en utilisant BouncyCastle NistNamedCurves et X962Parameters.Erreur lors de la création d'une paire de clés ECDSA avec pkcs11interop
Le HSM continue de revenir avec CKR_ATTRIBUTE_TYPE_INVALID. Je suis nouveau à ECDSA donc j'ai peut-être manqué quelque chose. Des idées?
X9ECParameters x9Ec = NistNamedCurves.GetByName("P-256");
X962Parameters x962 = new X962Parameters(x9Ec);
byte[] paramsBytes = x962.GetDerEncoded();
// The CKA_ID attribute is intended as a means of distinguishing multiple key pairs held by the same subject
byte[] ckaId = session.GenerateRandom(20);
// Prepare attribute template of new public key
List<ObjectAttribute> publicKeyAttributes = new List<ObjectAttribute>();
publicKeyAttributes.Add(new ObjectAttribute(CKA.CKA_PRIVATE, false));
publicKeyAttributes.Add(new ObjectAttribute(CKA.CKA_LABEL, keyName));
publicKeyAttributes.Add(new ObjectAttribute(CKA.CKA_ID, ckaId));
publicKeyAttributes.Add(new ObjectAttribute(CKA.CKA_VERIFY, true));
publicKeyAttributes.Add(new ObjectAttribute(CKA.CKA_ECDSA_PARAMS, paramsBytes));
// Prepare attribute template of new private key
List<ObjectAttribute> privateKeyAttributes = new List<ObjectAttribute>();
privateKeyAttributes.Add(new ObjectAttribute(CKA.CKA_PRIVATE, true));
privateKeyAttributes.Add(new ObjectAttribute(CKA.CKA_LABEL, keyName));
privateKeyAttributes.Add(new ObjectAttribute(CKA.CKA_ID, ckaId));
privateKeyAttributes.Add(new ObjectAttribute(CKA.CKA_SENSITIVE, true));
privateKeyAttributes.Add(new ObjectAttribute(CKA.CKA_SIGN, true));
privateKeyAttributes.Add(new ObjectAttribute(CKA.CKA_ECDSA_PARAMS, paramsBytes));
// Generate key pair
Mechanism mechanism = new Mechanism(CKM.CKM_ECDSA_KEY_PAIR_GEN);
ObjectHandle publicKeyHandle = null;
ObjectHandle privateKeyHandle = null;
session.GenerateKeyPair(mechanism, publicKeyAttributes, privateKeyAttributes, out publicKeyHandle,
out privateKeyHandle);
Augmentation de la bonne réponse. Bon travail! – jariq