ed25519 署名方式の既存の実装を調べているときに、donna の実装 (ここにあります) は、スーパーコップの実装 (ここにあります) では検証できない署名を生成しますが、スーパーコップの署名は donna の実装によって検証できることがわかりました。おそらく同じ署名スキームの2つの実装が部分的に互換性のある署名のみを生成する理由を誰かが説明できますか? 私は何が欠けていますか?これが私が何を意味するかを示す例です:
secret key = 50f26a6d0e454337554274d703033c21a06fecfcb0457b15214e41ea3228ac51e2b9f0ca0f6510cfdd24325ac6676cdd98a9484336ba36c876fd93aa439d8b72
public key = eddaef2fab3d1412ea1f2517b5a50439c28c27d6aefafce38f9290c17e1e7d56
donna signature = f4b79662b1973be8774c5d23044fe4b25858e7c362923e1fc99cc98e89e099c3f574dca3e47d7a131b43860fabc34b6764ccabb4f9f21b6cae54be5fc8193103
//not verifiable by supercop
supercop signature = 2f0ae6396d4d72fb47c12df6560747f20dc675e0b2d7e711caf68a03ced9309b9abd736cb204e789b95c2f08e0be4254ce69974a4064e40ce7094e288b7cbf03
//verifiable by donna
上記の結果を得るために、ed25119-donnaおよびsupercopライブラリのed25519_sign()を使用しました (両方のライブラリで同じ名前が付けられています)。
署名を確認するために、ed25519 -donnaのed25519_sign_open()とsupercopの ed25519_verify ( )を使用しました。