Skip to content

Instantly share code, notes, and snippets.

@hvardhanx
Created January 17, 2017 07:51
Show Gist options
  • Save hvardhanx/cda0b4c66c915bdad4a5fe006ed3f0eb to your computer and use it in GitHub Desktop.
Save hvardhanx/cda0b4c66c915bdad4a5fe006ed3f0eb to your computer and use it in GitHub Desktop.
DSA Testing
def test_dsa
p = 718821195410015244146859624870715296017125527913000
434010387577240100831644441209194543573159763837454
2374929457672178957081124632837356913990200866056699
q = 957032439192465935099784319494405376402293318491
g = 122928973717064636255205666162891733518376475981809
749897454444301389338825906076467196186192907631719
698166056821519884939865041993585844526937010746285
y = 123575618358346541478907331350272705707564117251418
193873117202182514955196002970859605710210406339506
3907739571546165975727369183495540798749742124846271
algo = OpenSSL::ASN1::ObjectId.new('DSA')
params = OpenSSL::ASN1::Sequence.new
([OpenSSL::ASN1::Integer.new(p),
OpenSSL::ASN1::Integer.new(q),
OpenSSL::ASN1::Integer.new(g)])
algo_id = OpenSSL::ASN1::Sequence.new ([algo, params])
pub_key = OpenSSL::ASN1::Integer.new(y)
seq = OpenSSL::ASN1::Sequence.new([algo_id,
OpenSSL::ASN1::BitString.new(pub_key.to_der)])
key = OpenSSL::PKey::DSA.new(seq.to_der)
assert(key.public?)
assert(!key.private?)
assert_equal(p, key.p)
assert_equal(q, key.q)
assert_equal(g, key.g)
assert_equal(y, key.pub_key)
assert_equal(nil, key.priv_key)
assert_equal([], OpenSSL.errors)
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment