hsmr 0.0.1 → 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|