OpenSSL (ab ssl
Mac OS X Version 10.11.6) und Secp256k1 (aus dem Bitcoin-Core- Repository) scheinen sich in ihren Implementierungen von ECDSA zu unterscheiden. Ich habe Probleme mit diesen Unterschieden und möchte sicherstellen, dass sie tatsächlich existieren, und wenn ja, wie ich die Unterschiede in Einklang bringen kann.
Wenn ich beispielsweise OpenSSL verwende, können die wiederherstellbaren Signaturen, die ich erhalte, mit einem beliebigen Byte enden. Aus dieser Zeile in Secp256k1 geht jedoch hervor, dass das 65
te Byte (dh das letzte Byte) zwischen 0
und 4
einschließlich liegen muss.
Wenn dies der Fall ist, warum lässt OpenSSL dann zu, dass das letzte Byte, das anscheinend als bezeichnet rec_id
wird, irgendeinen Wert hat?
Der Code, auf den Sie sich in libsecp256k1 beziehen, ist nicht für ECDSA.
Es implementiert die benutzerdefinierten kompakten Signaturen, die Bitcoin Core zum Signieren und Verifizieren von Nachrichten verwendet.
Der normale ECDSA-Code in libsecp256k1 sollte in der Akzeptanz mit dem in OpenSSL identisch sein (abgesehen von der Tatsache, dass er standardmäßig nur Low-s-Signaturen akzeptiert und erzeugt, um das Formbarkeitspotenzial zu verringern).
Cisplatin
secp256k1_schnorr.h
ich den Header wirklich verwenden?Pieter Wuille
Cisplatin
Pieter Wuille
Cisplatin
Pieter Wuille