Permalink
Browse files

RandomNonceBox now reports primitive used too

Also, specs updated to use TestVectors
  • Loading branch information...
1 parent 96fa188 commit 658be946992645792e1dc7b468d0aa810a7b81d6 @namelessjon namelessjon committed Mar 13, 2013
Showing with 22 additions and 31 deletions.
  1. +7 −0 lib/rbnacl/random_nonce_box.rb
  2. +11 −31 spec/rbnacl/random_nonce_box_spec.rb
  3. +4 −0 spec/spec_helper.rb
@@ -62,6 +62,13 @@ def self.from_keypair(private_key, public_key)
new(Box.new(private_key, public_key))
end
+ # Returns the primitive of the underlying box
+ #
+ # @return [Symbol] The primitive of the underlying box
+ def primitive
+ @box.primitive
+ end
+
# Encrypts the message with a random nonce
#
# Encrypts the message with a random nonce, then returns the ciphertext with
@@ -2,13 +2,10 @@
require 'spec_helper'
describe Crypto::RandomNonceBox do
- let (:secret_key) {
- [0x1b,0x27,0x55,0x64,0x73,0xe9,0x85,0xd4,0x62,0xcd,0x51,0x19,0x7a,0x9a,0x46,0xc7,
- 0x60,0x09,0x54,0x9e,0xac,0x64,0x74,0xf2,0x06,0xc4,0xee,0x08,0x44,0xf6,0x83,0x89].pack('c*')
- } # from the nacl distribution
+ let (:secret_key) { test_vector :secret_key }
let(:secret_box) { Crypto::SecretBox.new(secret_key) }
- let (:alicepk) { "\x85 \xF0\t\x890\xA7Tt\x8B}\xDC\xB4>\xF7Z\r\xBF:\r&8\x1A\xF4\xEB\xA4\xA9\x8E\xAA\x9BNj" } # from the nacl distribution
- let (:bobsk) { "]\xAB\b~bJ\x8AKy\xE1\x7F\x8B\x83\x80\x0E\xE6o;\xB1)&\x18\xB6\xFD\x1C/\x8B'\xFF\x88\xE0\xEB" } # from the nacl distribution
+ let (:alicepk) { test_vector :alice_public }
+ let (:bobsk) { test_vector :bob_private }
context "instantiation" do
it "can be instantiated from an already existing box" do
@@ -32,31 +29,10 @@
context "cryptography" do
- let(:nonce) { "iin\xE9U\xB6+s\xCDb\xBD\xA8u\xFCs\xD6\x82\x19\xE0\x03kz\v7" } # from nacl distribution
- let(:message) { # from nacl distribution
- [0xbe,0x07,0x5f,0xc5,0x3c,0x81,0xf2,0xd5,0xcf,0x14,0x13,0x16,0xeb,0xeb,0x0c,0x7b,
- 0x52,0x28,0xc5,0x2a,0x4c,0x62,0xcb,0xd4,0x4b,0x66,0x84,0x9b,0x64,0x24,0x4f,0xfc,
- 0xe5,0xec,0xba,0xaf,0x33,0xbd,0x75,0x1a,0x1a,0xc7,0x28,0xd4,0x5e,0x6c,0x61,0x29,
- 0x6c,0xdc,0x3c,0x01,0x23,0x35,0x61,0xf4,0x1d,0xb6,0x6c,0xce,0x31,0x4a,0xdb,0x31,
- 0x0e,0x3b,0xe8,0x25,0x0c,0x46,0xf0,0x6d,0xce,0xea,0x3a,0x7f,0xa1,0x34,0x80,0x57,
- 0xe2,0xf6,0x55,0x6a,0xd6,0xb1,0x31,0x8a,0x02,0x4a,0x83,0x8f,0x21,0xaf,0x1f,0xde,
- 0x04,0x89,0x77,0xeb,0x48,0xf5,0x9f,0xfd,0x49,0x24,0xca,0x1c,0x60,0x90,0x2e,0x52,
- 0xf0,0xa0,0x89,0xbc,0x76,0x89,0x70,0x40,0xe0,0x82,0xf9,0x37,0x76,0x38,0x48,0x64,
- 0x5e,0x07,0x05].pack('c*')
- }
- let(:ciphertext) { # from nacl distribution
- [0xf3,0xff,0xc7,0x70,0x3f,0x94,0x00,0xe5,0x2a,0x7d,0xfb,0x4b,0x3d,0x33,0x05,0xd9,
- 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(:random_box) { Crypto::RandomNonceBox.from_keypair(alicepk, bobsk) }
+ let(:nonce) { test_vector :box_nonce }
+ let(:message) { test_vector :box_message }
+ let(:ciphertext) { test_vector :box_ciphertext }
+ let(:random_box) { Crypto::RandomNonceBox.new(secret_box) }
let(:enciphered_message) { random_box.box(message) }
let(:enciphered_message_hex) { random_box.box(message, :hex) }
@@ -74,5 +50,9 @@
it "can roundtrip a message as hex" do
random_box.open(enciphered_message_hex, :hex).should eql message
end
+
+ it "reports the box's underlying primitive" do
+ random_box.primitive.should be secret_box.primitive
+ end
end
end
View
@@ -12,3 +12,7 @@
def hex2bytes(hex)
Crypto::Encoder[:hex].decode(hex)
end
+
+def test_vector(name)
+ hex2bytes(Crypto::TestVectors[name])
+end

0 comments on commit 658be94

Please sign in to comment.