hsmr 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/Gemfile +1 -7
- data/README.md +4 -12
- data/hsmr.gemspec +5 -5
- data/lib/hsmr.rb +9 -9
- data/lib/hsmr/version.rb +1 -1
- metadata +65 -74
- data/spec/hsmr_spec.rb +0 -181
- data/spec/spec_helper.rb +0 -12
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 16ecff7ec08fae9285e6038bdd71f86eb7cf45600dbf17f0d6b99223d2df0eb8
|
4
|
+
data.tar.gz: f9636e4e0b439f2f903d236e8cbaffa0ae094406fa91e9c355c6974430e50245
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 3970454fc8cf8d9a19eeacca7396176dc8d51ef5d27b2e14fbb0cb250a1195815ca6bfa5dc2b897c6e45d9e88726d803edbd524657fa72dc2323bfc4e0c70922
|
7
|
+
data.tar.gz: 4f4c6c3dbb310e28d5905dfa8023936221de885e0abf206e7bacc73d45a51445187defa7262aff5d6b0cb5c9ce7a7ad1c99d3daf8b8118d1b4e033db0650c85a
|
data/Gemfile
CHANGED
@@ -1,11 +1,5 @@
|
|
1
|
-
source "
|
1
|
+
source "https://rubygems.org"
|
2
2
|
|
3
3
|
# Specify your gem's dependencies in hsmr.gemspec
|
4
4
|
gemspec
|
5
5
|
|
6
|
-
#group :development do
|
7
|
-
# gem 'rb-fsevent', :require => false if RUBY_PLATFORM =~ /darwin/i
|
8
|
-
# gem 'growl', :require => false if RUBY_PLATFORM =~ /darwin/i
|
9
|
-
# gem 'guard-test'
|
10
|
-
# gem 'factory_girl'
|
11
|
-
#end
|
data/README.md
CHANGED
@@ -7,14 +7,12 @@ are implemented for your education or for testing purposes and should not be use
|
|
7
7
|
Installation
|
8
8
|
-------------
|
9
9
|
|
10
|
-
|
10
|
+
gem install hsmr
|
11
11
|
|
12
12
|
Usage
|
13
13
|
---------
|
14
14
|
|
15
|
-
require '
|
16
|
-
require './lib/key'
|
17
|
-
require './lib/component'
|
15
|
+
require 'hsmr'
|
18
16
|
|
19
17
|
# Create a Key
|
20
18
|
> key=HSMR::Key.new("4CA2161637D0133E5E151AEA45DA2A12")
|
@@ -56,12 +54,6 @@ Development
|
|
56
54
|
* Report issues on GitHub Issues.
|
57
55
|
* Pull requests are awesome! Please include test::unit tests
|
58
56
|
|
59
|
-
|
60
|
-
==========
|
57
|
+
License
|
61
58
|
|
62
|
-
|
63
|
-
|
64
|
-
Copyright
|
65
|
-
----------
|
66
|
-
|
67
|
-
Copyright (c) 2010 Dan Milne. See LICENSE for details.
|
59
|
+
The gem is available as open source under the terms of the MIT License.
|
data/hsmr.gemspec
CHANGED
@@ -8,10 +8,10 @@ Gem::Specification.new do |s|
|
|
8
8
|
s.authors = ["Dan Milne"]
|
9
9
|
s.email = ["d@nmilne.com"]
|
10
10
|
s.homepage = ""
|
11
|
+
s.homepage = 'https://github.com/dkam/hsmr'
|
11
12
|
s.summary = %q{HSM commands in Ruby}
|
12
13
|
s.description = %q{A collection of methods usually implemented in a HSM (Hardware Security Module)}
|
13
|
-
|
14
|
-
s.rubyforge_project = "hsmr"
|
14
|
+
s.license = 'MIT'
|
15
15
|
|
16
16
|
s.files = `git ls-files`.split("\n")
|
17
17
|
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
@@ -22,7 +22,7 @@ Gem::Specification.new do |s|
|
|
22
22
|
# s.add_development_dependency "rspec"
|
23
23
|
# s.add_runtime_dependency "rest-client"
|
24
24
|
|
25
|
-
s.add_development_dependency "rake"
|
26
|
-
s.add_development_dependency "guard-test"
|
27
|
-
s.add_development_dependency "
|
25
|
+
s.add_development_dependency "rake", '~> 13'
|
26
|
+
s.add_development_dependency "guard-test", "~> 2"
|
27
|
+
s.add_development_dependency "factory_bot", "~> 6"
|
28
28
|
end
|
data/lib/hsmr.rb
CHANGED
@@ -11,8 +11,8 @@ module HSMR
|
|
11
11
|
## Mixin functionality
|
12
12
|
|
13
13
|
def kcv()
|
14
|
-
des = OpenSSL::Cipher
|
15
|
-
des = OpenSSL::Cipher
|
14
|
+
des = OpenSSL::Cipher.new("des-cbc") if @key.length == 8
|
15
|
+
des = OpenSSL::Cipher.new("des-ede-cbc") if @key.length == 16
|
16
16
|
des.encrypt
|
17
17
|
des.key=@key
|
18
18
|
des.update("\x00"*8).unpack('H*').first[0...6].upcase
|
@@ -59,9 +59,9 @@ module HSMR
|
|
59
59
|
unless key.length == 8 || key.length == 16 || key.length ==24
|
60
60
|
raise TypeError, "key length should be 8, 16 or 24 bytes"
|
61
61
|
end
|
62
|
-
des = OpenSSL::Cipher
|
63
|
-
des = OpenSSL::Cipher
|
64
|
-
des = OpenSSL::Cipher
|
62
|
+
des = OpenSSL::Cipher.new("des-cbc") if key.length == 8
|
63
|
+
des = OpenSSL::Cipher.new("des-ede-cbc") if key.length == 16
|
64
|
+
des = OpenSSL::Cipher.new("des-ede3-cbc") if key.length == 24
|
65
65
|
|
66
66
|
des.encrypt
|
67
67
|
des.key=key.key
|
@@ -136,7 +136,7 @@ module HSMR
|
|
136
136
|
|
137
137
|
def self.encrypt_pin(key, pin)
|
138
138
|
@pin = pin.unpack('a2'*(pin.length/2)).map{|x| x.hex}.pack('c'*(pin.length/2))
|
139
|
-
des = OpenSSL::Cipher
|
139
|
+
des = OpenSSL::Cipher.new("des-ede")
|
140
140
|
des.encrypt
|
141
141
|
des.key=key.key
|
142
142
|
return des.update(@pin).unpack('H*').first.upcase
|
@@ -144,7 +144,7 @@ module HSMR
|
|
144
144
|
|
145
145
|
def self.decrypt_pin(key, pinblock)
|
146
146
|
@pinblock = pinblock.unpack('a2'*(pinblock.length/2)).map{|x| x.hex}.pack('c'*(pinblock.length/2))
|
147
|
-
des = OpenSSL::Cipher
|
147
|
+
des = OpenSSL::Cipher.new("des-ede")
|
148
148
|
des.decrypt
|
149
149
|
des.padding=0
|
150
150
|
des.key=key.key
|
@@ -158,7 +158,7 @@ module HSMR
|
|
158
158
|
validation_data = account.unpack('a2'*(account.length/2)).map{|x| x.hex}.pack('c'*(account.length/2))
|
159
159
|
|
160
160
|
#des = OpenSSL::Cipher::Cipher.new("des-ede-cbc")
|
161
|
-
des = OpenSSL::Cipher
|
161
|
+
des = OpenSSL::Cipher.new("des-cbc")
|
162
162
|
des.encrypt
|
163
163
|
des.key=key.key
|
164
164
|
return HSMR::decimalise(des.update(validation_data).unpack('H*').first, :ibm, dtable)[0...plength]
|
@@ -194,7 +194,7 @@ module HSMR
|
|
194
194
|
def self.pvv(key, account, pvki, pin)
|
195
195
|
tsp = account.to_s[4,11] + pvki.to_s + pin.to_s
|
196
196
|
@tsp = tsp.unpack('a2'*(tsp.length/2)).map{|x| x.hex}.pack('c'*(tsp.length/2))
|
197
|
-
des = OpenSSL::Cipher
|
197
|
+
des = OpenSSL::Cipher.new("des-ede")
|
198
198
|
des.encrypt
|
199
199
|
des.key=key.key
|
200
200
|
result = des.update(@tsp).unpack('H*').first.upcase
|
data/lib/hsmr/version.rb
CHANGED
metadata
CHANGED
@@ -1,62 +1,67 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: hsmr
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
version: 0.0.1
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.2
|
6
5
|
platform: ruby
|
7
|
-
authors:
|
6
|
+
authors:
|
8
7
|
- Dan Milne
|
9
|
-
autorequire:
|
8
|
+
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
- !ruby/object:Gem::Dependency
|
11
|
+
date: 2021-07-03 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
16
14
|
name: rake
|
17
|
-
requirement:
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
version: "0"
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '13'
|
23
20
|
type: :development
|
24
21
|
prerelease: false
|
25
|
-
version_requirements:
|
26
|
-
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '13'
|
27
|
+
- !ruby/object:Gem::Dependency
|
27
28
|
name: guard-test
|
28
|
-
requirement:
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
version: "0"
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '2'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
|
-
version_requirements:
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '2'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: factory_bot
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '6'
|
45
48
|
type: :development
|
46
49
|
prerelease: false
|
47
|
-
version_requirements:
|
48
|
-
|
49
|
-
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '6'
|
55
|
+
description: A collection of methods usually implemented in a HSM (Hardware Security
|
56
|
+
Module)
|
57
|
+
email:
|
50
58
|
- d@nmilne.com
|
51
59
|
executables: []
|
52
|
-
|
53
60
|
extensions: []
|
54
|
-
|
55
61
|
extra_rdoc_files: []
|
56
|
-
|
57
|
-
|
58
|
-
- .
|
59
|
-
- .travis.yml
|
62
|
+
files:
|
63
|
+
- ".gitignore"
|
64
|
+
- ".travis.yml"
|
60
65
|
- CHANGELOG.md
|
61
66
|
- Gemfile
|
62
67
|
- Gemfile.lock
|
@@ -69,45 +74,31 @@ files:
|
|
69
74
|
- lib/hsmr/component.rb
|
70
75
|
- lib/hsmr/key.rb
|
71
76
|
- lib/hsmr/version.rb
|
72
|
-
- spec/hsmr_spec.rb
|
73
|
-
- spec/spec_helper.rb
|
74
77
|
- test/hsmr_test.rb
|
75
78
|
- test/test_helper.rb
|
76
|
-
homepage:
|
77
|
-
licenses:
|
78
|
-
|
79
|
-
|
79
|
+
homepage: https://github.com/dkam/hsmr
|
80
|
+
licenses:
|
81
|
+
- MIT
|
82
|
+
metadata: {}
|
83
|
+
post_install_message:
|
80
84
|
rdoc_options: []
|
81
|
-
|
82
|
-
require_paths:
|
85
|
+
require_paths:
|
83
86
|
- lib
|
84
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
85
|
-
|
86
|
-
requirements:
|
87
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
88
|
+
requirements:
|
87
89
|
- - ">="
|
88
|
-
- !ruby/object:Gem::Version
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
version: "0"
|
93
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
94
|
-
none: false
|
95
|
-
requirements:
|
90
|
+
- !ruby/object:Gem::Version
|
91
|
+
version: '0'
|
92
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
96
94
|
- - ">="
|
97
|
-
- !ruby/object:Gem::Version
|
98
|
-
|
99
|
-
segments:
|
100
|
-
- 0
|
101
|
-
version: "0"
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
102
97
|
requirements: []
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
signing_key:
|
107
|
-
specification_version: 3
|
98
|
+
rubygems_version: 3.2.3
|
99
|
+
signing_key:
|
100
|
+
specification_version: 4
|
108
101
|
summary: HSM commands in Ruby
|
109
|
-
test_files:
|
110
|
-
- spec/hsmr_spec.rb
|
111
|
-
- spec/spec_helper.rb
|
102
|
+
test_files:
|
112
103
|
- test/hsmr_test.rb
|
113
104
|
- test/test_helper.rb
|
data/spec/hsmr_spec.rb
DELETED
@@ -1,181 +0,0 @@
|
|
1
|
-
require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
|
2
|
-
|
3
|
-
describe "Generate Component" do
|
4
|
-
it "should generate a component" do
|
5
|
-
component_1 = HSMR::Component.new(nil, HSMR::SINGLE)
|
6
|
-
component_2 = HSMR::Component.new(nil, HSMR::DOUBLE)
|
7
|
-
component_3 = HSMR::Component.new(nil, HSMR::TRIPLE)
|
8
|
-
|
9
|
-
component_1.length.should == 8
|
10
|
-
component_2.length.should == 16
|
11
|
-
component_3.length.should == 24
|
12
|
-
end
|
13
|
-
end
|
14
|
-
|
15
|
-
describe "Calculate component KCV" do
|
16
|
-
|
17
|
-
it "should calculate single length component KCV values" do
|
18
|
-
component_1 = HSMR::Component.new("6DBF C180 4A01 5BAD")
|
19
|
-
component_1.kcv.should == "029E60"
|
20
|
-
|
21
|
-
component_2 = HSMR::Component.new("5D80 0497 B319 8591")
|
22
|
-
component_2.kcv.should == "3B86C3"
|
23
|
-
|
24
|
-
component_3 = HSMR::Component.new("B0C7 7CDC 7354 97C7")
|
25
|
-
component_3.kcv.should == "7A77BC"
|
26
|
-
|
27
|
-
component_4 = HSMR::Component.new("DAE0 86FE D6EA 0BEA")
|
28
|
-
component_4.kcv.should == "2E6191"
|
29
|
-
|
30
|
-
component_5 = HSMR::Component.new("682C 8315 F4BF FBC1")
|
31
|
-
component_5.kcv.should == "62B336"
|
32
|
-
|
33
|
-
component_6 = HSMR::Component.new("5715 F289 04BC B62F")
|
34
|
-
component_6.kcv.should == "3CBA88"
|
35
|
-
|
36
|
-
component_7 = HSMR::Component.new("D0C4 29AE C4A8 02B5")
|
37
|
-
component_7.kcv.should == "33AF02"
|
38
|
-
|
39
|
-
component_8 = HSMR::Component.new("7049 D0F7 4A97 15B6")
|
40
|
-
component_8.kcv.should == "AC1399"
|
41
|
-
|
42
|
-
component_9 = HSMR::Component.new("BC91 D698 157A A4E5")
|
43
|
-
component_9.kcv.should == "295491"
|
44
|
-
|
45
|
-
component_10 = HSMR::Component.new("64AB 8568 7A0E 322F")
|
46
|
-
component_10.kcv.should == "D9F7B3"
|
47
|
-
end
|
48
|
-
|
49
|
-
it "should calculate double length component KCV values" do
|
50
|
-
component_1 = HSMR::Component.new("ADE3 9B38 0DBC DF38 AE02 AECE 64B3 4373")
|
51
|
-
component_1.kcv.should == "3002D5"
|
52
|
-
|
53
|
-
component_2 = HSMR::Component.new("B64A EF86 460D DF5B 57B3 D53D AD37 52A1")
|
54
|
-
component_2.kcv.should == "1F7C07"
|
55
|
-
|
56
|
-
component_3 = HSMR::Component.new("5B89 6E29 76EC 9745 15B5 238C 8CFE 3D23")
|
57
|
-
component_3.kcv.should == "DE78F2"
|
58
|
-
|
59
|
-
component_4 = HSMR::Component.new("5E61 CB20 D540 1FC7 58EC CDC8 B558 E9B9")
|
60
|
-
component_4.kcv.should == "FED957"
|
61
|
-
|
62
|
-
component_5 = HSMR::Component.new("23DF CEB9 BF94 ADA8 91E9 580B 8C8F 5BEF")
|
63
|
-
component_5.kcv.should == "902085"
|
64
|
-
|
65
|
-
component_6 = HSMR::Component.new("DFEF 61C8 2037 3DA4 CE9B 92CD 89E9 B334")
|
66
|
-
component_6.kcv.should == "E45EB7"
|
67
|
-
|
68
|
-
component_7 = HSMR::Component.new("6746 9E4C FE83 F831 F23E 9D9E 9D9E 9DB3")
|
69
|
-
component_7.kcv.should == "813B7B"
|
70
|
-
|
71
|
-
component_8 = HSMR::Component.new("23E5 496E DF94 0BD5 9734 B07A BF26 B9E6")
|
72
|
-
component_8.kcv.should == "E7C48F"
|
73
|
-
|
74
|
-
component_9 = HSMR::Component.new("974F 26BC CB2A ECD5 434F 1CDC 64DF A275")
|
75
|
-
component_9.kcv.should == "E27250"
|
76
|
-
|
77
|
-
component_10 = HSMR::Component.new("E57A DF5B CEA7 F42A DFD9 E554 07A2 F891")
|
78
|
-
component_10.kcv.should == "50E3F8"
|
79
|
-
end
|
80
|
-
end
|
81
|
-
|
82
|
-
describe "Calculate key KCV" do
|
83
|
-
|
84
|
-
it "should calculate single length key KCV values" do
|
85
|
-
key_1 = HSMR::Key.new("6DBF C180 4A01 5BAD")
|
86
|
-
key_1.kcv.should == "029E60"
|
87
|
-
|
88
|
-
key_2 = HSMR::Key.new("5D80 0497 B319 8591")
|
89
|
-
key_2.kcv.should == "3B86C3"
|
90
|
-
|
91
|
-
key_3 = HSMR::Key.new("B0C7 7CDC 7354 97C7")
|
92
|
-
key_3.kcv.should == "7A77BC"
|
93
|
-
|
94
|
-
key_4 = HSMR::Key.new("DAE0 86FE D6EA 0BEA")
|
95
|
-
key_4.kcv.should == "2E6191"
|
96
|
-
|
97
|
-
key_5 = HSMR::Key.new("682C 8315 F4BF FBC1")
|
98
|
-
key_5.kcv.should == "62B336"
|
99
|
-
|
100
|
-
key_6 = HSMR::Key.new("5715 F289 04BC B62F")
|
101
|
-
key_6.kcv.should == "3CBA88"
|
102
|
-
|
103
|
-
key_7 = HSMR::Key.new("D0C4 29AE C4A8 02B5")
|
104
|
-
key_7.kcv.should == "33AF02"
|
105
|
-
|
106
|
-
key_8 = HSMR::Key.new("7049 D0F7 4A97 15B6")
|
107
|
-
key_8.kcv.should == "AC1399"
|
108
|
-
|
109
|
-
key_9 = HSMR::Key.new("BC91 D698 157A A4E5")
|
110
|
-
key_9.kcv.should == "295491"
|
111
|
-
|
112
|
-
key_10 = HSMR::Key.new("64AB 8568 7A0E 322F")
|
113
|
-
key_10.kcv.should == "D9F7B3"
|
114
|
-
end
|
115
|
-
it "should calculate double length key KCV values" do
|
116
|
-
key_1 = HSMR::Key.new("ADE3 9B38 0DBC DF38 AE02 AECE 64B3 4373")
|
117
|
-
key_1.kcv.should == "3002D5"
|
118
|
-
|
119
|
-
key_2 = HSMR::Key.new("B64A EF86 460D DF5B 57B3 D53D AD37 52A1")
|
120
|
-
key_2.kcv.should == "1F7C07"
|
121
|
-
|
122
|
-
key_3 = HSMR::Key.new("5B89 6E29 76EC 9745 15B5 238C 8CFE 3D23")
|
123
|
-
key_3.kcv.should == "DE78F2"
|
124
|
-
|
125
|
-
key_4 = HSMR::Key.new("5E61 CB20 D540 1FC7 58EC CDC8 B558 E9B9")
|
126
|
-
key_4.kcv.should == "FED957"
|
127
|
-
|
128
|
-
key_5 = HSMR::Key.new("23DF CEB9 BF94 ADA8 91E9 580B 8C8F 5BEF")
|
129
|
-
key_5.kcv.should == "902085"
|
130
|
-
|
131
|
-
key_6 = HSMR::Key.new("DFEF 61C8 2037 3DA4 CE9B 92CD 89E9 B334")
|
132
|
-
key_6.kcv.should == "E45EB7"
|
133
|
-
|
134
|
-
key_7 = HSMR::Key.new("6746 9E4C FE83 F831 F23E 9D9E 9D9E 9DB3")
|
135
|
-
key_7.kcv.should == "813B7B"
|
136
|
-
|
137
|
-
key_8 = HSMR::Key.new("23E5 496E DF94 0BD5 9734 B07A BF26 B9E6")
|
138
|
-
key_8.kcv.should == "E7C48F"
|
139
|
-
|
140
|
-
key_9 = HSMR::Key.new("974F 26BC CB2A ECD5 434F 1CDC 64DF A275")
|
141
|
-
key_9.kcv.should == "E27250"
|
142
|
-
|
143
|
-
key_10 = HSMR::Key.new("E57A DF5B CEA7 F42A DFD9 E554 07A2 F891")
|
144
|
-
key_10.kcv.should == "50E3F8"
|
145
|
-
end
|
146
|
-
end
|
147
|
-
|
148
|
-
describe "Calculate parity" do
|
149
|
-
it "should detect odd_parity in a key" do
|
150
|
-
odd_key = HSMR::Key.new("41A2AC14A90C583741A2AC14A90C5837")
|
151
|
-
odd_key.odd_parity?.should == false
|
152
|
-
end
|
153
|
-
|
154
|
-
it "should set double length key parity to odd" do
|
155
|
-
odd_key = HSMR::Key.new("41A2AC14A90C583741A2AC14A90C5837")
|
156
|
-
|
157
|
-
odd_key.set_odd_parity
|
158
|
-
|
159
|
-
even_key = HSMR::Key.new("40A2AD15A80D583740A2AD15A80D5837")
|
160
|
-
|
161
|
-
odd_key.key.should == even_key.key
|
162
|
-
|
163
|
-
end
|
164
|
-
|
165
|
-
it "should detect odd_parity in a component" do
|
166
|
-
odd_component = HSMR::Component.new("41A2AC14A90C583741A2AC14A90C5837")
|
167
|
-
odd_component.odd_parity?.should == false
|
168
|
-
end
|
169
|
-
|
170
|
-
it "should set double length component parity to odd" do
|
171
|
-
odd_component = HSMR::Component.new("41A2AC14A90C583741A2AC14A90C5837")
|
172
|
-
|
173
|
-
odd_component.set_odd_parity
|
174
|
-
|
175
|
-
even_component = HSMR::Component.new("40A2AD15A80D583740A2AD15A80D5837")
|
176
|
-
|
177
|
-
odd_component.component.should == even_component.component
|
178
|
-
|
179
|
-
end
|
180
|
-
|
181
|
-
end
|
data/spec/spec_helper.rb
DELETED
@@ -1,12 +0,0 @@
|
|
1
|
-
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
2
|
-
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
3
|
-
require 'rspec'
|
4
|
-
require 'hsmr'
|
5
|
-
|
6
|
-
# Requires supporting files with custom matchers and macros, etc,
|
7
|
-
# in ./support/ and its subdirectories.
|
8
|
-
Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
|
9
|
-
|
10
|
-
RSpec.configure do |config|
|
11
|
-
|
12
|
-
end
|