Ich versuche, mich mit der Unterzeichnung und der Verwendung verschiedener Optionen zu befassen.Mehrere OpenSSL-RSA-Signiermethoden führen zu unterschiedlichen Ergebnissen
ich unterschreiben kann diesen Befehl:
openssl dgst -sha256 -sign private_key.pem -binary -out sig_file data_file
Aber die Dokumentation scheint zu sagen, dass ich auch andere
openssl dgst -sha256 -binary data_file > hash_file
openssl rsautl -sign -inkey private_key.pem -keyform PEM -in hash_file > sig_file2
Aber die Unterschriften sind diese Methode verwenden kann, wenn ich sie erwarten würde zu identisch sein. Entweder habe ich etwas in den Optionen verpasst oder irgendetwas anderes ist falsch in meinen Annahmen.
Die eigentliche Frage von diesem Problem: Gibt es eine Möglichkeit zu signieren mit Befehlszeilenoptionen, da ich bereits den Hash-Wert und eine Signatur, die identisch mit dem ersten Befehl oben ist.
Um mehr hinzuzufügen, kann ich den ersten Befehl einfach im Code reproduzieren und es entspricht dem ersten obigen Befehl, was bedeutet, dass ich mit dem zuerst berechneten Hashwert signieren kann.
mdctx = EVP_MD_CTX_create();
EVP_DigestInit_ex(mdctx, EVP_sha256(), NULL);
EVP_DigestUpdate(mdctx, data, len);
EVP_DigestFinal_ex(mdctx, hash, &s);
EVP_MD_CTX_destroy(mdctx);
kfile = fopen64(key_file, "r");
key = PEM_read_RSAPrivateKey(kfile, NULL, NULL, NULL);
fclose(kfile);
*sig = malloc(RSA_size(key));
RSA_sign(NID_sha256, hash, hlen, *sig, siglen, key);