RSA_set0_key() mit N, E, D ist möglich?
Ja. RSA_set0_key
ist in den OpenSSL-Manpages dokumentiert. Seine Unterschrift ist:
int RSA_set0_key(RSA *r, BIGNUM *n, BIGNUM *e, BIGNUM *d);
Die Beschreibung ist:
Der n, e und d Parameterwerte können durch Aufruf RSA_set0_key() und Hindurchleiten der neuen Werte für n, E und D als Parameter eingestellt werden zur Funktion. Die Werte n und e müssen nicht NULL sein, wenn diese Funktion zum ersten Mal für ein gegebenes RSA-Objekt aufgerufen wird. Der Wert d kann NULL sein. Bei nachfolgenden Aufrufen kann jeder dieser Werte NULL sein, was bedeutet, dass das entsprechende RSA-Feld unberührt bleibt. Durch den Aufruf dieser Funktion wird die Speicherverwaltung der Werte an das RSA-Objekt übergeben. Daher sollten die übergebenen Werte nach Aufruf dieser Funktion nicht vom Aufrufer freigegeben werden.
Weiter unten, unter RETURN WERTE:
RSA_set0_key(), RSA_set0_factors und RSA_set0_crt_params() return 1 bei Erfolg oder 0 im Fehlerfall.
Ich benutze RSA_set0_key für Schlüssel (N, E, D) Einstellung und RSA_private_encrypt ist in Ordnung, aber RSA_public_decrypt nicht immer
Es ist schwer zu sagen, was mit geht auf Verwendung von RSA_public_decrypt
. Vielleicht können Sie Code hinzufügen, den Rückgabewert angeben und den Wert ERR_get_err
angeben, wenn die Funktion fehlschlägt.
In der Zwischenzeit können Sie Ihr RSA-Objekt benötigen, um die erweiterten Parameter eines privaten Schlüssels zu haben, wie p
, q
, dp
, dq
und qInv
. Dies sind die CRT-Parameter (Chinese Remainder Theorem), und sie werden mit RSA_set0_crt_params
festgelegt. Siehe auch Unable to decrypt without Chinese Remainder Theorem factors? in der OpenSSL-Benutzer-Mailingliste.
Fehler wie? Wo ist dein Code? Wo ist die Fehlermeldung? –
Hinweis 'private_encrypt' und 'public_decrypt' sind wirklich keine Verschlüsselung, und (wie dokumentiert) kein Standard; Die Namen sind ein irreführendes historisches Relikt aus den 1990er Jahren. Das heißt, es funktioniert für mich in 1.1.0, und die offensichtliche Variante Einstellung n, e, d funktioniert direkt in 1.0.2 1.0.1 1.0.0 und 0.9.8. mcve? –