rasn1 0.6.8 → 0.7.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,6 +1,7 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RASN1
2
4
  module Types
3
-
4
5
  # ASN.1 sequence
5
6
  #
6
7
  # A sequence is a collection of another ASN.1 types.
@@ -25,6 +26,7 @@ module RASN1
25
26
  # seq.value # => String
26
27
  # @author Sylvain Daubert
27
28
  class Sequence < Constructed
29
+ # Sequence tag value
28
30
  TAG = 0x10
29
31
 
30
32
  # @see Base#initialize
@@ -35,7 +37,19 @@ module RASN1
35
37
 
36
38
  def initialize_copy(other)
37
39
  super
38
- @value = @value.map { |v| v.dup }
40
+ @value = @value.map(&:dup)
41
+ end
42
+
43
+ # Get element at index +idx+, or element of name +name+
44
+ # @param [Integer, String, Symbol] idx_or_name
45
+ # @return [Object]
46
+ def [](idx_or_name)
47
+ case idx_or_name
48
+ when Integer
49
+ @value[idx]
50
+ when String, Symbol
51
+ @value.find { |elt| elt.name == idx_or_name }
52
+ end
39
53
  end
40
54
 
41
55
  private
@@ -43,14 +57,14 @@ module RASN1
43
57
  def value_to_der
44
58
  case @value
45
59
  when Array
46
- @value.map { |element| element.to_der }.join
60
+ @value.map(&:to_der).join
47
61
  else
48
62
  @value.to_s
49
63
  end
50
64
  end
51
65
 
52
- def der_to_value(der, ber:false)
53
- if @value.is_a?(Array) and !@value.empty?
66
+ def der_to_value(der, ber: false)
67
+ if @value.is_a?(Array) && !@value.empty?
54
68
  nb_bytes = 0
55
69
  @value.each do |element|
56
70
  nb_bytes += element.parse!(der[nb_bytes..-1])
@@ -58,7 +72,7 @@ module RASN1
58
72
  else
59
73
  @value = der
60
74
  der.length
61
- end
75
+ end
62
76
  end
63
77
  end
64
78
  end
@@ -1,6 +1,7 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RASN1
2
4
  module Types
3
-
4
5
  # ASN.1 SEQUENCE OF
5
6
  #
6
7
  # A SEQUENCE OF is an array of one ASN.1 type.
@@ -45,6 +46,7 @@ module RASN1
45
46
  # seqof[0][:int].value # => 12
46
47
  # @author Sylvain Daubert
47
48
  class SequenceOf < Constructed
49
+ # SequenceOf tag value
48
50
  TAG = Sequence::TAG
49
51
 
50
52
  # @return [Class, Base]
@@ -68,7 +70,7 @@ module RASN1
68
70
  def initialize_copy(other)
69
71
  super
70
72
  @of_type = @of_type.dup
71
- @value = @value.map { |v| v.dup }
73
+ @value = @value.map(&:dup)
72
74
  end
73
75
 
74
76
  # Add an item to SEQUENCE OF
@@ -76,9 +78,11 @@ module RASN1
76
78
  def <<(obj)
77
79
  if of_type_class < Primitive
78
80
  raise ASN1Error, 'object to add should be an Array' unless obj.is_a?(Array)
81
+
79
82
  @value += obj.map { |item| @of_type.new(item) }
80
83
  elsif composed_of_type?
81
84
  raise ASN1Error, 'object to add should be an Array' unless obj.is_a?(Array)
85
+
82
86
  new_value = of_type_class.new
83
87
  @of_type.value.each_with_index do |type, i|
84
88
  type2 = type.dup
@@ -112,17 +116,15 @@ module RASN1
112
116
  end
113
117
 
114
118
  def inspect(level=0)
115
- str = ''
116
- str << ' ' * level if level > 0
117
- str << "#{@name} " unless @name.nil?
118
- level = level.abs
119
- str << "#{type}:\n"
120
- level += 1
119
+ str = common_inspect(level)
120
+ str << "\n"
121
+ level = level.abs + 1
121
122
  @value.each do |item|
122
123
  case item
123
124
  when Base, Model
124
- next if item.optional? and item.value.nil?
125
- str << "#{item.inspect(level)}"
125
+ next if item.optional? && item.value.nil?
126
+
127
+ str << item.inspect(level)
126
128
  str << "\n" unless str.end_with?("\n")
127
129
  else
128
130
  str << ' ' * level + "#{item.inspect}\n"
@@ -142,7 +144,7 @@ module RASN1
142
144
  end
143
145
 
144
146
  def value_to_der
145
- @value.map { |v| v.to_der }.join
147
+ @value.map(&:to_der).join
146
148
  end
147
149
 
148
150
  def der_to_value(der, ber:false)
@@ -1,6 +1,7 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RASN1
2
4
  module Types
