grizzly_ber 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/lib/grizzly_ber.rb +28 -1
  3. data/lib/grizzly_tag.rb +148 -0
  4. metadata +3 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 65560c58030a999c28fd696878c31cf64ab9ec0f
4
- data.tar.gz: ee9e039767c220e55666566ee860030d937475d5
3
+ metadata.gz: 077a5e4209ed67b5e742483eb8d03cecadbc1c7b
4
+ data.tar.gz: 1d9297a29825dc84a885acc36cb9099a969faa16
5
5
  SHA512:
6
- metadata.gz: ad215423bc5fd9daca7b85c629c41565be5a02c85177518133b5b22a2cef360a29d706074480d5b3785e811374f1c5df0af6a02130291dba20331d92d9f7d7f2
7
- data.tar.gz: e355d63c205242f3e0c964f99403096aded346c4a934fee65d850642624cbafd16827c264d59b422106563ea5efe4a1bd70b3bc5c9ec0de38d7605b43b1ef13a
6
+ metadata.gz: c5acf3a967abb26123a6ed9ec2a09a0f54f02d21092709eb4f50867c67c3f468689e05f1d9dbbedfc1be958f9618ea846eef046ba37684926404e45d99c0943d
7
+ data.tar.gz: 8b72fb01f4a56fca75d944c51aad603303c6174531f8e36d40645fc477665984c7efea736e4e71ee2d33645d31e1328fcef9170989e4c8fae5b67dcaddb6d5fe
data/lib/grizzly_ber.rb CHANGED
@@ -1,3 +1,5 @@
1
+ require 'grizzly_tag'
2
+
1
3
  class GrizzlyBer
2
4
  attr_reader :value, :tag
3
5
 
@@ -27,12 +29,22 @@ class GrizzlyBer
27
29
  @value = [] if isConstruct? and @value.nil?
28
30
  end
29
31
 
30
- def find(tag)
32
+ def find(tag_or_name)
33
+ if tag_or_name.is_a? String
34
+ tag = GrizzlyTag.tag_from_name(tag_or_name)
35
+ else
36
+ tag = tag_or_name
37
+ end
31
38
  return self if @tag == tag
32
39
  return nil unless isConstruct?
33
40
  @value.find{|tlv| tlv.find(tag) != nil}
34
41
  end
35
42
 
43
+ def remove!(tag_or_name)
44
+ tag_to_remove = find(tag_or_name)
45
+ @value.delete tag_to_remove unless tag_to_remove.nil?
46
+ end
47
+
36
48
  def decode_hex(hex_string)
37
49
  decode_binary([hex_string].pack("H*"))
38
50
  end
@@ -73,6 +85,21 @@ class GrizzlyBer
73
85
  end
74
86
  end
75
87
 
88
+ def to_s(indent_size: 0)
89
+ indent = " " * 3 * indent_size
90
+ info = GrizzlyTag.tagged(@tag) || {:name => "Unknown Tag", :description => "Unknown"}
91
+ output = "#{indent}#{@tag.to_s(16).upcase}: #{info[:name]}\n"
92
+ output += "#{indent} Description: #{info[:description]}\n"
93
+ if @value.is_a? Array
94
+ output += @value.reduce("") { |string, tlv| string += tlv.to_s(indent_size: indent_size+1)}
95
+ else
96
+ output += "#{indent} Value: #{@value}"
97
+ output += ", \"#{[@value].pack("H*")}\"" if info[:format] == :string
98
+ output += "\n"
99
+ end
100
+ output
101
+ end
102
+
76
103
  protected
77
104
 
78
105
  def length
