Last active
January 2, 2016 09:29
-
-
Save sabril/8283602 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# derived from http://h2np.net/tips/wiki/index.php?RubyOpenSSLDigitalSignatureSample | |
require 'openssl' | |
require 'base64' | |
include OpenSSL | |
group_name = 'secp160k1' | |
message = 'test payload aa' | |
puts "=== Generate Key ===" | |
key = PKey::EC.new(group_name) | |
key = key.generate_key | |
#puts key.to_text | |
puts "Private Key: #{key.private_key.to_bn}" | |
puts "Public Key: #{key.public_key.to_bn}" | |
# payload set to base 64 format | |
digest = Digest::SHA512.digest(message) | |
# digest | |
puts "Base64 format of Payload: #{Base64.encode64 digest}" | |
signature = key.dsa_sign_asn1 digest | |
puts "Signature: #{Base64.encode64 signature}" | |
puts "\n\n\n=== Verification ===" | |
group = PKey::EC::Group.new(group_name) | |
# generate base on public key | |
point = PKey::EC::Point.new(group, key.public_key.to_bn) | |
verifier = PKey::EC.new(group) | |
#verifier = key | |
verifier.private_key = nil # we don't know the private key | |
verifier.public_key = point | |
#puts 'verify key' | |
puts "Verify using public key: #{verifier.public_key.to_bn}" | |
puts "Verify Result: #{verifier.dsa_verify_asn1(digest, signature).inspect}" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment