理論的には、公開鍵、署名、および署名されたデータがあり、ハッシュ アルゴリズムがわかっている場合、データの署名を検証できるはずです。
これらのコンポーネントはすべてバイナリ形式です。この署名を検証する最も簡単な方法を知っている人はいますか? OpenSSL? パイソン?例は素晴らしいでしょう。コードを書かなくてもできる?
理論的には、公開鍵、署名、および署名されたデータがあり、ハッシュ アルゴリズムがわかっている場合、データの署名を検証できるはずです。
これらのコンポーネントはすべてバイナリ形式です。この署名を検証する最も簡単な方法を知っている人はいますか? OpenSSL? パイソン?例は素晴らしいでしょう。コードを書かなくてもできる?
Rubyでそれを行う方法は次のとおりです。
require 'openssl'
signature = File.read('/path/to/sig.der')
data = File.read('/path/to/data')
pub_key = File.read('/path/to/ecdsa_pub_key')
key = OpenSSL::PKey::EC.new(pub_key)
if key.dsa_verify_asn1(data, signature) == true
puts 'verified'
end
このコードでは、Ruby にリンクされた OpenSSL が楕円曲線をサポートするようにコンパイルされている必要があります。(Linux の Red Hat フレーバー ディストリビューションは、この要件を満たしていません)
興味がある場合: dsa_verify_asn1 は、OpenSSL API でECSDA_verify関数を使用します。