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 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 "http://rubygems.org"
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
- One day I'll learn how to make gems. Until then, git clone is the only way to use this softawre.
10
+ gem install hsmr
11
11
 
12
12
  Usage
13
13
  ---------
14
14
 
15
- require './lib/hsmr'
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
- Author
60
- ==========
57
+ License
61
58
 
62
- Dan Milne, http://da.nmilne.com, http://booko.com.au
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 "factory_girl"
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::Cipher.new("des-cbc") if @key.length == 8
15
- des = OpenSSL::Cipher::Cipher.new("des-ede-cbc") if @key.length == 16
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::Cipher.new("des-cbc") if key.length == 8
63
- des = OpenSSL::Cipher::Cipher.new("des-ede-cbc") if key.length == 16
64
- des = OpenSSL::Cipher::Cipher.new("des-ede3-cbc") if key.length == 24
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::Cipher.new("des-ede")
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::Cipher.new("des-ede")
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::Cipher.new("des-cbc")
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::Cipher.new("des-ede")
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
@@ -1,3 +1,3 @@
1
1
  module HSMR
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
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
- prerelease:
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
- date: 2012-01-15 00:00:00 Z
14
- dependencies:
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: &id001 !ruby/object:Gem::Requirement
18
- none: false
19
- requirements:
20
- - - ">="
21
- - !ruby/object:Gem::Version
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: *id001
26
- - !ruby/object:Gem::Dependency
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: &id002 !ruby/object:Gem::Requirement
29
- none: false
30
- requirements:
31
- - - ">="
32
- - !ruby/object:Gem::Version
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: *id002
37
- - !ruby/object:Gem::Dependency
38
- name: factory_girl
39
- requirement: &id003 !ruby/object:Gem::Requirement
40
- none: false
41
- requirements:
42
- - - ">="
43
- - !ruby/object:Gem::Version
44
- version: "0"
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: *id003
48
- description: A collection of methods usually implemented in a HSM (Hardware Security Module)
49
- email:
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
- files:
58
- - .gitignore
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
- post_install_message:
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
- none: false
86
- requirements:
87
+ required_ruby_version: !ruby/object:Gem::Requirement
88
+ requirements:
87
89
  - - ">="
88
- - !ruby/object:Gem::Version
89
- hash: -754850866914746297
90
- segments:
91
- - 0
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
- hash: -754850866914746297
99
- segments:
100
- - 0
101
- version: "0"
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
102
97
  requirements: []
103
-
104
- rubyforge_project: hsmr
105
- rubygems_version: 1.8.8
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