crypto-secret.cr/spec/not_spec.cr

43 lines
1.1 KiB
Crystal
Raw Normal View History

2021-06-13 01:04:49 +02:00
require "./spec_helper"
2021-06-13 02:42:07 +02:00
require "../src/crypto-secret/not"
2021-06-13 01:04:49 +02:00
describe Crypto::Secret::Not do
it "works" do
ksize = 32
2021-06-13 21:52:05 +02:00
key = Bytes.new ksize
key[1] = 1_u8
secret1 = Crypto::Secret::Not.copy_from key
secret1.readonly { |s| s.should eq key }
2021-06-13 21:52:05 +02:00
secret2 = Crypto::Secret::Not.copy_from key
2021-06-13 21:52:05 +02:00
(secret1 == secret2).should be_true
secret1.readonly do |s1|
secret2.readonly do |s2|
2021-06-14 03:54:45 +02:00
(s1 == s2).should be_true
end
end
2021-06-13 01:04:49 +02:00
end
2021-06-14 20:15:48 +02:00
2021-06-15 01:54:29 +02:00
it "bytesize" do
secret = Crypto::Secret::Not.new 5
secret.bytesize.should eq 5
secret.readonly { |s| s.bytesize.should eq 5 }
2021-06-15 01:54:29 +02:00
end
it "doesn't leak key material when inspecting" do
2021-06-14 20:15:48 +02:00
secret = Crypto::Secret::Not.new 5
secret.to_s.should match /\(\*\*\*SECRET\*\*\*\)$/
secret.inspect.should match /\(\*\*\*SECRET\*\*\*\)$/
secret.to_s.should_not match /Bytes|Slice/
secret.inspect.should_not match /Bytes|Slice/
end
2021-06-15 01:50:32 +02:00
it "returns a random secret" do
secret1 = Crypto::Secret::Not.new 8
secret2 = Crypto::Secret::Not.random 8
secret1.should_not eq secret2
end
2021-06-13 01:04:49 +02:00
end