32 lines
680 B
Crystal
32 lines
680 B
Crystal
|
require "../spec_helper"
|
||
|
require "../../src/sodium/nonce"
|
||
|
|
||
|
zero = Bytes.new(Sodium::Nonce::NONCE_SIZE)
|
||
|
one = Bytes.new(Sodium::Nonce::NONCE_SIZE).dup
|
||
|
one[0] = 1_u8
|
||
|
|
||
|
describe Sodium::Nonce do
|
||
|
it "generates a random nonce" do
|
||
|
nonce = Sodium::Nonce.random
|
||
|
nonce.should_not eq zero
|
||
|
end
|
||
|
|
||
|
it "loads an existing nonce" do
|
||
|
nonce = Sodium::Nonce.new one
|
||
|
nonce.to_slice.should eq one
|
||
|
end
|
||
|
|
||
|
it "zero nonce with increment" do
|
||
|
nonce = Sodium::Nonce.zero
|
||
|
nonce.to_slice.should eq zero
|
||
|
|
||
|
nonce.used?.should be_false
|
||
|
nonce.used!
|
||
|
nonce.used?.should be_true
|
||
|
|
||
|
nonce.increment
|
||
|
nonce.to_slice.should eq one
|
||
|
nonce.used?.should be_false
|
||
|
end
|
||
|
end
|