funky-tlv 0.2.0 → 0.2.1

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 581cd5ebf7ff938eddcef30ffcc2db896e9a3ede
4
- data.tar.gz: 696ee6d6b27ec8e075085cc46d9bbbe7ad091e0a
3
+ metadata.gz: 93019133102af667ae6fc14e50a6c51b9e888cc6
4
+ data.tar.gz: 7d8bb9f83888c539991cd61d8383fb292bed9c55
5
5
  SHA512:
6
- metadata.gz: e94b97b4592560c4fc96ca0e69051f7953b878abc0fa99466bfdd30c11f662e1fadd859f435f68e1e69ccdbdf2eca3c057114ca6ead00406bd844a6c05b43600
7
- data.tar.gz: 7576be5935ec9fd8c7bd9c8ff04775112a43d845183209521c107e99ee42750d76be048b5d0206d48ed3998cb280a292f841574dd9a7115d6ac2df8a4dc5f5bc
6
+ metadata.gz: 755f71facb41a6c46daa562eb083e4388e0c9fdeb5fc0e018057c05df3412521b9b2f75eaf215dc0c4a8737dabc57e44ce7644f3b02a764e2b45840e3f0a3b4d
7
+ data.tar.gz: d4a803c627e37d57f217d63e3bd108e06058f4edc9967a4a4d8c8d1e9ca56828b409a17b61658b3ac1c5f17d5562716c1db006bb0de412f778b5e05ae0e5c6ba
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- funky-tlv (0.2.0)
4
+ funky-tlv (0.2.1)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
@@ -25,3 +25,6 @@ DEPENDENCIES
25
25
  da_funk
26
26
  funky-tlv!
27
27
  rake (~> 10.0)
28
+
29
+ BUNDLED WITH
30
+ 1.12.3
data/funky-tlv.gemspec CHANGED
@@ -12,7 +12,7 @@ Gem::Specification.new do |spec|
12
12
  spec.description = "Implements Hash Ber TLV on funk environment"
13
13
  spec.homepage = "https://github.com/scalone/funky-tlv"
14
14
  spec.license = "MIT"
15
- spec.files = %w(.gitignore Gemfile Gemfile.lock README.md Rakefile funky-tlv.gemspec lib/funky-tlv.rb out/funky-tlv/main.mrb)
15
+ spec.files = %w(.gitignore Gemfile Gemfile.lock README.md Rakefile funky-tlv.gemspec lib/funky-tlv.rb lib/hash-ber-tlv.rb out/funky-tlv/main.mrb)
16
16
  spec.extensions = []
17
17
  spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
data/lib/funky-tlv.rb CHANGED
@@ -1,4 +1,4 @@
1
1
  module FunkyTlv
2
- VERSION = "0.2.0"
2
+ VERSION = "0.2.1"
3
3
  end
4
4
 
@@ -0,0 +1,67 @@
1
+ class Hash
2
+ def from_ber_tlv(data)
3
+ i = 0
4
+ tag = data[i]
5
+ if tag.unpack('C').pop & 0x1F == 0x1F # matches 00011111 mask?
6
+ begin
7
+ i += 1
8
+ tag[i] = data[i]
9
+ end while tag[i].unpack('C').pop & 0x80 == 0x80
10
+ end
11
+
12
+ length = data[tag.length].unpack('C').pop
13
+
14
+ tag_i = tag.unpack('H*').pop.to_i(16)
15
+
16
+ if length < 0x80
17
+ self[tag_i] = data[tag.length + 1, length]
18
+ remainder = data[tag.length + 1 + length..-1]
19
+ else
20
+ num_octets = length & 0x7f
21
+ octets = data[tag.length + 1, num_octets].unpack('C*')
22
+
23
+ length = 0
24
+ octets.reverse.each_with_index {|octet, idx|
25
+ length += octet * (256**idx)
26
+ }
27
+
28
+ self[tag_i] = data[tag.length + 1 + num_octets, length]
29
+ remainder = data[tag.length + 1 + num_octets + length..-1]
30
+ end
31
+
32
+ if remainder and remainder.length > 2
33
+ self.from_ber_tlv(remainder)
34
+ end
35
+
36
+ self
37
+ end
38
+
39
+ def to_ber_tlv
40
+ result = ''
41
+ self.each do |tag, value|
42
+ v = value.dup
43
+ result << int_to_binstr(tag) # adding tag to result string
44
+
45
+ #adding size of the tag
46
+ if v.size < 0x80
47
+ result << int_to_binstr(v.size)
48
+ else
49
+ len_len = int_to_binstr(v.size)
50
+ result << int_to_binstr(0x80 | len_len.size)
51
+ result << len_len
52
+ end
53
+
54
+ result << v
55
+ end
56
+
57
+ result
58
+ end
59
+
60
+ # converts integer to binary string representation
61
+ def int_to_binstr(i)
62
+ binstr = "%X" % i
63
+ binstr = '0' << binstr if binstr.size % 2 == 1
64
+ [binstr].pack('H*')
65
+ end
66
+ end
67
+
metadata CHANGED
@@ -1,41 +1,41 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: funky-tlv
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Thiago Scalone
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-06-29 00:00:00.000000000 Z
11
+ date: 2016-09-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
19
  version: '1.7'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ~>
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '1.7'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ~>
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
33
  version: '10.0'
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
40
  version: '10.0'
41
41
  description: Implements Hash Ber TLV on funk environment
@@ -45,13 +45,14 @@ executables: []
45
45
  extensions: []
46
46
  extra_rdoc_files: []
47
47
  files:
48
- - .gitignore
48
+ - ".gitignore"
49
49
  - Gemfile
50
50
  - Gemfile.lock
51
51
  - README.md
52
52
  - Rakefile
53
53
  - funky-tlv.gemspec
54
54
  - lib/funky-tlv.rb
55
+ - lib/hash-ber-tlv.rb
55
56
  - out/funky-tlv/main.mrb
56
57
  homepage: https://github.com/scalone/funky-tlv
57
58
  licenses:
@@ -63,17 +64,17 @@ require_paths:
63
64
  - lib
64
65
  required_ruby_version: !ruby/object:Gem::Requirement
65
66
  requirements:
66
- - - '>='
67
+ - - ">="
67
68
  - !ruby/object:Gem::Version
68
69
  version: '0'
69
70
  required_rubygems_version: !ruby/object:Gem::Requirement
70
71
  requirements:
71
- - - '>='
72
+ - - ">="
72
73
  - !ruby/object:Gem::Version
73
74
  version: '0'
74
75
  requirements: []
75
76
  rubyforge_project:
76
- rubygems_version: 2.2.2
77
+ rubygems_version: 2.5.1
77
78
  signing_key:
78
79
  specification_version: 4
79
80
  summary: Hash Ber TLV implementation