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 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