51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
|
# File 'lib/rbnacl/self_test.rb', line 51
def digital_signature_test
signing_key = SigningKey.new(vector(:sign_private))
verify_key = signing_key.verify_key
unless verify_key.to_s == vector(:sign_public)
raise SelfTestFailure, "failed to generate verify key correctly"
end
message = vector :sign_message
signature = signing_key.sign(message)
unless signature == vector(:sign_signature)
raise SelfTestFailure, "failed to generate correct signature"
end
unless verify_key.verify(signature, message)
raise SelfTestFailure, "failed to verify a valid signature"
end
begin
passed = false
bad_signature = signature[0, 63] + "0"
verify_key.verify(bad_signature, message)
rescue CryptoError
passed = true
ensure
passed || raise(SelfTestFailure, "failed to detect corrupt ciphertext")
end
end
|