@@ -0,0 +1,148 @@
1
+ module GrizzlyTag
2
+ def self.new_tag(params)
3
+ params[:format] ||= :binary
4
+ params
5
+ end
6
+
7
+ def self.all
8
+ @@tags
9
+ end
10
+
11
+ def self.tagged(tag)
12
+ @@tags.find{|o| o[:tag] == tag}
13
+ end
14
+
15
+ def self.named(name)
16
+ @@tags.find{|o| o[:name] == name}
17
+ end
18
+
19
+ def self.tag_from_name(name)
20
+ tag = self.named(name)
21
+ tag &&= tag[:tag]
22
+ end
23
+
24
+ @@tags = [
25
+ #Tags taken from EMV 4.3 Book 3 Annex A
26
+ new_tag(:tag => 0x5F57, :name => "Account Type", :description => "Indicates the type of account selected on the terminal, coded as specified in Annex G"),
27
+ new_tag(:tag => 0x9F01, :name => "Acquirer Identifier", :description => "Uniquely identifies the acquirer within each payment system"),
28
+ new_tag(:tag => 0x9F40, :name => "Additional Terminal Capabilities", :description => "Indicates the data input and output capabilities of the terminal"),
29
+ new_tag(:tag => 0x81, :name => "Amount, Authorised (Binary)", :description => "Authorised amount of the transaction (excluding adjustments)"),
30
+ new_tag(:tag => 0x9F02, :name => "Amount, Authorised (Numeric)", :description => "Authorised amount of the transaction (excluding adjustments)"),
31
+ new_tag(:tag => 0x9F04, :name => "Amount, Other (Binary)", :description => "Secondary amount associated with the transaction representing a cashback amount"),
32
+ new_tag(:tag => 0x9F03, :name => "Amount, Other (Numeric)", :description => "Secondary amount associated with the transaction representing a cashback amount"),
33
+ new_tag(:tag => 0x9F3A, :name => "Amount, Reference Currency", :description => "Authorised amount expressed in the reference currency"),
34
+ new_tag(:tag => 0x9F26, :name => "Application Cryptogram", :description => "Cryptogram returned by the ICC in response of the GENERATE AC command"),
35
+ new_tag(:tag => 0x9F42, :name => "Application Currency Code", :description => "Indicates the currency in which the account is managed according to ISO 4217"),
36
+ new_tag(:tag => 0x9F44, :name => "Application Currency Exponent", :description => "Indicates the implied position of the decimal point from the right of the amount represented according to ISO 4217"),
37
+ new_tag(:tag => 0x9F05, :name => "Application Discretionary Data", :description => "Issuer or payment system specified data relating to the application"),
38
+ new_tag(:tag => 0x5F25, :name => "Application Effective Date", :description => "Date from which the application may be used"),
39
+ new_tag(:tag => 0x5F24, :name => "Application Expiration Date", :description => "Date after which application expires"),
40
+ new_tag(:tag => 0x94, :name => "Application File Locator (AFL)", :description => "Indicates the location (SFI, range of records) of the AEFs related to a given application"),
41
+ new_tag(:tag => 0x4F, :name => "Application Dedicated File (ADF) Name", :description => "Identifies the application as described in ISO/IEC 7816-5"),
42
+ new_tag(:tag => 0x9F06, :name => "Application Identifier (AID) – terminal", :description => "Identifies the application as described in ISO/IEC 7816-5"),
43
+ new_tag(:tag => 0x82, :name => "Application Interchange Profile", :description => "Indicates the capabilities of the card to support specific functions in the application"),
44
+ new_tag(:tag => 0x50, :name => "Application Label", :format => :string, :description => "Mnemonic associated with the AID according to ISO/IEC 7816-5"),
45
+ new_tag(:tag => 0x9F12, :name => "Application Preferred Name", :format => :string, :description => "Preferred mnemonic associated with the AID"),
46
+ new_tag(:tag => 0x5A, :name => "Application Primary Account Number (PAN)", :description => "Valid cardholder account number"),
47
+ new_tag(:tag => 0x5F34, :name => "Application Primary Account Number (PAN) Sequence Number", :description => "Identifies and differentiates cards with the same PAN"),
48
+ new_tag(:tag => 0x87, :name => "Application Priority Indicator", :description => "Indicates the priority of a given application or group of applications in a directory"),
49
+ new_tag(:tag => 0x9F3B, :name => "Application Reference Currency", :description => "1-4 currency codes used between the terminal and the ICC when the Transaction Currency Code is different from the Application Currency Code; each code is 3 digits according to ISO 4217"),
50
+ new_tag(:tag => 0x9F43, :name => "Application Reference Currency Exponent", :description => "Indicates the implied position of the decimal point from the right of the amount, for each of the 1-4 reference currencies represented according to ISO 4217"),
51
+ new_tag(:tag => 0x70, :name => "Application Template", :description => "Contains one or more data objects relevant to an application directory entry according to ISO/IEC 7816-5"),
52
+ new_tag(:tag => 0x9F36, :name => "Application Transaction Counter (ATC)", :description => "Counter maintained by the application in the ICC (incrementing the ATC is managed by the ICC)"),
53
+ new_tag(:tag => 0x9F07, :name => "Application Usage Control", :description => "Indicates issuer’s specified restrictions on the geographic usage and services allowed for the application"),
54
+ new_tag(:tag => 0x9F08, :name => "Application Version Number", :description => "Version number assigned by the payment system for the application"),
55
+ new_tag(:tag => 0x9F09, :name => "Application Version Number", :description => "Version number assigned by the payment system for the application"),
56
+ new_tag(:tag => 0x89, :name => "Authorisation Code", :description => "Value generated by the authorisation authority for an approved transaction"),
57
+ new_tag(:tag => 0x8A, :name => "Authorisation Response Code", :format => :string, :description => "Code that defines the disposition of a message"),
58
+ new_tag(:tag => 0x5F54, :name => "Bank Identifier Code (BIC)", :description => "Uniquely identifies a bank as defined in ISO 9362."),
59
+ new_tag(:tag => 0x8C, :name => "Risk Management Data Object List 1 (CDOL1)", :description => "List of data objects (tag and length) to be passed to the ICC in the first GENERATE AC command"),
60
+ new_tag(:tag => 0x8D, :name => "Card Risk Management Data Object List 2 (CDOL2)", :description => "List of data objects (tag and length) to be passed to the ICC in the second GENERATE AC command"),
61
+ new_tag(:tag => 0x5F20, :name => "Cardholder Name", :format => :string, :description => "Indicates cardholder name according to ISO 7813"),
62
+ new_tag(:tag => 0x9F0B, :name => "Cardholder Name Extended", :format => :string, :description => "Indicates the whole cardholder name when greater than 26 characters using the same coding convention as in ISO 7813"),
63
+ new_tag(:tag => 0x8E, :name => "Cardholder Verification Method (CVM) List", :description => "Identifies a method of verification of the cardholder supported by the application"),
64
+ new_tag(:tag => 0x9F34, :name => "Cardholder Verification Method (CVM) Results", :description => "Indicates the results of the last CVM performed"),
65
+ new_tag(:tag => 0x8F, :name => "Certification Authority Public Key Index", :description => "Identifies the certification authority’s public key in conjunction with the RID"),
66
+ new_tag(:tag => 0x9F22, :name => "Certification Authority Public Key Index", :description => "Identifies the certification authority’s public key in conjunction with the RID"),
67
+ new_tag(:tag => 0x83, :name => "Command Template", :description => "Identifies the data field of a command message"),
68
+ new_tag(:tag => 0x9F27, :name => "Cryptogram Information Data", :description => "Indicates the type of cryptogram and the actions to be performed by the terminal"),
69
+ new_tag(:tag => 0x9F45, :name => "Data Authentication Code", :description => "An issuer assigned value that is retained by the terminal during the verification process of the Signed Static Application Data"),
70
+ new_tag(:tag => 0x84, :name => "Dedicated File (DF) Name", :description => "Identifies the name of the DF as described in ISO/IEC 7816-4"),
71
+ new_tag(:tag => 0x9D, :name => "Directory Definition File (DDF) Name", :description => "Identifies the name of a DF associated with a directory"),
72
+ new_tag(:tag => 0x73, :name => "Directory Discretionary Template", :description => "Issuer discretionary part of the directory according to ISO/IEC 7816-5"),
73
+ new_tag(:tag => 0x9F49, :name => "Dynamic Data Authentication Data Object List (DDOL)", :description => "List of data objects (tag and length) to be passed to the ICC in the INTERNAL AUTHENTICATE command"),
74
+ new_tag(:tag => 0xBF0C, :name => "File Control Information (FCI) Issuer Discretionary Data", :description => "Issuer discretionary part of the FCI"),
75
+ new_tag(:tag => 0xA5, :name => "File Control Information (FCI) Proprietary Template", :description => "Identifies the data object proprietary to this specification in the FCI template according to ISO/IEC 7816-4"),
76
+ new_tag(:tag => 0x6F, :name => "File Control Information (FCI) Template", :description => "Identifies the FCI template according to ISO/IEC 7816-4"),
77
+ new_tag(:tag => 0x9F4C, :name => "ICC Dynamic Number", :description => "Time-variant number generated by the ICC, to be captured by the terminal"),
78
+ new_tag(:tag => 0x9F2D, :name => "Integrated Circuit Card (ICC) PIN Encipherment Public Key Certificate", :description => "ICC PIN Encipherment Public Key certified by the issuer"),
79
+ new_tag(:tag => 0x9F2E, :name => "Integrated Circuit Card (ICC) PIN Encipherment Public Key Exponent", :description => "ICC PIN Encipherment Public Key Exponent used for PIN encipherment"),
80
+ new_tag(:tag => 0x9F2F, :name => "Integrated Circuit Card (ICC) PIN Encipherment Public Key Remainder", :description => "Remaining digits of the ICC PIN Encipherment Public Key Modulus"),
81
+ new_tag(:tag => 0x9F46, :name => "Integrated Circuit Card (ICC) Public Key Certificate", :description => "ICC Public Key certified by the issuer"),
82
+ new_tag(:tag => 0x9F47, :name => "Integrated Circuit Card (ICC) Public Key Exponent", :description => "ICC Public Key Exponent used for the verification of the Signed Dynamic Application Data"),
83
+ new_tag(:tag => 0x9F48, :name => "Integrated Circuit Card (ICC) Public Key Remainder", :description => "Remaining digits of the ICC Public Key Modulus"),
84
+ new_tag(:tag => 0x9F1E, :name => "Interface Device (IFD) Serial Number", :format => :string, :description => "Unique and permanent serial number assigned to the IFD by the manufacturer"),
85
+ new_tag(:tag => 0x5F53, :name => "International Bank Account Number (IBAN)", :description => "Uniquely identifies the account of a customer at a financial institution as defined in ISO 13616."),
86
+ new_tag(:tag => 0x9F0D, :name => "Issuer Action Code - Default", :description => "Specifies the issuer’s conditions that cause a transaction to be rejected if it might have been approved online, but the terminal is unable to process the transaction online"),
87
+ new_tag(:tag => 0x9F0E, :name => "Issuer Action Code - Denial", :description => "Specifies the issuer’s conditions that cause the denial of a transaction without attempt to go online"),
88
+ new_tag(:tag => 0x9F0F, :name => "Issuer Action Code - Online", :description => "Specifies the issuer’s conditions that cause a transaction to be transmitted online"),
89
+ new_tag(:tag => 0x9F10, :name => "Issuer Application Data", :description => "Contains proprietary application data for transmission to the issuer in an online transaction."),
90
+ new_tag(:tag => 0x91, :name => "Issuer Authentication Data", :description => "Data sent to the ICC for online issuer authentication"),
91
+ new_tag(:tag => 0x9F11, :name => "Issuer Code Table Index", :description => "Indicates the code table according to ISO/IEC 8859 for displaying the Application Preferred Name"),
92
+ new_tag(:tag => 0x5F28, :name => "Issuer Country Code", :description => "Indicates the country of the issuer according to ISO 3166"),
93
+ new_tag(:tag => 0x5F55, :name => "Issuer Country Code (alpha2 format)", :description => "Indicates the country of the issuer as defined in ISO 3166 (using a 2 character alphabetic code)"),
94
+ new_tag(:tag => 0x5F56, :name => "Issuer Country Code (alpha3 format)", :description => "Indicates the country of the issuer as defined in ISO 3166 (using a 3 character alphabetic code)"),
95
+ new_tag(:tag => 0x42, :name => "Issuer Identification Number (IIN)", :description => "The number that identifies the major industry and the card issuer and that forms the first part of the Primary Account Number (PAN)"),
96
+ new_tag(:tag => 0x90, :name => "Issuer Public Key Certificate", :description => "Issuer public key certified by a certification authority"),
97
+ new_tag(:tag => 0x9F32, :name => "Issuer Public Key Exponent", :description => "Issuer public key exponent used for the verification of the Signed Static Application Data and the ICC Public Key Certificate"),
98
+ new_tag(:tag => 0x92, :name => "Issuer Public Key Remainder", :description => "Remaining digits of the Issuer Public Key Modulus"),
99
+ new_tag(:tag => 0x86, :name => "Issuer Script Command", :description => "Contains a command for transmission to the ICC"),
100
+ new_tag(:tag => 0x9F18, :name => "Issuer Script Identifier", :description => "Identification of the Issuer Script"),
101
+ new_tag(:tag => 0x71, :name => "Issuer Script Template 1", :description => "Contains proprietary issuer data for transmission to the ICC before the second GENERATE AC command"),
102
+ new_tag(:tag => 0x72, :name => "Issuer Script Template 2", :description => "Contains proprietary issuer data for transmission to the ICC after the second GENERATE AC command"),
103
+ new_tag(:tag => 0x5F50, :name => "Issuer URL", :format => :string, :description => "The URL provides the location of the Issuer’s Library Server on the Internet."),
104
+ new_tag(:tag => 0x5F2D, :name => "Language Preference", :format => :string, :description => "1-4 languages stored in order of preference, each represented by 2 alphabetical characters according to ISO 639"),
105
+ new_tag(:tag => 0x9F13, :name => "Last Online Application Transaction Counter (ATC) Register", :description => "ATC value of the last transaction that went online"),
106
+ new_tag(:tag => 0x9F4D, :name => "Log Entry", :description => "Provides the SFI of the Transaction Log file and its number of records"),
107
+ new_tag(:tag => 0x9F4F, :name => "Log Format", :description => "List (in tag and length format) of data objects representing the logged data elements that are passed to the terminal when a transaction log record is read"),
108
+ new_tag(:tag => 0x9F14, :name => "Lower Consecutive Offline Limit", :description => "Issuer-specified preference for the maximum number of consecutive offline transactions for this ICC application allowed in a terminal with online capability"),
109
+ new_tag(:tag => 0x9F15, :name => "Merchant Category Code", :description => "Classifies the type of business being done by the merchant, represented according to ISO 8583:1993 for Card Acceptor Business Code"),
110
+ new_tag(:tag => 0x9F16, :name => "Merchant Identifier", :format => :string, :description => "When concatenated with the Acquirer Identifier, uniquely identifies a given merchant"),
111
+ new_tag(:tag => 0x9F4E, :name => "Merchant Name and Location", :format => :string, :description => "Indicates the name and location of the merchant"),
112
+ new_tag(:tag => 0x9F17, :name => "Personal Identification Number (PIN) Try Counter", :description => "Number of PIN tries remaining"),
113
+ new_tag(:tag => 0x9F39, :name => "Point-of-Service (POS) Entry Mode", :description => "Indicates the method by which the PAN was entered, according to the first two digits of the ISO 8583:1987 POS Entry Mode"),
114
+ new_tag(:tag => 0x9F38, :name => "Processing Options Data Object List (PDOL)", :description => "Contains a list of terminal resident data objects (tags and lengths) needed by the ICC in processing the GET PROCESSING OPTIONS command"),
115
+ new_tag(:tag => 0x70, :name => "READ RECORD Response Message Template", :description => "Contains the contents of the record read. (Mandatory for SFIs 1-10. Response messages for SFIs 11-30 are outside the scope of EMV, but may use template '70')"),
116
+ new_tag(:tag => 0x80, :name => "Response Message Template Format 1", :description => "Contains the data objects (without tags and lengths) returned by the ICC in response to a command"),
117
+ new_tag(:tag => 0x77, :name => "Response Message Template Format 2", :description => "Contains the data objects (with tags and lengths) returned by the ICC in response to a command"),
118
+ new_tag(:tag => 0x5F30, :name => "Service Code", :description => "Service code as defined in ISO/IEC 7813 for track 1 and track 2"),
119
+ new_tag(:tag => 0x88, :name => "Short File Identifier (SFI)", :description => "Identifies the AEF referenced in commands related to a given ADF or DDF. It is a binary data object having a value in the range 1 to 30 and with the three high order bits set to zero."),
120
+ new_tag(:tag => 0x9F4B, :name => "Signed Dynamic Application Data", :description => "Digital signature on critical application parameters for DDA or CDA"),
121
+ new_tag(:tag => 0x93, :name => "Signed Static Application Data", :description => "Digital signature on critical application parameters for SDA"),
122
+ new_tag(:tag => 0x9F4A, :name => "Static Data Authentication Tag List", :description => "List of tags of primitive data objects defined in this specification whose value fields are to be included in the Signed Static or Dynamic Application Data"),
123
+ new_tag(:tag => 0x9F33, :name => "Terminal Capabilities", :description => "Indicates the card data input, CVM, and security capabilities of the terminal"),
124
+ new_tag(:tag => 0x9F1A, :name => "Terminal Country Code", :description => "Indicates the country of the terminal, represented according to ISO 3166"),
125
+ new_tag(:tag => 0x9F1B, :name => "Terminal Floor Limit", :description => "Indicates the floor limit in the terminal in conjunction with the AID"),
126
+ new_tag(:tag => 0x9F1C, :name => "Terminal Identification", :format => :string, :description => "Designates the unique location of a terminal at a merchant"),
127
+ new_tag(:tag => 0x9F1D, :name => "Terminal Risk Management Data", :description => "Application-specific value used by the card for risk management purposes"),
128
+ new_tag(:tag => 0x9F35, :name => "Terminal Type", :description => "Indicates the environment of the terminal, its communications capability, and its operational control"),
129
+ new_tag(:tag => 0x95, :name => "Terminal Verification Results", :description => "Status of the different functions as seen from the terminal"),
130
+ new_tag(:tag => 0x9F1F, :name => "Track 1 Discretionary Data", :description => "Discretionary part of track 1 according to ISO/IEC 7813"),
131
+ new_tag(:tag => 0x9F20, :name => "Track 2 Discretionary Data", :description => "Discretionary part of track 2 according to ISO/IEC 7813"),
132
+ new_tag(:tag => 0x57, :name => "Track 2 Equivalent Data", :description => "Contains the data elements of track 2 according to ISO/IEC 7813, excluding start sentinel, end sentinel, and Longitudinal Redundancy Check (LRC)"),
133
+ new_tag(:tag => 0x97, :name => "Transaction Certificate Data Object List (TDOL)", :description => "List of data objects (tag and length) to be used by the terminal in generating the TC Hash Value"),
134
+ new_tag(:tag => 0x98, :name => "Transaction Certificate (TC) Hash Value", :description => "Result of a hash function specified in Book 2, Annex B3.1"),
135
+ new_tag(:tag => 0x5F2A, :name => "Transaction Currency Code", :description => "Indicates the currency code of the transaction according to ISO 4217"),
136
+ new_tag(:tag => 0x5F36, :name => "Transaction Currency Exponent", :description => "Indicates the implied position of the decimal point from the right of the transaction amount represented according to ISO 4217"),
137
+ new_tag(:tag => 0x9A, :name => "Transaction Date", :description => "Local date that the transaction was authorised"),
138
+ new_tag(:tag => 0x99, :name => "Transaction Personal Identification Number (PIN) Data", :description => "Data entered by the cardholder for the purpose of the PIN verification"),
139
+ new_tag(:tag => 0x9F3C, :name => "Transaction Reference Currency Code", :description => "Code defining the common currency used by the terminal in case the Transaction Currency Code is different from the Application Currency Code"),
140
+ new_tag(:tag => 0x9F3D, :name => "Transaction Reference Currency Exponent", :description => "Indicates the implied position of the decimal point from the right of the transaction amount, with the Transaction Reference Currency Code represented according to ISO 4217"),
141
+ new_tag(:tag => 0x9F41, :name => "Transaction Sequence Counter", :description => "Counter maintained by the terminal that is incremented by one for each transaction"),
142
+ new_tag(:tag => 0x9B, :name => "Transaction Status Information", :description => "Indicates the functions performed in a transaction"),
143
+ new_tag(:tag => 0x9F21, :name => "Transaction Time", :description => "Local time that the transaction was authorised"),
144
+ new_tag(:tag => 0x9C, :name => "Transaction Type", :description => "Indicates the type of financial transaction, represented by the first two digits of the ISO 8583:1987 Processing Code. The actual values to be used for the Transaction Type data element are defined by the relevant payment system"),
145
+ new_tag(:tag => 0x9F37, :name => "Unpredictable Number", :description => "Value to provide variability and uniqueness to the generation of a cryptogram"),
146
+ new_tag(:tag => 0x9F23, :name => "Upper Consecutive Offline Limit", :description => "Issuer-specified preference for the maximum number of consecutive offline transactions for this ICC application allowed in a terminal without online capability"),
147
+ ]
148
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: grizzly_ber
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryan Balsdon
@@ -17,6 +17,7 @@ extensions: []
17
17
  extra_rdoc_files: []
18
18
  files:
19
19
  - lib/grizzly_ber.rb
20
+ - lib/grizzly_tag.rb
20
21
  homepage: ''
21
22
  licenses:
22
23
  - MIT
@@ -29,7 +30,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
29
30
  requirements:
30
31
  - - '>='
31
32
  - !ruby/object:Gem::Version
32
- version: '0'
33
+ version: 2.0.0
33
34
  required_rubygems_version: !ruby/object:Gem::Requirement
34
35
  requirements:
35
36
  - - '>='