Skip to content

Commit

Permalink
Update specs for authenticators
Browse files Browse the repository at this point in the history
This reflects both the use of the test vectors and makes sure that all
authenticator specs are green across the board.
  • Loading branch information
namelessjon committed Feb 15, 2013
1 parent 6907245 commit 6dfd790
Show file tree
Hide file tree
Showing 4 changed files with 14 additions and 44 deletions.
8 changes: 1 addition & 7 deletions spec/rbnacl/auth/hmac_sha256_spec.rb
@@ -1,13 +1,7 @@
require 'spec_helper'

describe Crypto::Auth::HmacSha256 do
# From RFC4231 (https://tools.ietf.org/html/rfc4231)
let(:key) { "Jefe" }
let(:message) { "what do ya want for nothing?" }
let(:tag) {
[0x5b,0xdc,0xc1,0x46,0xbf,0x60,0x75,0x4e,0x6a,0x04,0x24,0x26,0x08,0x95,0x75,0xc7,
0x5a,0x00,0x3f,0x08,0x9d,0x27,0x39,0x83,0x9d,0xec,0x58,0xb9,0x64,0xec,0x38,0x43].pack("c*")
}
let(:hex_tag) { Crypto::TestVectors[:auth_hmacsha256] }

include_examples "authenticator"
end
9 changes: 2 additions & 7 deletions spec/rbnacl/auth/hmac_sha512256_spec.rb
@@ -1,13 +1,8 @@
require 'spec_helper'

describe Crypto::Auth::HmacSha512256 do
# From RFC4231 (https://tools.ietf.org/html/rfc4231)
let(:key) { "Jefe" }
let(:message) { "what do ya want for nothing?" }
let(:tag) {
[0x16,0x4b,0x7a,0x7b,0xfc,0xf8,0x19,0xe2,0xe3,0x95,0xfb,0xe7,0x3b,0x56,0xe0,0xa3,
0x87,0xbd,0x64,0x22,0x2e,0x83,0x1f,0xd6,0x10,0x27,0x0c,0xd7,0xea,0x25,0x05,0x54].pack("c*")
}
let(:hex_tag) { Crypto::TestVectors[:auth_hmacsha512256] }


include_examples "authenticator"
end
25 changes: 1 addition & 24 deletions spec/rbnacl/auth/one_time_spec.rb
@@ -1,30 +1,7 @@
require 'spec_helper'

describe Crypto::Auth::OneTime do
let(:key) {
[0xee,0xa6,0xa7,0x25,0x1c,0x1e,0x72,0x91,0x6d,0x11,0xc2,0xcb,0x21,0x4d,0x3c,0x25,
0x25,0x39,0x12,0x1d,0x8e,0x23,0x4e,0x65,0x2d,0x65,0x1f,0xa4,0xc8,0xcf,0xf8,0x80].pack('c*')
}
let(:message) {
[0x8e,0x99,0x3b,0x9f,0x48,0x68,0x12,0x73,0xc2,0x96,0x50,0xba,0x32,0xfc,0x76,0xce,
0x48,0x33,0x2e,0xa7,0x16,0x4d,0x96,0xa4,0x47,0x6f,0xb8,0xc5,0x31,0xa1,0x18,0x6a,
0xc0,0xdf,0xc1,0x7c,0x98,0xdc,0xe8,0x7b,0x4d,0xa7,0xf0,0x11,0xec,0x48,0xc9,0x72,
0x71,0xd2,0xc2,0x0f,0x9b,0x92,0x8f,0xe2,0x27,0x0d,0x6f,0xb8,0x63,0xd5,0x17,0x38,
0xb4,0x8e,0xee,0xe3,0x14,0xa7,0xcc,0x8a,0xb9,0x32,0x16,0x45,0x48,0xe5,0x26,0xae,
0x90,0x22,0x43,0x68,0x51,0x7a,0xcf,0xea,0xbd,0x6b,0xb3,0x73,0x2b,0xc0,0xe9,0xda,
0x99,0x83,0x2b,0x61,0xca,0x01,0xb6,0xde,0x56,0x24,0x4a,0x9e,0x88,0xd5,0xf9,0xb3,
0x79,0x73,0xf6,0x22,0xa4,0x3d,0x14,0xa6,0x59,0x9b,0x1f,0x65,0x4c,0xb4,0x5a,0x74,
0xe3,0x55,0xa5].pack('c*')
}
let(:tag) {
[0xf3,0xff,0xc7,0x70,0x3f,0x94,0x00,0xe5,0x2a,0x7d,0xfb,0x4b,0x3d,0x33,0x05,0xd9].pack('c*')
}
let(:hex_tag) { Crypto::TestVectors[:auth_onetime] }

context ".new" do
it "raises on a key which is too short" do
expect { described_class.new(key[0, key.bytesize - 2]) }.to raise_error(ArgumentError)
end
end

include_examples "authenticator"
end
16 changes: 10 additions & 6 deletions spec/shared/authenticator.rb
@@ -1,4 +1,9 @@
shared_examples "authenticator" do
let (:hex_key) { Crypto::TestVectors[:auth_key] }
let (:key) { Crypto::Encoder[:hex].decode(hex_key) }
let (:message) { Crypto::Encoder[:hex].decode(Crypto::TestVectors[:auth_message]) }
let(:tag) { Crypto::Encoder[:hex].decode(hex_tag) }

context ".new" do
it "accepts a key" do
expect { described_class.new(key) }.to_not raise_error(ArgumentError)
Expand Down Expand Up @@ -62,15 +67,14 @@

context "Instance methods" do
let(:authenticator) { described_class.new(key) }
let(:hex) { Crypto::Encoder[:hex].encode(tag) }

context "#auth" do
it "produces an authenticator" do
authenticator.auth(message).should eq tag
end

it "produces a hex encoded authenticator" do
authenticator.auth(message, :hex).should eq hex
authenticator.auth(message, :hex).should eq hex_tag
end
end

Expand All @@ -92,16 +96,16 @@

context "hex" do
it "verifies an hexencoded authenticator" do
authenticator.verify(message, hex, :hex).should be true
authenticator.verify(message, hex_tag, :hex).should be true
end
it "fails to validate an invalid authenticator" do
authenticator.verify(message+"\0", hex , :hex).should be false
authenticator.verify(message+"\0", hex_tag , :hex).should be false
end
it "fails to validate a short authenticator" do
authenticator.verify( message, hex[0,hex.bytesize - 2], :hex).should be false
authenticator.verify( message, hex_tag[0,hex_tag.bytesize - 2], :hex).should be false
end
it "fails to validate a long authenticator" do
authenticator.verify(message, hex+"00", :hex).should be false
authenticator.verify(message, hex_tag+"00", :hex).should be false
end
end
end
Expand Down

0 comments on commit 6dfd790

Please sign in to comment.