Je dois signer numériquement une chaîne en utilisant l'algorithme SHA-1 avec RSA en utilisant le remplissage PKCS # 1. J'ai téléchargé Turbo Power Lockbox pour l'utiliser avec le langage de programmation Delphi.Clé de signature numérique avec boîte aux lettres
Dans un previous question j'ai appris comment convertir la clé privée du format PEM au format DER (qui si je comprends bien est le format ASN.1 et est utilisé avec Lockbox).
Je reçois une "division par zéro" erreur dans le code suivant sur la SignString:
uses LbRSA,lbAsym,LbDSA;
procedure TForm1.Button1Click(sender: TObject);
var
mPrivateKey: TLbRSAKey;
mLbRSASSA : TLbRSASSA;
begin
mPrivateKey := TLbRSAKey.Create(aks1024);
mPrivateKey.LoadFromFile('C:\temp\myrsakey.der');
mLbRSASSA := TLbRSASSA.create(nil);
mLbRSASSA.HashMethod := hmSHA1;
mLbRSASSA.PrivateKey.Assign(mprivateKey);
mLbRSASSA.SignString('sign this message');
Voici comment je généré c: \ temp \ myrsakey.der:
c : \ openssl \ bin \ openssl req -x509 -nodes -jours 365 -newkey rsa: 1024 -sha1 -subj "/ C = US/ST = CA/L = Mountain View/CN = www.monentreprise.com" -keyout myrsakey .pem -out c: \ temp \ myrsacert.pem
Utilisez ci-dessous pour convertir PEM DER:
c: \ OpenSSL \ bin \ openssl rsa -inform PEM -outform DER -En c: \ temp \ myrsakey.pem c -out: \ temp \ myrsakey.der
Des idées pour lesquelles j'obtiens la division par zéro erreur?
Merci, utile. Je pense que ce que vous dites des clés générées avec OpenSSL ne peut pas être utilisé avec LockBox. Je vais essayer la bibliothèque OpenSSL (OpenSSLUtils.pas). Je suppose que cela a du sens; Après tout LockBox a plus de 7 ans. Si cela vous aide, j'essaie de me connecter à l'AuthSub de Google en utilisant une signature numérique. –
Pas nécessairement disant que cela ne peut pas être fait - mais pas sûr que ça en vaut la peine :-) Lockbox, comme indiqué, est assez vieux et l'API OpenSSL fonctionne bien une fois que vous avez compris. J'ai oublié d'ajouter que si vous utilisez unicode Delphi, vous devrez faire quelques changements de PChar à PByte ou PAnsiChar dans les fichiers pas de ce site web. Les fonctions EVP_ * sont ce que vous voulez. – shunty