J'essaie de signer des documents PDF en utilisant Pkcs11Interop bibliothèque .net. Je dois utiliser algorithme de chiffrement ECDSA avec algorithme de hachage SHA256. Et j'utilise SoftHSM 2.2.0 pour stocker des clés privées.Signature PDF à partir de Pkcs11Interop pour CKM_ECDSA_SHA256 en utilisant SoftHSM 2.2.0 (ECDSA avec SHA256) C# .net
J'ai trouvé un ENUM CKM, CKM_ECDSA_SHA256, qui je passe tout en créant un objet de mécanisme de classe pour appeler la méthode Signe session.
Je reçois la réponse de la méthode "Signdata", cependant, à l'ouverture des fichiers Pdf générés après la signature, je donne une erreur "Signature invalide". Voici l'extrait de code pour l'appel de méthode Signdata. Je ne reçois aucune erreur ou exception dans le code, cependant, le pdf comme je l'ai mentionné montre la signature invalide.
private Pkcs11 _pkcs11;
private Slot _slot;
private Session _session;
try
{
_pkcs11 = new Pkcs11(hsmCryptoApi, true);
}
catch (Pkcs11Exception ex)
{
if (ex.RV == CKR.CKR_CANT_LOCK)
_pkcs11 = new Pkcs11(hsmCryptoApi, false);
else
throw ex;
}
_slot = FindSlot(_pkcs11, _certificateInformation.TokenLabel);
_session = _slot.OpenSession(true);
using (Mechanism mechanism = new Mechanism(CKM.CKM_ECDSA_SHA256))
{
_session.Login(CKU.CKU_USER, passowrd);
byte[] signedHash = _session.Sign(mechanism, GetPrivateKeyHandle(), message);
_session.Logout();
return signedHash;
}
private ObjectHandle GetPrivateKeyHandle()
{
string keyLabel = _certificateInformation.KeyLabel;
List<ObjectAttribute> searchTemplate = new List<ObjectAttribute>();
searchTemplate.Add(new ObjectAttribute(CKA.CKA_CLASS, CKO.CKO_PRIVATE_KEY));
searchTemplate.Add(new ObjectAttribute(CKA.CKA_LABEL, keyLabel));
List<ObjectHandle> foundObjects = _session.FindAllObjects(searchTemplate);
return foundObjects[0];
}
- S'il vous plaît me dire si SoftHSM 2.2.0 prend en charge ECDSA_P256 avec SHA256 ou non ??
- Sinon, alors est-il possible d'activer le support?
- S'il ne prend en charge, s'il vous plaît aidez-moi comment résoudre ce problème?
- On dirait qu'il veut que je passe ECDSA_Param, Quelqu'un at-il extrait de code pour faire passer la structure ECDSA_Param
Je ne vois aucun problème évident dans le code que vous avez posté donc je suppose que votre problème peut être causé par un autre code dans votre solution telle que le traitement PDF , Bâtiment de structure de CMS etc. – jariq