aadhaar_auth 0.0.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.
@@ -0,0 +1,14 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /Gemfile.lock
4
+ /_yardoc/
5
+ /coverage/
6
+ /doc/
7
+ /pkg/
8
+ /spec/reports/
9
+ /tmp/
10
+ *.bundle
11
+ *.so
12
+ *.o
13
+ *.a
14
+ mkmf.log
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in aadhaar_auth.gemspec
4
+ gemspec
data/LICENSE ADDED
@@ -0,0 +1,22 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2015 Manish Kasera
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
22
+
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2015 manishk
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,62 @@
1
+ # AadhaarAuth
2
+
3
+ Aadhaar Auth API v.1.6 ruby port
4
+
5
+ ## Installation
6
+
7
+ Add this line to your application's Gemfile:
8
+
9
+ ```ruby
10
+ gem 'aadhaar_auth'
11
+ ```
12
+
13
+ And then execute:
14
+
15
+ $ bundle
16
+
17
+ Or install it yourself as:
18
+
19
+ $ gem install aadhaar_auth
20
+
21
+ ## Usage
22
+ ```ruby
23
+ c = AadhaarAuth::Client.new(:aadhaar_no => '999999990019', :name => 'Shivshankar Choudhury')
24
+ c.valid? #true/false
25
+ ```
26
+ there is also a verbose mode which prints the request/response on STDOUT
27
+ ```ruby
28
+ c.verbose = true
29
+ ```
30
+ ## Configuration
31
+
32
+ By default test credentials are used, if you want to deploy it to production, use the confugurator as below
33
+
34
+ options available
35
+ * api_version
36
+ * asa_licence_key
37
+ * public_certificate_path
38
+ * digital_signature_path
39
+ * digital_signature_pwd
40
+ * ac
41
+ * lk
42
+ * sa
43
+ * tid
44
+ * udc
45
+
46
+ set them as
47
+ ```ruby
48
+ AadhaarAuth::Config.asa_licence_key = "hfjsfdGJgGJghJGHJGJGHGFBJIG"
49
+ AadhaarAuth::Config.public_certificate_path = "/tmp/Auth_Staging.cer"
50
+ AadhaarAuth::Config.digital_signature_path = "/tmp/public-may2012.p12"
51
+ ```
52
+
53
+ ## API Doc
54
+ Aadhaar api documentation is available [here](https://developer.uidai.gov.in/site/book/export/html/18)
55
+
56
+ ## Contributing
57
+
58
+ 1. Fork it ( https://github.com/[my-github-username]/aadhaar_auth/fork )
59
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
60
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
61
+ 4. Push to the branch (`git push origin my-new-feature`)
62
+ 5. Create a new Pull Request
@@ -0,0 +1,2 @@
1
+ require "bundler/gem_tasks"
2
+
@@ -0,0 +1,26 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'aadhaar_auth/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "aadhaar_auth"
8
+ spec.version = AadhaarAuth::VERSION
9
+ spec.authors = ["Manish Kasera"]
10
+ spec.email = ["manishgkasera@gmail.com"]
11
+ spec.summary = %q{Aadhaar auth api: ruby port}
12
+ spec.description = %q{Aadhaar auth api v1.6: ruby port}
13
+ spec.homepage = 'https://github.com/manishgkasera/aadhaar_auth'
14
+
15
+ spec.files = `git ls-files -z`.split("\x0")
16
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
17
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
18
+ spec.require_paths = ["lib"]
19
+
20
+ spec.add_development_dependency "bundler", "~> 1.7"
21
+ spec.add_development_dependency "rake", "~> 10.0"
22
+
23
+ spec.add_runtime_dependency "xmldsig", "0.2.8"
24
+ spec.add_runtime_dependency "nokogiri", ">= 1.5.2"
25
+ spec.add_runtime_dependency "curb", ">= 0.8.6"
26
+ end
@@ -0,0 +1,21 @@
1
+ -----BEGIN CERTIFICATE-----
2
+ MIIDfDCCAmSgAwIBAgIECmnOfzANBgkqhkiG9w0BAQUFADB2MQswCQYDVQQGEwJJ
3
+ TjESMBAGA1UECBMJS0FSTkFUQUtBMRIwEAYDVQQHEwlCYW5nYWxvcmUxDjAMBgNV
4
+ BAoTBVVJREFJMRQwEgYDVQQLEwtUZWNoIENlbnRlcjEZMBcGA1UEAxMQQXV0aCBU
5
+ ZXN0IFNlcnZlcjAeFw0xMTA5MjIwMDAwMDBaFw0xNTA5MjIwMDAwMDBaMHYxCzAJ
6
+ BgNVBAYTAklOMRIwEAYDVQQIEwlLQVJOQVRBS0ExEjAQBgNVBAcTCUJhbmdhbG9y
7
+ ZTEOMAwGA1UEChMFVUlEQUkxFDASBgNVBAsTC1RlY2ggQ2VudGVyMRkwFwYDVQQD
8
+ ExBBdXRoIFRlc3QgU2VydmVyMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
9
+ AQEAxgVhHZZwTbiBMbu6zPzpNRfVp7ldubZvqPuKWT77UhR8pUUiBW7f19P+Ox6E
10
+ r6K6F/hoMWzz2k8geVEqFoRbVUVTfxxoxBkisQ82WCpbG0KkPNGyZ9i/56Aslq/b
11
+ wfSbyH6rfpAqLjFu9BXw4W+SY1zTKIjkxCjTh4FbqgzpFkGVlV3Al98ODrlS7uuy
12
+ X+qeqjvDZ3HQ+MzejrbNn6TQRBLaaqCVlkSzrzejXyEqaqliwVOVqNI3YPde7Mjl
13
+ 4p6yGJ9T5Z4SGXSQXXP542kbxblcWn+inQvEmLCs3na841KflFRnFcMw27NDH1KQ
14
+ L8IZZByu56KE6BOIidcqoFF2aQIDAQABoxIwEDAOBgNVHQ8BAf8EBAMCBaAwDQYJ
15
+ KoZIhvcNAQEFBQADggEBAIFZ3r5wdZoKb8EOoP/hDnGotyxXJYgmUSmx4PNUPj0W
16
+ 78eV4PTC8f9DPL2/DJUM7fvfsrO1M3R6fiTB+umrphEX9a6yX6K66KSWd8yaGouO
17
+ tX+ExkUNkEzmlS1ktKnhdSVwi0fkt8LBMjposZcz/0cPpjNFUyAyeyvSYbD2HusE
18
+ sbuMzHnSTFia5P5d32LtqD9tK7L3fS5d7NXa4Aod36JECqbKYyWInnWs3R3jFtKW
19
+ PGIA/V82oDQTvg9ey4fAvBrAUKfO3/UxF844k9cfCo1xrNxWv37wFuzuYbjA9w6Y
20
+ xiYWElRfRaEwChu+/2A2jYJ76lAOvbAyfILYNTtditM=
21
+ -----END CERTIFICATE-----
Binary file
@@ -0,0 +1,9 @@
1
+ require 'openssl'
2
+ require 'base64'
3
+ require "aadhaar_auth/version"
4
+ require "aadhaar_auth/config"
5
+ require "aadhaar_auth/client"
6
+
7
+ module AadhaarAuth
8
+ # Your code goes here...
9
+ end
@@ -0,0 +1,135 @@
1
+ require 'curb'
2
+ require 'aadhaar_auth/encrypter'
3
+ require 'aadhaar_auth/digital_signer'
4
+
5
+ module AadhaarAuth
6
+ class Client
7
+ attr_accessor :verbose
8
+ attr_reader :aadhaar_no, :name, :email, :phone, :gender, :time,
9
+ :encrypter, :digital_signer, :raw_response, :error_code
10
+
11
+ def initialize(person_data)
12
+ @aadhaar_no = person_data[:aadhaar_no].to_s
13
+ @name = person_data[:name]
14
+ @email = person_data[:email]
15
+ @phone = person_data[:phone]
16
+ @gender = person_data[:gender]
17
+ @time = Time.now
18
+ @encrypter = Encrypter.new
19
+ @digital_signer = DigitalSigner.new
20
+ @raw_response = nil
21
+ end
22
+
23
+ def valid?
24
+ # should be exactly 12 digits
25
+ if aadhaar_no !~ /^\d{12}$/
26
+ return(false)
27
+ end
28
+
29
+ @raw_response = Curl::Easy.http_post(url, raw_request).body_str
30
+
31
+ if verbose
32
+ puts "URL: \n#{url}"
33
+ puts "PID XML: \n#{pid_block()}"
34
+ puts "Signed request: \n#{raw_request}"
35
+ puts "Response: \n#{@raw_response}"
36
+ end
37
+
38
+ digital_signer.verify_signature(@raw_response) if Config.verify_response_signature
39
+
40
+ auth_res = Nokogiri::XML(@raw_response).children.find{|c| c.name == 'AuthRes'}
41
+ @error_code = auth_res.attributes['err'] ? auth_res.attributes['err'].value : nil
42
+
43
+ ret = auth_res.attributes['ret'] ? auth_res.attributes['ret'].value : nil
44
+ if ret && ret != ''
45
+ return ret == 'y'
46
+ end
47
+
48
+ raise ResponseError.new(["Error :#{@error_code}", pid_block, raw_request, @raw_response].join("\n\n"))
49
+ end
50
+
51
+ def url
52
+ @url ||= url = "http://auth.uidai.gov.in/#{Config.api_version}/public/#{aadhaar_no[0]}/#{aadhaar_no[1]}/#{Config.asa_licence_key}"
53
+ end
54
+
55
+ def raw_request
56
+ @raw_request ||= digital_signer.sign(req_xml)
57
+ end
58
+
59
+ def req_xml
60
+ nok = Nokogiri::XML::Builder.new(:encoding => 'UTF-8') do |x|
61
+ x.Auth(
62
+ 'uid' => aadhaar_no,
63
+ 'ac' => Config.ac,
64
+ 'lk' => Config.lk,
65
+ 'sa'=> Config.sa,
66
+ 'tid'=> Config.tid,
67
+ 'txn'=>"AuthDemoClient:public:#{time.to_i}",
68
+ 'ver'=> Config.api_version,
69
+ 'xmlns:ds'=>"http://www.w3.org/2000/09/xmldsig#",
70
+ 'xmlns'=>"http://www.uidai.gov.in/authentication/uid-auth-request/1.0") do
71
+ x.Uses('bio'=>'n', 'otp'=>"n", 'pa'=>"n", 'pfa'=>"n", 'pi'=>"y", 'pin'=>"n")
72
+ x.Meta('fdc'=>"NA", 'idc'=>"NA", 'lot'=>"P", 'lov' => "560094", 'pip' => "NA", 'udc'=> Config.udc)
73
+ x.Skey('ci'=> skey_ci) do
74
+ x.text(encrypter.encrypted_session_key)
75
+ end
76
+ x.Data('type' => "X") do
77
+ x.text(encrypted_data)
78
+ end
79
+ x.Hmac(encrypter.calculate_hmac(pid_block))
80
+ x['ds'].Signature do
81
+ x['ds'].SignedInfo do
82
+ x['ds'].CanonicalizationMethod('Algorithm' => "http://www.w3.org/2001/10/xml-exc-c14n#")
83
+ x['ds'].SignatureMethod('Algorithm' => "http://www.w3.org/2001/04/xmldsig-more#rsa-sha256")
84
+ x['ds'].Reference('URI' => "") do
85
+ x['ds'].Transforms do
86
+ x['ds'].Transform('Algorithm'=>"http://www.w3.org/2000/09/xmldsig#enveloped-signature")
87
+ end
88
+ x['ds'].DigestMethod('Algorithm'=>"http://www.w3.org/2001/04/xmlenc#sha256")
89
+ x['ds'].DigestValue('')
90
+ end
91
+ end
92
+ x['ds'].SignatureValue('')
93
+ x['ds'].KeyInfo do
94
+ x['ds'].X509Data do
95
+ x['ds'].X509SubjectName(DigitalSigner.private_key_cert.subject.to_s)
96
+ x['ds'].X509Certificate(DigitalSigner.private_key_cert_val)
97
+ end
98
+ end
99
+ end
100
+ end
101
+ end
102
+ nok.to_xml
103
+ end
104
+
105
+ def pid_block
106
+ @pid_block ||= begin
107
+ xml = Nokogiri::XML('<?xml version="1.0" encoding="UTF-8" standalone="yes"?>')
108
+ Nokogiri::XML::Builder.with(xml) do |x|
109
+ x.Pid('ts' => time.strftime("%Y-%m-%dT%H:%M:%S"), 'xmlns:ns2' => 'http://www.uidai.gov.in/authentication/uid-auth-request-data/1.0') do
110
+ x.parent.namespace = x.parent.namespace_definitions.find{|ns| ns.prefix == "ns2"}
111
+ x.Demo do
112
+ info = {'ms' => "E", 'mv' => "100", 'name' => name}
113
+ info.merge!('gender' => gender) if gender
114
+ info.merge!('phone' => phone) if phone
115
+ info.merge!('email' => email) if email
116
+ x.Pi(info)
117
+ end
118
+ end
119
+ end.to_xml
120
+ end
121
+ end
122
+
123
+ def encrypted_data
124
+ @encrypted_data ||= begin
125
+ Base64.encode64(encrypter.encrypt_using_session_key(pid_block))
126
+ end
127
+ end
128
+
129
+ def skey_ci
130
+ encrypter.public_cert.not_after.strftime('%Y%m%d')
131
+ end
132
+
133
+ class ResponseError < Exception; end
134
+ end
135
+ end
@@ -0,0 +1,32 @@
1
+ module AadhaarAuth
2
+ class Config
3
+ class << self
4
+ attr_accessor :api_version,
5
+ :asa_licence_key,
6
+ :public_certificate_path,
7
+ :digital_signature_path,
8
+ :digital_signature_pwd,
9
+ :ac, :lk, :sa, :tid, :udc,
10
+ :verify_response_signature
11
+
12
+
13
+ end
14
+
15
+ Config.api_version = '1.6'
16
+ Config.asa_licence_key = 'MLTbKYcsgYMq1zgL3WMZYrnyvsarlljxpom2A-QTPc0Zud23shpnqPk'
17
+ Config.lk = 'MKHmkuz-MgLYvA54PbwZdo9eC3D5y7SVozWwpNgEPysVqLs_aJgAVOI'
18
+
19
+ keys_path = File.expand_path(File.join(File.dirname(__FILE__), '..', '..', 'keys'))
20
+ Config.public_certificate_path = File.join(keys_path, 'Auth_Staging.cer')
21
+
22
+ Config.digital_signature_path = File.join(keys_path, 'public-may2012.p12')
23
+ Config.digital_signature_pwd = 'public'
24
+
25
+ Config.verify_response_signature = true
26
+
27
+ Config.ac = 'public'
28
+ Config.sa = 'public'
29
+ Config.tid = 'public'
30
+ Config.udc = '1122'
31
+ end
32
+ end
@@ -0,0 +1,36 @@
1
+ require 'xmldsig'
2
+
3
+ module AadhaarAuth
4
+ class DigitalSigner
5
+
6
+ def sign(xml)
7
+ Xmldsig::SignedDocument.new(xml).sign(self.class.private_key)
8
+ end
9
+
10
+ def verify_signature(xml)
11
+ if !Xmldsig::SignedDocument.new(xml).validate(Encrypter.public_cert)
12
+ raise InvalidSignature.new("Invalid response signature")
13
+ end
14
+ end
15
+
16
+ class << self
17
+ def pkcs12
18
+ @pkcs12 ||= OpenSSL::PKCS12.new(File.read(Config.digital_signature_path), Config.digital_signature_pwd)
19
+ end
20
+
21
+ def private_key
22
+ @private_key ||= OpenSSL::PKey::RSA.new(pkcs12.key.to_s)
23
+ end
24
+
25
+ def private_key_cert
26
+ @private_key_cert ||= OpenSSL::X509::Certificate.new(pkcs12.certificate.to_s)
27
+ end
28
+
29
+ def private_key_cert_val
30
+ @private_key_cert_val ||= private_key_cert.to_s.sub(/^-----BEGIN CERTIFICATE-----\n/, '').sub(/-----END CERTIFICATE-----\n$/, '')
31
+ end
32
+ end
33
+
34
+ class InvalidSignature < Exception; end
35
+ end
36
+ end
@@ -0,0 +1,41 @@
1
+ module AadhaarAuth
2
+ class Encrypter
3
+ ENC_ALGO = 'AES-256-ECB'
4
+
5
+ def session_key
6
+ @session_key ||= begin
7
+ aes = OpenSSL::Cipher.new(ENC_ALGO)
8
+ aes.encrypt
9
+ aes.random_key
10
+ end
11
+ end
12
+
13
+ def encrypted_session_key
14
+ @encrypted_session_key ||= begin
15
+ public_key = public_cert.public_key
16
+ Base64.encode64(public_key.public_encrypt(session_key))
17
+ end
18
+ end
19
+
20
+ def encrypt_using_session_key(data)
21
+ aes = OpenSSL::Cipher.new(ENC_ALGO)
22
+ aes.encrypt
23
+ aes.key = session_key
24
+ (aes.update(data) + aes.final)
25
+ end
26
+
27
+ def calculate_hmac(data)
28
+ Base64.encode64(encrypt_using_session_key(Digest::SHA256.digest(data)))
29
+ end
30
+
31
+ def public_cert
32
+ self.class.public_cert
33
+ end
34
+
35
+ class << self
36
+ def public_cert
37
+ @public_cert ||= OpenSSL::X509::Certificate.new(File.read(Config.public_certificate_path))
38
+ end
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,3 @@
1
+ module AadhaarAuth
2
+ VERSION = "0.0.1"
3
+ end
metadata ADDED
@@ -0,0 +1,159 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: aadhaar_auth
3
+ version: !ruby/object:Gem::Version
4
+ hash: 29
5
+ prerelease:
6
+ segments:
7
+ - 0
8
+ - 0
9
+ - 1
10
+ version: 0.0.1
11
+ platform: ruby
12
+ authors:
13
+ - Manish Kasera
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2015-05-22 00:00:00 +05:30
19
+ default_executable:
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
22
+ version_requirements: &id001 !ruby/object:Gem::Requirement
23
+ none: false
24
+ requirements:
25
+ - - ~>
26
+ - !ruby/object:Gem::Version
27
+ hash: 1
28
+ segments:
29
+ - 1
30
+ - 7
31
+ version: "1.7"
32
+ prerelease: false
33
+ type: :development
34
+ requirement: *id001
35
+ name: bundler
36
+ - !ruby/object:Gem::Dependency
37
+ version_requirements: &id002 !ruby/object:Gem::Requirement
38
+ none: false
39
+ requirements:
40
+ - - ~>
41
+ - !ruby/object:Gem::Version
42
+ hash: 35
43
+ segments:
44
+ - 10
45
+ - 0
46
+ version: "10.0"
47
+ prerelease: false
48
+ type: :development
49
+ requirement: *id002
50
+ name: rake
51
+ - !ruby/object:Gem::Dependency
52
+ version_requirements: &id003 !ruby/object:Gem::Requirement
53
+ none: false
54
+ requirements:
55
+ - - "="
56
+ - !ruby/object:Gem::Version
57
+ hash: 7
58
+ segments:
59
+ - 0
60
+ - 2
61
+ - 8
62
+ version: 0.2.8
63
+ prerelease: false
64
+ type: :runtime
65
+ requirement: *id003
66
+ name: xmldsig
67
+ - !ruby/object:Gem::Dependency
68
+ version_requirements: &id004 !ruby/object:Gem::Requirement
69
+ none: false
70
+ requirements:
71
+ - - ">="
72
+ - !ruby/object:Gem::Version
73
+ hash: 7
74
+ segments:
75
+ - 1
76
+ - 5
77
+ - 2
78
+ version: 1.5.2
79
+ prerelease: false
80
+ type: :runtime
81
+ requirement: *id004
82
+ name: nokogiri
83
+ - !ruby/object:Gem::Dependency
84
+ version_requirements: &id005 !ruby/object:Gem::Requirement
85
+ none: false
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ hash: 51
90
+ segments:
91
+ - 0
92
+ - 8
93
+ - 6
94
+ version: 0.8.6
95
+ prerelease: false
96
+ type: :runtime
97
+ requirement: *id005
98
+ name: curb
99
+ description: "Aadhaar auth api v1.6: ruby port"
100
+ email:
101
+ - manishgkasera@gmail.com
102
+ executables: []
103
+
104
+ extensions: []
105
+
106
+ extra_rdoc_files: []
107
+
108
+ files:
109
+ - .gitignore
110
+ - Gemfile
111
+ - LICENSE
112
+ - LICENSE.txt
113
+ - README.md
114
+ - Rakefile
115
+ - aadhaar_auth.gemspec
116
+ - keys/Auth_Staging.cer
117
+ - keys/public-may2012.p12
118
+ - lib/aadhaar_auth.rb
119
+ - lib/aadhaar_auth/client.rb
120
+ - lib/aadhaar_auth/config.rb
121
+ - lib/aadhaar_auth/digital_signer.rb
122
+ - lib/aadhaar_auth/encrypter.rb
123
+ - lib/aadhaar_auth/version.rb
124
+ has_rdoc: true
125
+ homepage: https://github.com/manishgkasera/aadhaar_auth
126
+ licenses: []
127
+
128
+ post_install_message:
129
+ rdoc_options: []
130
+
131
+ require_paths:
132
+ - lib
133
+ required_ruby_version: !ruby/object:Gem::Requirement
134
+ none: false
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ hash: 3
139
+ segments:
140
+ - 0
141
+ version: "0"
142
+ required_rubygems_version: !ruby/object:Gem::Requirement
143
+ none: false
144
+ requirements:
145
+ - - ">="
146
+ - !ruby/object:Gem::Version
147
+ hash: 3
148
+ segments:
149
+ - 0
150
+ version: "0"
151
+ requirements: []
152
+
153
+ rubyforge_project:
154
+ rubygems_version: 1.5.0
155
+ signing_key:
156
+ specification_version: 3
157
+ summary: "Aadhaar auth api: ruby port"
158
+ test_files: []
159
+