3
-
4
5
  # ASN.1 set
5
6
  #
6
7
  # A set is a collection of another ASN.1 types.
@@ -20,6 +21,7 @@ module RASN1
20
21
  # ]
21
22
  # @author Sylvain Daubert
22
23
  class Set < Sequence
24
+ # Set tag value
23
25
  TAG = 0x11
24
26
  end
25
27
  end
@@ -1,9 +1,11 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RASN1
2
4
  module Types
3
-
4
5
  # ASN.1 SET OF
5
6
  # @author Sylvain Daubert
6
7
  class SetOf < SequenceOf
8
+ # SetOf tag value
7
9
  TAG = Set::TAG
8
10
 
9
11
  # A SET OF is encoded as a SET.
@@ -14,4 +16,3 @@ module RASN1
14
16
  end
15
17
  end
16
18
  end
17
-
@@ -1,8 +1,9 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'date'
2
4
 
3
5
  module RASN1
4
6
  module Types
5
-
6
7
  # ASN.1 UTCTime
7
8
  #
8
9
  # +{#value} of a +UtcTime+ should be a ruby Time.
@@ -17,6 +18,7 @@ module RASN1
17
18
  # not.
18
19
  # @author Sylvain Daubert
19
20
  class UtcTime < Primitive
21
+ # UtcTime tag value
20
22
  TAG = 23
21
23
 
22
24
  # Get ASN.1 type
@@ -26,11 +28,11 @@ module RASN1
26
28
  end
27
29
 
28
30
  private
29
-
31
+
30
32
  def value_to_der
31
33
  @value.getutc.strftime('%y%m%d%H%M%SZ')
32
34
  end
33
-
35
+
34
36
  def der_to_value(der, ber: false)
35
37
  format = case der.size
36
38
  when 11
@@ -1,9 +1,11 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RASN1
2
4
  module Types
3
-
4
5
  # ASN.1 UTF8 String
5
6
  # @author Sylvain Daubert
6
7
  class Utf8String < OctetString
8
+ # Utf8String tag value
7
9
  TAG = 12
8
10
 
9
11
  # Get ASN.1 type
@@ -13,12 +15,12 @@ module RASN1
13
15
  end
14
16
 
15
17
  private
16
-
18
+
17
19
  def value_to_der
18
20
  @value.to_s.force_encoding('UTF-8').force_encoding('BINARY')
19
21
  end
20
22
 
21
- def der_to_value(der, ber:false)
23
+ def der_to_value(der, ber: false)
22
24
  super
23
25
  @value.force_encoding('UTF-8')
24
26
  end
@@ -1,9 +1,11 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RASN1
2
4
  module Types
3
-
4
5
  # ASN.1 Visible String
5
6
  # @author Sylvain Daubert
6
7
  class VisibleString < IA5String
8
+ # VisibleString tag value
7
9
  TAG = 26
8
10
 
9
11
  # Get ASN.1 type
@@ -11,7 +13,6 @@ module RASN1
11
13
  def self.type
12
14
  'VisibleString'
13
15
  end
14
-
15
16
  end
16
17
  end
17
18
  end
data/lib/rasn1/version.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RASN1
2
- VERSION = '0.6.8'
4
+ VERSION = '0.7.0'
3
5
  end
data/rasn1.gemspec CHANGED
@@ -25,7 +25,7 @@ Gem::Specification.new do |spec|
25
25
  spec.required_ruby_version = '>= 2.3.0'
26
26
 
27
27
  spec.add_development_dependency 'yard', '~>0.9'
28
- spec.add_development_dependency 'bundler', '~> 1.13'
28
+ spec.add_development_dependency 'bundler', '~> 1.17.3'
29
29
  spec.add_development_dependency 'rake', '~> 10.0'
30
30
  spec.add_development_dependency 'rspec', '~> 3.0'
31
31
  spec.add_development_dependency 'simplecov', '~> 0.14'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rasn1
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.8
4
+ version: 0.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sylvain Daubert
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-11-11 00:00:00.000000000 Z
11
+ date: 2019-11-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: yard
@@ -30,14 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '1.13'
33
+ version: 1.17.3
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '1.13'
40
+ version: 1.17.3
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rake
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -93,6 +93,7 @@ files:
93
93
  - ".gitignore"
94
94
  - ".rubocop.yml"
95
95
  - ".travis.yml"
96
+ - Changelog.md
96
97
  - Gemfile
97
98
  - LICENSE
98
99
  - README.md
@@ -145,7 +146,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
145
146
  version: '0'
146
147
  requirements: []
147
148
  rubyforge_project:
148
- rubygems_version: 2.7.6
149
+ rubygems_version: 2.7.6.2
149
150
  signing_key:
150
151
  specification_version: 4
151
152
  summary: Ruby ASN.1 library