mobile_id 0.0.7 → 0.0.12
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 +4 -4
- data/CHANGELOG.md +16 -0
- data/README.md +1 -1
- data/lib/mobile_id/auth.rb +21 -8
- data/lib/mobile_id/cert.rb +39 -7
- data/lib/mobile_id/certs/EE-GovCA2018.pem.crt +29 -0
- data/lib/mobile_id/certs/EID-SK_2011.pem.crt +29 -0
- data/lib/mobile_id/certs/EID-SK_2016.pem.crt +39 -0
- data/lib/mobile_id/certs/ESTEID-SK_2011.pem.crt +29 -0
- data/lib/mobile_id/certs/KLASS3-SK.pem.crt +24 -0
- data/lib/mobile_id/certs/KLASS3-SK_2010_EECCRCA.pem.crt +27 -0
- data/lib/mobile_id/certs/KLASS3-SK_2010_EECCRCA_SHA384.pem.crt +30 -0
- data/lib/mobile_id/certs/KLASS3-SK_2016_EECCRCA_SHA384.pem.crt +37 -0
- data/lib/mobile_id/certs/NQ-SK_2016.pem.crt +37 -0
- data/lib/mobile_id/certs/esteid2018.pem.crt +31 -0
- metadata +12 -2
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: b4176539bcbf710a8bf046e29e59ba85c61b3a74a9de1f5297fd054aa85fe7e6
         | 
| 4 | 
            +
              data.tar.gz: b8fccf6b553ab081cde92ea6824d64b7b2486848478969e87d3b34b9bc66f4e5
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 652482955ea58b873aa56772830b98f65225b9370d0deeedba926461fbec5e55b22f323c9c22ad6aa2f13819266025ae3b0c9c0b465729ef78367763e75f33f1
         | 
| 7 | 
            +
              data.tar.gz: c0e552ef60413221b435120ee59267f261707c34a3246c74448ec2c519b7df4968ff51452b6003cc826fc425f209f68eae37a47d3af51a0ad6c9e4fe6aa38c42
         | 
    
        data/CHANGELOG.md
    CHANGED
    
    | @@ -1,3 +1,19 @@ | |
| 1 | 
            +
            Release 0.0.12
         | 
| 2 | 
            +
            * Supports session RUNNING state
         | 
| 3 | 
            +
            * Validate auth signature
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            Release 0.0.11
         | 
| 6 | 
            +
            * Add more live SK certs
         | 
| 7 | 
            +
             | 
| 8 | 
            +
            Release 0.0.10
         | 
| 9 | 
            +
            * Allow live certs verification in test env
         | 
| 10 | 
            +
             | 
| 11 | 
            +
            Release 0.0.9
         | 
| 12 | 
            +
            * Fixed verification code
         | 
| 13 | 
            +
             | 
| 14 | 
            +
            Release 0.0.8
         | 
| 15 | 
            +
            * Release cleanup
         | 
| 16 | 
            +
             | 
| 1 17 | 
             
            Release 0.0.7
         | 
| 2 18 | 
             
            * Cert cleanup
         | 
| 3 19 |  | 
    
        data/README.md
    CHANGED
    
    | @@ -113,6 +113,7 @@ After checking out the repo, run `bundle` to install dependencies. For testing c | |
| 113 113 |  | 
| 114 114 | 
             
            * Priit Tark
         | 
| 115 115 | 
             
            * Andri Möll for pointing out user signature issue
         | 
| 116 | 
            +
            * Juri Linkov for pointing out unpack method issue
         | 
| 116 117 |  | 
| 117 118 | 
             
            ## Contributing
         | 
| 118 119 |  | 
| @@ -120,7 +121,6 @@ Bug reports and pull requests are welcome on GitHub at https://github.com/gitlab | |
| 120 121 |  | 
| 121 122 | 
             
            ## Roadmap
         | 
| 122 123 |  | 
| 123 | 
            -
            * Auth signature validation
         | 
| 124 124 | 
             
            * Document sign
         | 
| 125 125 | 
             
            * Rails generators
         | 
| 126 126 |  | 
    
        data/lib/mobile_id/auth.rb
    CHANGED
    
    | @@ -16,13 +16,12 @@ module MobileId | |
| 16 16 | 
             
                  self.uuid = live == true ? uuid : TEST_UUID
         | 
| 17 17 | 
             
                  self.name = live == true ? name : TEST_NAME
         | 
| 18 18 | 
             
                  self.live = live
         | 
| 19 | 
            -
                  init_doc(SecureRandom. | 
| 19 | 
            +
                  init_doc(SecureRandom.hex(40))
         | 
| 20 20 | 
             
                end
         | 
| 21 21 |  | 
| 22 22 | 
             
                def init_doc(doc)
         | 
| 23 23 | 
             
                  self.doc = doc
         | 
| 24 | 
            -
             | 
| 25 | 
            -
                  self.hash = Digest::SHA256.base64digest(self.doc)
         | 
| 24 | 
            +
                  self.hash = Digest::SHA256.digest(doc)
         | 
| 26 25 | 
             
                end
         | 
| 27 26 |  | 
| 28 27 | 
             
                def authenticate!(phone_calling_code: nil, phone:, personal_code:, language: nil, display_text: nil)
         | 
| @@ -51,7 +50,7 @@ module MobileId | |
| 51 50 | 
             
                      relyingPartyName: name,
         | 
| 52 51 | 
             
                      phoneNumber: full_phone.to_s.strip,
         | 
| 53 52 | 
             
                      nationalIdentityNumber: personal_code.to_s.strip,
         | 
| 54 | 
            -
                      hash: hash,
         | 
| 53 | 
            +
                      hash: Base64.strict_encode64(hash),
         | 
| 55 54 | 
             
                      hashType: 'SHA256',
         | 
| 56 55 | 
             
                      language: language,
         | 
| 57 56 | 
             
                      displayText: display_text,
         | 
| @@ -83,11 +82,24 @@ module MobileId | |
| 83 82 | 
             
                  )
         | 
| 84 83 | 
             
                end
         | 
| 85 84 |  | 
| 86 | 
            -
                def  | 
| 85 | 
            +
                def session_request(session_id)
         | 
| 87 86 | 
             
                  response = HTTParty.get(url + "/authentication/session/#{session_id}")
         | 
| 88 87 | 
             
                  raise Error, "#{I18n.t('mobile_id.some_error')} #{response.code} #{response}" if response.code != 200
         | 
| 88 | 
            +
                  response
         | 
| 89 | 
            +
                end
         | 
| 90 | 
            +
             | 
| 91 | 
            +
                def long_poll!(session_id:, doc:)
         | 
| 92 | 
            +
                  response = nil
         | 
| 93 | 
            +
             | 
| 94 | 
            +
                  # Retries until RUNNING state turns to COMPLETE 
         | 
| 95 | 
            +
                  30.times do |i|
         | 
| 96 | 
            +
                    response = session_request(session_id)
         | 
| 97 | 
            +
                    break if response['state'] == 'COMPLETE'
         | 
| 98 | 
            +
                    sleep 1
         | 
| 99 | 
            +
                  end
         | 
| 100 | 
            +
                  raise Error, "#{I18n.t('mobile_id.some_error')} #{response.code} #{response}" if response['state'] != 'COMPLETE'
         | 
| 89 101 |  | 
| 90 | 
            -
                  if response[' | 
| 102 | 
            +
                  if response['result'] != 'OK'
         | 
| 91 103 | 
             
                    message = 
         | 
| 92 104 | 
             
                      case response['result']
         | 
| 93 105 | 
             
                      when "TIMEOUT"
         | 
| @@ -105,7 +117,7 @@ module MobileId | |
| 105 117 | 
             
                      when "SIM_ERROR"
         | 
| 106 118 | 
             
                        I18n.t('mobile_id.sim_error')
         | 
| 107 119 | 
             
                      end
         | 
| 108 | 
            -
             | 
| 120 | 
            +
                      raise Error, message
         | 
| 109 121 | 
             
                  end
         | 
| 110 122 |  | 
| 111 123 | 
             
                  @user_cert = MobileId::Cert.new(response['cert'], live: live)
         | 
| @@ -114,7 +126,8 @@ module MobileId | |
| 114 126 | 
             
                end
         | 
| 115 127 |  | 
| 116 128 | 
             
                def verification_code
         | 
| 117 | 
            -
                   | 
| 129 | 
            +
                  binary = hash.to_s.unpack('B*').first
         | 
| 130 | 
            +
                  "%04d" % (binary[0...6] + binary[-7..-1]).to_i(2)
         | 
| 118 131 | 
             
                end
         | 
| 119 132 |  | 
| 120 133 | 
             
                def given_name
         | 
    
        data/lib/mobile_id/cert.rb
    CHANGED
    
    | @@ -11,7 +11,17 @@ module MobileId | |
| 11 11 | 
             
                    @live_store ||= 
         | 
| 12 12 | 
             
                      build_store([
         | 
| 13 13 | 
             
                        File.join(root_path, 'EE_Certification_Centre_Root_CA.pem.crt'),
         | 
| 14 | 
            -
                        File.join(root_path, ' | 
| 14 | 
            +
                        File.join(root_path, 'EE-GovCA2018.pem.crt'),
         | 
| 15 | 
            +
                        File.join(root_path, 'EID-SK_2011.pem.crt'),
         | 
| 16 | 
            +
                        File.join(root_path, 'EID-SK_2016.pem.crt'),
         | 
| 17 | 
            +
                        File.join(root_path, 'esteid2018.pem.crt'),
         | 
| 18 | 
            +
                        File.join(root_path, 'ESTEID-SK_2011.pem.crt'),
         | 
| 19 | 
            +
                        File.join(root_path, 'ESTEID-SK_2015.pem.crt'),
         | 
| 20 | 
            +
                        File.join(root_path, 'KLASS3-SK_2010_EECCRCA.pem.crt'),
         | 
| 21 | 
            +
                        File.join(root_path, 'KLASS3-SK_2010_EECCRCA_SHA384.pem.crt'),
         | 
| 22 | 
            +
                        File.join(root_path, 'KLASS3-SK_2016_EECCRCA_SHA384.pem.crt'),
         | 
| 23 | 
            +
                        File.join(root_path, 'KLASS3-SK.pem.crt'),
         | 
| 24 | 
            +
                        File.join(root_path, 'NQ-SK_2016.pem.crt')
         | 
| 15 25 | 
             
                      ])
         | 
| 16 26 | 
             
                  end
         | 
| 17 27 |  | 
| @@ -39,17 +49,39 @@ module MobileId | |
| 39 49 | 
             
                end
         | 
| 40 50 |  | 
| 41 51 | 
             
                def verify!(cert, live:)
         | 
| 42 | 
            -
                   | 
| 43 | 
            -
             | 
| 44 | 
            -
                   | 
| 52 | 
            +
                  if live == true
         | 
| 53 | 
            +
                    raise Error, 'User certificate is not valid' unless self.class.live_store.verify(cert)
         | 
| 54 | 
            +
                  else
         | 
| 55 | 
            +
                    raise Error, 'User certificate is not valid' unless self.class.test_store.verify(cert) || self.class.live_store.verify(cert)
         | 
| 56 | 
            +
                  end
         | 
| 57 | 
            +
             | 
| 58 | 
            +
                  raise Error, 'User certificate is not valid [check_key]' unless cert.public_key.check_key
         | 
| 45 59 | 
             
                  raise Error, 'User certificate is expired' unless (cert.not_before..cert.not_after) === Time.now
         | 
| 46 60 |  | 
| 47 61 | 
             
                  true
         | 
| 48 62 | 
             
                end
         | 
| 49 63 |  | 
| 50 | 
            -
                def verify_signature!( | 
| 51 | 
            -
                   | 
| 52 | 
            -
                   | 
| 64 | 
            +
                def verify_signature!(signature_base64, doc)
         | 
| 65 | 
            +
                  signature = Base64.decode64(signature_base64)
         | 
| 66 | 
            +
                  digest = OpenSSL::Digest::SHA256.new(doc)
         | 
| 67 | 
            +
             | 
| 68 | 
            +
                  valid =
         | 
| 69 | 
            +
                    begin
         | 
| 70 | 
            +
                      cert.public_key.verify(digest, signature, doc)
         | 
| 71 | 
            +
                    rescue OpenSSL::PKey::PKeyError
         | 
| 72 | 
            +
                      der_signature = cvc_to_der(signature) # Probably signature is CVC encoded
         | 
| 73 | 
            +
                      cert.public_key.verify(digest, der_signature, doc)
         | 
| 74 | 
            +
                    end
         | 
| 75 | 
            +
             | 
| 76 | 
            +
                  raise Error, 'We could not verify user signature' unless valid
         | 
| 77 | 
            +
                end
         | 
| 78 | 
            +
             | 
| 79 | 
            +
                def cvc_to_der(cvc)
         | 
| 80 | 
            +
                  sign_hex = cvc.unpack('H*').first
         | 
| 81 | 
            +
                  half = sign_hex.size / 2
         | 
| 82 | 
            +
                  i = [OpenSSL::ASN1::Integer.new(sign_hex[0...half].to_i(16)), OpenSSL::ASN1::Integer.new(sign_hex[half..sign_hex.size].to_i(16))]
         | 
| 83 | 
            +
                  seq = OpenSSL::ASN1::Sequence.new(i)
         | 
| 84 | 
            +
                  seq.to_der
         | 
| 53 85 | 
             
                end
         | 
| 54 86 |  | 
| 55 87 | 
             
                def given_name
         | 
| @@ -0,0 +1,29 @@ | |
| 1 | 
            +
            -----BEGIN CERTIFICATE-----
         | 
| 2 | 
            +
            MIIE+DCCBFmgAwIBAgIQMLOwlXoR0oFbj52nmRsnezAKBggqhkjOPQQDBDBaMQsw
         | 
| 3 | 
            +
            CQYDVQQGEwJFRTEbMBkGA1UECgwSU0sgSUQgU29sdXRpb25zIEFTMRcwFQYDVQRh
         | 
| 4 | 
            +
            DA5OVFJFRS0xMDc0NzAxMzEVMBMGA1UEAwwMRUUtR292Q0EyMDE4MB4XDTE4MDkw
         | 
| 5 | 
            +
            NTA5MTEwM1oXDTMzMDkwNTA5MTEwM1owWjELMAkGA1UEBhMCRUUxGzAZBgNVBAoM
         | 
| 6 | 
            +
            ElNLIElEIFNvbHV0aW9ucyBBUzEXMBUGA1UEYQwOTlRSRUUtMTA3NDcwMTMxFTAT
         | 
| 7 | 
            +
            BgNVBAMMDEVFLUdvdkNBMjAxODCBmzAQBgcqhkjOPQIBBgUrgQQAIwOBhgAEAMcb
         | 
| 8 | 
            +
            /dmAcVo/b2azEPS6CfW7fEA2KuHKC53D7ShVNvLz4QUjCdTXjds/4u99jUoYEQec
         | 
| 9 | 
            +
            luVVzMlgEJR1nkN2eOrLAZYxPjwG5HiI1iZEyW9QKVdeEgyvhzWWTNHGjV3HdZRv
         | 
| 10 | 
            +
            7L9o4533PtJAyqJq9OTs6mjsqwFXjH49bfZ6CGmzUJsHo4ICvDCCArgwEgYDVR0T
         | 
| 11 | 
            +
            AQH/BAgwBgEB/wIBATAOBgNVHQ8BAf8EBAMCAQYwNAYDVR0lAQH/BCowKAYIKwYB
         | 
| 12 | 
            +
            BQUHAwkGCCsGAQUFBwMCBggrBgEFBQcDBAYIKwYBBQUHAwEwHQYDVR0OBBYEFH4p
         | 
| 13 | 
            +
            Vuc0knhOd+FvLjMqmHHB/TSfMB8GA1UdIwQYMBaAFH4pVuc0knhOd+FvLjMqmHHB
         | 
| 14 | 
            +
            /TSfMIICAAYDVR0gBIIB9zCCAfMwCAYGBACPegECMAkGBwQAi+xAAQIwMgYLKwYB
         | 
| 15 | 
            +
            BAGDkSEBAQEwIzAhBggrBgEFBQcCARYVaHR0cHM6Ly93d3cuc2suZWUvQ1BTMA0G
         | 
| 16 | 
            +
            CysGAQQBg5EhAQECMA0GCysGAQQBg5F/AQEBMA0GCysGAQQBg5EhAQEFMA0GCysG
         | 
| 17 | 
            +
            AQQBg5EhAQEGMA0GCysGAQQBg5EhAQEHMA0GCysGAQQBg5EhAQEDMA0GCysGAQQB
         | 
| 18 | 
            +
            g5EhAQEEMA0GCysGAQQBg5EhAQEIMA0GCysGAQQBg5EhAQEJMA0GCysGAQQBg5Eh
         | 
| 19 | 
            +
            AQEKMA0GCysGAQQBg5EhAQELMA0GCysGAQQBg5EhAQEMMA0GCysGAQQBg5EhAQEN
         | 
| 20 | 
            +
            MA0GCysGAQQBg5EhAQEOMA0GCysGAQQBg5EhAQEPMA0GCysGAQQBg5EhAQEQMA0G
         | 
| 21 | 
            +
            CysGAQQBg5EhAQERMA0GCysGAQQBg5EhAQESMA0GCysGAQQBg5EhAQETMA0GCysG
         | 
| 22 | 
            +
            AQQBg5EhAQEUMA0GCysGAQQBg5F/AQECMA0GCysGAQQBg5F/AQEDMA0GCysGAQQB
         | 
| 23 | 
            +
            g5F/AQEEMA0GCysGAQQBg5F/AQEFMA0GCysGAQQBg5F/AQEGMDEGCisGAQQBg5Eh
         | 
| 24 | 
            +
            CgEwIzAhBggrBgEFBQcCARYVaHR0cHM6Ly93d3cuc2suZWUvQ1BTMBgGCCsGAQUF
         | 
| 25 | 
            +
            BwEDBAwwCjAIBgYEAI5GAQEwCgYIKoZIzj0EAwQDgYwAMIGIAkIBk698EqetY9Tt
         | 
| 26 | 
            +
            6HwO50CfzdIIjKmlfCI34xKdU7J+wz1tNVu2tHJwEhdsH0e92i969sRDp1RNPlVh
         | 
| 27 | 
            +
            4XFJzI3oQFQCQgGVxmcuVnsy7NUscDZ0erwovmbFOsNxELCANxNSWx5xMqzEIhV8
         | 
| 28 | 
            +
            46opxu10UFDIBBPzkbBenL4h+g/WU7lG78fIhA==
         | 
| 29 | 
            +
            -----END CERTIFICATE-----
         | 
| @@ -0,0 +1,29 @@ | |
| 1 | 
            +
            -----BEGIN CERTIFICATE-----
         | 
| 2 | 
            +
            MIIFADCCA+igAwIBAgIQQyvUTmJDa0ZNgy+/fS0vWjANBgkqhkiG9w0BAQUFADB1
         | 
| 3 | 
            +
            MQswCQYDVQQGEwJFRTEiMCAGA1UECgwZQVMgU2VydGlmaXRzZWVyaW1pc2tlc2t1
         | 
| 4 | 
            +
            czEoMCYGA1UEAwwfRUUgQ2VydGlmaWNhdGlvbiBDZW50cmUgUm9vdCBDQTEYMBYG
         | 
| 5 | 
            +
            CSqGSIb3DQEJARYJcGtpQHNrLmVlMB4XDTExMDMxODEwMTExMVoXDTI0MDMxODEw
         | 
| 6 | 
            +
            MTExMVowYTELMAkGA1UEBhMCRUUxIjAgBgNVBAoMGUFTIFNlcnRpZml0c2Vlcmlt
         | 
| 7 | 
            +
            aXNrZXNrdXMxFDASBgNVBAMMC0VJRC1TSyAyMDExMRgwFgYJKoZIhvcNAQkBFglw
         | 
| 8 | 
            +
            a2lAc2suZWUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC2Q1zKMt7D
         | 
| 9 | 
            +
            ytbntSLoYAAVkEwV+5djSr0vSIG/Zm9seKyx+2PY8sVzXRoUD1CMIYnstDhBSKMj
         | 
| 10 | 
            +
            n2/+HpA7pOipAIAMrk6uKnpSTTdFbQ+0fzJVPokBgsdsQ6R5TZFPB1nu5zgRRlQm
         | 
| 11 | 
            +
            WIFxOpDiNHTt0LObUhWLXzUb31vc1Wmao2IYcDx1TCs/1E9+camiCl2B5lXrPEU3
         | 
| 12 | 
            +
            wBq4waD54izS20DK05+6+hHRg+TqoIg5YSmwbjStEyd/8AQeokwVloyyH49bnpel
         | 
| 13 | 
            +
            uADcZJgxxE9ZUvVWHoxYfmg1IeRU72jHTcIjNf1cQN2+9/FtHQMnGzDBgmAPpghw
         | 
| 14 | 
            +
            Wr3JtW0JWvMXAgMBAAGjggGeMIIBmjASBgNVHRMBAf8ECDAGAQH/AgEAMA4GA1Ud
         | 
| 15 | 
            +
            DwEB/wQEAwIBBjCB9AYDVR0gBIHsMIHpMIHmBgsrBgEEAc4fZAEBATCB1jCBsAYI
         | 
| 16 | 
            +
            KwYBBQUHAgIwgaMegaAASwBhAHMAdQB0AGEAdABhAGsAcwBlACAAZgD8APwAcwBp
         | 
| 17 | 
            +
            AGwAaQBzAHQAZQBsAGUAIABpAHMAaQBrAHUAdABlAGwAZQAgAHMAZQByAHQAaQBm
         | 
| 18 | 
            +
            AGkAawBhAGEAdABpAGQAZQAgAHYA5ABsAGoAYQBzAHQAYQBtAGkAcwBlAGsAcwAg
         | 
| 19 | 
            +
            AGsAbwBtAG0AZQByAHQAcwBhAGwAdQBzAGUAbAAuMCEGCCsGAQUFBwIBFhVodHRw
         | 
| 20 | 
            +
            czovL3d3dy5zay5lZS9DUFMwHQYDVR0OBBYEFLEQlwL63YbGeEGkwzKI+/4f58AF
         | 
| 21 | 
            +
            MB8GA1UdIwQYMBaAFBLyWj7qVhy/zQas8fElyalL1BSZMD0GA1UdHwQ2MDQwMqAw
         | 
| 22 | 
            +
            oC6GLGh0dHA6Ly93d3cuc2suZWUvcmVwb3NpdG9yeS9jcmxzL2VlY2NyY2EuY3Js
         | 
| 23 | 
            +
            MA0GCSqGSIb3DQEBBQUAA4IBAQAxau3ohdFkpvaiVUR7arNovQUZRCG9Ge3udqHY
         | 
| 24 | 
            +
            emovyU7N60Hgomc/ZG+uunScATTUhBcv9a5zkQxb1dQ1LYDRfNr9CqI0QvSEE4t9
         | 
| 25 | 
            +
            Sfu3fOhyLrlmb3s8xhhYLJBJ325uDvtO/qFeXLlcRXMF5nU8FE2IyaZP1CHYKVh5
         | 
| 26 | 
            +
            QNPPQiGZGSox5oOkCvmt4lUl4lZUwVie75us/WtrD6DJeREBTEDHORIfg8E9RA1y
         | 
| 27 | 
            +
            /7t2gT9vrU8tabeSZlD03qwXe0nJ9RscI/P0HT8vuo1PGzCfbH9xFqfoZ2jdJ0Hz
         | 
| 28 | 
            +
            xrFM8VsL/AtCw0dmrxRHLlZzqSw0G7b0W40mwOQauO2gbMfn
         | 
| 29 | 
            +
            -----END CERTIFICATE-----
         | 
| @@ -0,0 +1,39 @@ | |
| 1 | 
            +
            -----BEGIN CERTIFICATE-----
         | 
| 2 | 
            +
            MIIG4jCCBcqgAwIBAgIQO4A6a2nBKoxXxVAFMRvE2jANBgkqhkiG9w0BAQwFADB1
         | 
| 3 | 
            +
            MQswCQYDVQQGEwJFRTEiMCAGA1UECgwZQVMgU2VydGlmaXRzZWVyaW1pc2tlc2t1
         | 
| 4 | 
            +
            czEoMCYGA1UEAwwfRUUgQ2VydGlmaWNhdGlvbiBDZW50cmUgUm9vdCBDQTEYMBYG
         | 
| 5 | 
            +
            CSqGSIb3DQEJARYJcGtpQHNrLmVlMCAXDTE2MDgzMDA5MjEwOVoYDzIwMzAxMjE3
         | 
| 6 | 
            +
            MjM1OTU5WjBgMQswCQYDVQQGEwJFRTEiMCAGA1UECgwZQVMgU2VydGlmaXRzZWVy
         | 
| 7 | 
            +
            aW1pc2tlc2t1czEXMBUGA1UEYQwOTlRSRUUtMTA3NDcwMTMxFDASBgNVBAMMC0VJ
         | 
| 8 | 
            +
            RC1TSyAyMDE2MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAr7XWFN0j
         | 
| 9 | 
            +
            1CFoGIuVe9xRezEnA0Tk3vmvIpvURX+y7Z5DJsfub2mtpSLtbhXjAeynq9QV78zj
         | 
| 10 | 
            +
            gQ73pNVGh+GQ6oPG7HF8KIlZuIYsf1+gBxPxNiLa0+sCWxa6p4HQbgdgYRVGod4I
         | 
| 11 | 
            +
            Qbib9KbOki3wjCG5WiWh1SP9qcuTZVY+9zawkSMf65Px/Y4ChjtNFtY66MEvsPCh
         | 
| 12 | 
            +
            lHHfsBNiUbtZ68jJNYCECjtkm0vxz2iiSXB2WRIv3/hTrRgMJ2CNMyFjRQoGQlpH
         | 
| 13 | 
            +
            010+fcisObKeyPwA8kI22Oto9MzLw7KsY524OD3B1L5MExYxHD916XIEHT/9gBP2
         | 
| 14 | 
            +
            Zn8qZu/BllKdSIapOIJW9ZEw+3w5UOU6LT3tTSbAzeQAnD3eCABPifYwHYC0lmKs
         | 
| 15 | 
            +
            PpQJqtx0Q3Jbm3BGReYiZ9KuK36nF/G78YjhM+yioERr2B/cKf31j0W/GuGvyHak
         | 
| 16 | 
            +
            bokwy7nsbL30sTuRLR70Oqi5UBMy4e8J2CduR3R3NJw5UqpScJIchngsLAx+WsyC
         | 
| 17 | 
            +
            0w38AmMewMBcnlp/QbakKo52HrsYRR1m+NhCVDBy45Lzl8I0/OGd9Ikdg1h7T7SI
         | 
| 18 | 
            +
            guZVpyzys8E0yfrcS5YMEd9hMqVPr7rszXCzbxyw0tVIk8QLMw/lI+XE1Oi7Skgz
         | 
| 19 | 
            +
            A2i5Vpa6i2K0ard6GPHzRqGPTkjc5Z4DzZMCAwEAAaOCAn8wggJ7MB8GA1UdIwQY
         | 
| 20 | 
            +
            MBaAFBLyWj7qVhy/zQas8fElyalL1BSZMB0GA1UdDgQWBBScCagHhww9rC6H/KCu
         | 
| 21 | 
            +
            0vtlSYgo+zAOBgNVHQ8BAf8EBAMCAQYwgcQGA1UdIASBvDCBuTA8BgcEAIvsQAEC
         | 
| 22 | 
            +
            MDEwLwYIKwYBBQUHAgEWI2h0dHBzOi8vd3d3LnNrLmVlL3JlcG9zaXRvb3JpdW0v
         | 
| 23 | 
            +
            Q1BTMDwGBwQAi+xAAQAwMTAvBggrBgEFBQcCARYjaHR0cHM6Ly93d3cuc2suZWUv
         | 
| 24 | 
            +
            cmVwb3NpdG9vcml1bS9DUFMwOwYGBACPegECMDEwLwYIKwYBBQUHAgEWI2h0dHBz
         | 
| 25 | 
            +
            Oi8vd3d3LnNrLmVlL3JlcG9zaXRvb3JpdW0vQ1BTMBIGA1UdEwEB/wQIMAYBAf8C
         | 
| 26 | 
            +
            AQAwJwYDVR0lBCAwHgYIKwYBBQUHAwkGCCsGAQUFBwMCBggrBgEFBQcDBDB8Bggr
         | 
| 27 | 
            +
            BgEFBQcBAQRwMG4wIAYIKwYBBQUHMAGGFGh0dHA6Ly9vY3NwLnNrLmVlL0NBMEoG
         | 
| 28 | 
            +
            CCsGAQUFBzAChj5odHRwOi8vd3d3LnNrLmVlL2NlcnRzL0VFX0NlcnRpZmljYXRp
         | 
| 29 | 
            +
            b25fQ2VudHJlX1Jvb3RfQ0EuZGVyLmNydDBBBgNVHR4EOjA4oTYwBIICIiIwCocI
         | 
| 30 | 
            +
            AAAAAAAAAAAwIocgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwJQYI
         | 
| 31 | 
            +
            KwYBBQUHAQMEGTAXMBUGCCsGAQUFBwsCMAkGBwQAi+xJAQEwPQYDVR0fBDYwNDAy
         | 
| 32 | 
            +
            oDCgLoYsaHR0cDovL3d3dy5zay5lZS9yZXBvc2l0b3J5L2NybHMvZWVjY3JjYS5j
         | 
| 33 | 
            +
            cmwwDQYJKoZIhvcNAQEMBQADggEBAKSIoud5DSfhDU6yp+VrXYL40wi5zFTf19ha
         | 
| 34 | 
            +
            /kO/zzLxZ1hf45VJmSyukMWaWXEqhaLWBZuw5kP78mQ0HyaRUennN0hom/pEiBz6
         | 
| 35 | 
            +
            cuz9oc+xlmPAZM25ZoaLqa4upP2/+NCWoRTzYkIdc9MEECs5RMBUmyT1G4s8J6n8
         | 
| 36 | 
            +
            L2M2yYadBMvPGJS3yXxYdc/b3a2foiw3kKa/q1tXAHXZCsuxFVYxXdZt3AwInYHe
         | 
| 37 | 
            +
            mCVKjZg8BaRpvIEXd3AgJwt+9bpV/x0/MouRPNRv0jjWIx1sAlL94hO74WZDMFbZ
         | 
| 38 | 
            +
            VaV6gpG77X2P3dPHKFIRWzjtSQJX4C5n1uvQBxO4ABoMswq0lq0=
         | 
| 39 | 
            +
            -----END CERTIFICATE-----
         | 
| @@ -0,0 +1,29 @@ | |
| 1 | 
            +
            -----BEGIN CERTIFICATE-----
         | 
| 2 | 
            +
            MIIFBTCCA+2gAwIBAgIQKVKTqv2MxtRNgzCjwmRRDTANBgkqhkiG9w0BAQUFADB1
         | 
| 3 | 
            +
            MQswCQYDVQQGEwJFRTEiMCAGA1UECgwZQVMgU2VydGlmaXRzZWVyaW1pc2tlc2t1
         | 
| 4 | 
            +
            czEoMCYGA1UEAwwfRUUgQ2VydGlmaWNhdGlvbiBDZW50cmUgUm9vdCBDQTEYMBYG
         | 
| 5 | 
            +
            CSqGSIb3DQEJARYJcGtpQHNrLmVlMB4XDTExMDMxODEwMTQ1OVoXDTI0MDMxODEw
         | 
| 6 | 
            +
            MTQ1OVowZDELMAkGA1UEBhMCRUUxIjAgBgNVBAoMGUFTIFNlcnRpZml0c2Vlcmlt
         | 
| 7 | 
            +
            aXNrZXNrdXMxFzAVBgNVBAMMDkVTVEVJRC1TSyAyMDExMRgwFgYJKoZIhvcNAQkB
         | 
| 8 | 
            +
            Fglwa2lAc2suZWUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCz6Xxs
         | 
| 9 | 
            +
            Zh6r/aXcNe3kSpNMOqmQoAXUpzzcr4ZSaGZh/7JHIiplvNi6tbW/lK7sAiRsb65K
         | 
| 10 | 
            +
            zMWROEauld66ggbDPga6kU97C+AXGu7+DROXstjUOv6VlrHZVAnLmIOkycpWaxjM
         | 
| 11 | 
            +
            +EfQPZuDxEbkw96B3/fG69Zbp3s9y6WEhwU5Y9IiQl8YTkGnNUxidQbON1BGQm+H
         | 
| 12 | 
            +
            VEsgTf22J6r6G3FsE07rnMNskNC3DjuLSCUKF4kH0rVGVK9BdiCdFaZjHEykjwjI
         | 
| 13 | 
            +
            GzqnyxyRKe4YbJ6B9ABm95eSFgMBHtZEYU+q0VUIQGhAGAurOTXjWi1TssA42mnL
         | 
| 14 | 
            +
            GQZEI5GXMXtabp51AgMBAAGjggGgMIIBnDASBgNVHRMBAf8ECDAGAQH/AgEAMA4G
         | 
| 15 | 
            +
            A1UdDwEB/wQEAwIBBjCB9gYDVR0gBIHuMIHrMIHoBgsrBgEEAc4fZAEBATCB2DCB
         | 
| 16 | 
            +
            sgYIKwYBBQUHAgIwgaUegaIASwBhAHMAdQB0AGEAdABhAGsAcwBlACAAaQBzAGkA
         | 
| 17 | 
            +
            awB1AHQAdAD1AGUAbgBkAGEAdgBhAGwAZQAgAGQAbwBrAHUAbQBlAG4AZABpAGwA
         | 
| 18 | 
            +
            ZQAgAGsAYQBuAHQAYQB2AGEAdABlACAAcwBlAHIAdABpAGYAaQBrAGEAYQB0AGkA
         | 
| 19 | 
            +
            ZABlACAAdgDkAGwAagBhAHMAdABhAG0AaQBzAGUAawBzAC4wIQYIKwYBBQUHAgEW
         | 
| 20 | 
            +
            FWh0dHBzOi8vd3d3LnNrLmVlL0NQUzAdBgNVHQ4EFgQUe2ryVVBcuNl6CIdBrvqi
         | 
| 21 | 
            +
            Kz1bV3YwHwYDVR0jBBgwFoAUEvJaPupWHL/NBqzx8SXJqUvUFJkwPQYDVR0fBDYw
         | 
| 22 | 
            +
            NDAyoDCgLoYsaHR0cDovL3d3dy5zay5lZS9yZXBvc2l0b3J5L2NybHMvZWVjY3Jj
         | 
| 23 | 
            +
            YS5jcmwwDQYJKoZIhvcNAQEFBQADggEBAKC4IN3FC2gVDIH05TNMgFrQOCGSnXhz
         | 
| 24 | 
            +
            oJclRLoQ81BCOXTZI4qn7N74FHEnrAy6uNG7SS5qANqSaPIL8dp63jg/L4qn4iWa
         | 
| 25 | 
            +
            B5q5GGJOV07SnTHS7gUrqChGClnUeHxiZbL13PkP37Lnc+TKl1SKfgtn5FbH5cqr
         | 
| 26 | 
            +
            hvbA/VF3Yzlimu+L7EVohW9HKxZ//z8kDn6ieiPFfZdTOov/0eXVLlxqklybUuS6
         | 
| 27 | 
            +
            LYRRDiqQupgBKQBTwNbC8x0UHX00HokW+dCVcQvsUbv4xLhRq/MvyTthE+RdbkrV
         | 
| 28 | 
            +
            0JuzbfZvADfj75nA3+ZAzFYS5ZpMOjZ9p4rQVKpzQTklrF0m6mkdcEo=
         | 
| 29 | 
            +
            -----END CERTIFICATE-----
         | 
| @@ -0,0 +1,24 @@ | |
| 1 | 
            +
            -----BEGIN CERTIFICATE-----
         | 
| 2 | 
            +
            MIIEBDCCAuygAwIBAgIEPNkU9TANBgkqhkiG9w0BAQUFADBdMRgwFgYJKoZIhvcN
         | 
| 3 | 
            +
            AQkBFglwa2lAc2suZWUxCzAJBgNVBAYTAkVFMSIwIAYDVQQKExlBUyBTZXJ0aWZp
         | 
| 4 | 
            +
            dHNlZXJpbWlza2Vza3VzMRAwDgYDVQQDEwdKdXVyLVNLMB4XDTAyMDUwODEyMDcx
         | 
| 5 | 
            +
            N1oXDTEyMDUwNTExMDcxN1owgY4xGDAWBgkqhkiG9w0BCQEWCXBraUBzay5lZTEL
         | 
| 6 | 
            +
            MAkGA1UEBhMCRUUxIjAgBgNVBAoTGUFTIFNlcnRpZml0c2VlcmltaXNrZXNrdXMx
         | 
| 7 | 
            +
            ITAfBgNVBAsTGFNlcnRpZml0c2VlcmltaXN0ZWVudXNlZDEKMAgGA1UEBRMBMTES
         | 
| 8 | 
            +
            MBAGA1UEAxMJS0xBU1MzLVNLMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
         | 
| 9 | 
            +
            AQEAvIIeK3GJxoPCXVwan+HjJwYGaH3nb/rTPEqg5v9e1c7dnTDBdD2Yteg+lUdH
         | 
| 10 | 
            +
            BZDHLj1Tz+J/W9Foc0dzEr96S8+6nMXoonK2x0854JNH2UVbS/+YOGUM6iWSxkHw
         | 
| 11 | 
            +
            525tvn5tFaIQoaeh46aQFp9Dngcnv4Gatd0/7NCkLggjFrKmnNTPINpLAG9VoCpV
         | 
| 12 | 
            +
            yIMvcVCyTNvSQ+n33ToPO5vtULNYOtCF9MDVND+uNRE2o0tWIG0l84owYPA47tJO
         | 
| 13 | 
            +
            LgCpAxLNFR5Ys0nB/ofBYcO+YiCri0yc6t7ZPs/vcfbR6czIwW0GMjyHmVPLB+/W
         | 
| 14 | 
            +
            HS3P1sk29DdgIC42RTMthJS6ZQIDAQABo4GZMIGWMA8GA1UdEwQIMAYBAf8CAQAw
         | 
| 15 | 
            +
            DgYDVR0PAQH/BAQDAgHmMDMGA1UdHwQsMCowKKAmoCSGImh0dHA6Ly93d3cuc2su
         | 
| 16 | 
            +
            ZWUvY3Jscy9qdXVyL2NybC5jcmwwHwYDVR0jBBgwFoAUBKp6R6Pkia8azwpApxg/
         | 
| 17 | 
            +
            b+/pfb4wHQYDVR0OBBYEFOU/DJ1xPW+8Gb+a9G6/Cf5A652WMA0GCSqGSIb3DQEB
         | 
| 18 | 
            +
            BQUAA4IBAQASvWB+YrgN23EMLW7C5/XUwQLNN1RMDhr6UzOo5XHZ3pxUXq2Erk5g
         | 
| 19 | 
            +
            giS+UJIxkQaSg4OHRru8KTchoJDvS2neeYHOz05zJcAIwoy2GGkHq1iVN+QZaprD
         | 
| 20 | 
            +
            aDNYR5GGKgJb3FZrMtyX4dNwnrZzMFzd6t5YibCW+BDPAmqGJvNHzJ5YYdA7I3WT
         | 
| 21 | 
            +
            9Baan1ncKd4FtUVb54fppd19NkbCKKSUd7qRYDduNYqVs1C/C0qqLq4TrxoxoxSo
         | 
| 22 | 
            +
            +WNLiD01896sIRiPIy8qDOAXJU67382J5XXETe9wZO6o7+NaG0CrpzVY1OaaD2O6
         | 
| 23 | 
            +
            Wv/vSpxE2ugqaf0WsP35+coFCWdM2uHZ
         | 
| 24 | 
            +
            -----END CERTIFICATE-----
         | 
| @@ -0,0 +1,27 @@ | |
| 1 | 
            +
            -----BEGIN CERTIFICATE-----
         | 
| 2 | 
            +
            MIIErDCCA5SgAwIBAgIQAznVp1LayatNgy6bN8f9QjANBgkqhkiG9w0BAQUFADB1
         | 
| 3 | 
            +
            MQswCQYDVQQGEwJFRTEiMCAGA1UECgwZQVMgU2VydGlmaXRzZWVyaW1pc2tlc2t1
         | 
| 4 | 
            +
            czEoMCYGA1UEAwwfRUUgQ2VydGlmaWNhdGlvbiBDZW50cmUgUm9vdCBDQTEYMBYG
         | 
| 5 | 
            +
            CSqGSIb3DQEJARYJcGtpQHNrLmVlMB4XDTExMDMxODEwMDYxOFoXDTI0MDMxODEw
         | 
| 6 | 
            +
            MDYxOFowbTELMAkGA1UEBhMCRUUxIjAgBgNVBAoTGUFTIFNlcnRpZml0c2Vlcmlt
         | 
| 7 | 
            +
            aXNrZXNrdXMxITAfBgNVBAsTGFNlcnRpZml0c2VlcmltaXN0ZWVudXNlZDEXMBUG
         | 
| 8 | 
            +
            A1UEAxMOS0xBU1MzLVNLIDIwMTAwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK
         | 
| 9 | 
            +
            AoIBAQCrlaYRX2v89k8Hd0ADaOfnUcIn7iM6aOXkAR+jp5827ZhDqDyNddF9ZUoB
         | 
| 10 | 
            +
            gPghGNIrkHbH7qwex39YnI0ka24lCjcwEMvQMPbyPnX/a4RyJ+wEZttmjBl++Ffr
         | 
| 11 | 
            +
            ZK54L+vD7Dyy4YYB0Og9ktB4qptsDBj+giiv/MGPeGeNs3TacJdNb7+3splTPtPK
         | 
| 12 | 
            +
            lDfrufvq4H6jNOv9S9bC+j2VVY9uCFXUro8AA3hoOEKJdSjlpYCa51N8KGLVJYRu
         | 
| 13 | 
            +
            c/K81xqi054Jz+Cy/HY/AcXkk2JkxlpJoEXmcuTkxjO/QE/Xbd+mRJHnq6+HurOi
         | 
| 14 | 
            +
            KcxKwZCPAa+d+dvRPkbyq9ohMXH9AgMBAAGjggE+MIIBOjASBgNVHRMBAf8ECDAG
         | 
| 15 | 
            +
            AQH/AgEAMA4GA1UdDwEB/wQEAwIBxjCBlAYDVR0gBIGMMIGJMIGGBgsrBgEEAc4f
         | 
| 16 | 
            +
            ZAEBATB3MCEGCCsGAQUFBwIBFhVodHRwczovL3d3dy5zay5lZS9jcHMwUgYIKwYB
         | 
| 17 | 
            +
            BQUHAgIwRh5EAEEAcwB1AHQAdQBzAGUAIABzAGUAcgB0AGkAZgBpAGsAYQBhAHQA
         | 
| 18 | 
            +
            LgAgAEMAbwByAHAAbwByAGEAdABlACAASQBEAC4wHQYDVR0OBBYEFF11FBGM9KWO
         | 
| 19 | 
            +
            Qo97skBEo+7WejtyMB8GA1UdIwQYMBaAFBLyWj7qVhy/zQas8fElyalL1BSZMD0G
         | 
| 20 | 
            +
            A1UdHwQ2MDQwMqAwoC6GLGh0dHA6Ly93d3cuc2suZWUvcmVwb3NpdG9yeS9jcmxz
         | 
| 21 | 
            +
            L2VlY2NyY2EuY3JsMA0GCSqGSIb3DQEBBQUAA4IBAQC3qNBgY2I9Wqm4LZYKAjCY
         | 
| 22 | 
            +
            kc2Nltm1RS9frMvQJ4aEE4Y4TtW2LPcQp2lenOf9aYdEB8G/E9CytZSPlFuvDdsd
         | 
| 23 | 
            +
            knj6fg1XCeu6ITR2wIkxJeAeLQvrFEfb1mcAa5tU9RNalZhYc7MFMFQTjQP+GBNx
         | 
| 24 | 
            +
            z+KIjNDVASFdv7TCe7GBjsW8Dfes9lQGHaWsBRkHCyuPGIHfH+cmMuhLtWqa4Qlg
         | 
| 25 | 
            +
            4f54kcsGO7s4buKtk6XqEj8Cj2ITdfk/aUs9QoxxkYWGwSUlCueTamzufXEJo9yz
         | 
| 26 | 
            +
            5Jp6IFdGjotmjb/EBUCf2sFfI83a4Cm1D3L3/KYb5g3cYlDEpPWNqbNuA1XosIqK
         | 
| 27 | 
            +
            -----END CERTIFICATE-----
         | 
| @@ -0,0 +1,30 @@ | |
| 1 | 
            +
            -----BEGIN CERTIFICATE-----
         | 
| 2 | 
            +
            MIIFKjCCBBKgAwIBAgIQChm34x8ah3BVcFedls2c2jANBgkqhkiG9w0BAQwFADB1
         | 
| 3 | 
            +
            MQswCQYDVQQGEwJFRTEiMCAGA1UECgwZQVMgU2VydGlmaXRzZWVyaW1pc2tlc2t1
         | 
| 4 | 
            +
            czEoMCYGA1UEAwwfRUUgQ2VydGlmaWNhdGlvbiBDZW50cmUgUm9vdCBDQTEYMBYG
         | 
| 5 | 
            +
            CSqGSIb3DQEJARYJcGtpQHNrLmVlMB4XDTE1MDYwNDEzNTAyMVoXDTI0MDMxNzIy
         | 
| 6 | 
            +
            MDAwMFowbTELMAkGA1UEBhMCRUUxIjAgBgNVBAoTGUFTIFNlcnRpZml0c2Vlcmlt
         | 
| 7 | 
            +
            aXNrZXNrdXMxITAfBgNVBAsTGFNlcnRpZml0c2VlcmltaXN0ZWVudXNlZDEXMBUG
         | 
| 8 | 
            +
            A1UEAxMOS0xBU1MzLVNLIDIwMTAwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK
         | 
| 9 | 
            +
            AoIBAQCrlaYRX2v89k8Hd0ADaOfnUcIn7iM6aOXkAR+jp5827ZhDqDyNddF9ZUoB
         | 
| 10 | 
            +
            gPghGNIrkHbH7qwex39YnI0ka24lCjcwEMvQMPbyPnX/a4RyJ+wEZttmjBl++Ffr
         | 
| 11 | 
            +
            ZK54L+vD7Dyy4YYB0Og9ktB4qptsDBj+giiv/MGPeGeNs3TacJdNb7+3splTPtPK
         | 
| 12 | 
            +
            lDfrufvq4H6jNOv9S9bC+j2VVY9uCFXUro8AA3hoOEKJdSjlpYCa51N8KGLVJYRu
         | 
| 13 | 
            +
            c/K81xqi054Jz+Cy/HY/AcXkk2JkxlpJoEXmcuTkxjO/QE/Xbd+mRJHnq6+HurOi
         | 
| 14 | 
            +
            KcxKwZCPAa+d+dvRPkbyq9ohMXH9AgMBAAGjggG8MIIBuDASBgNVHRMBAf8ECDAG
         | 
| 15 | 
            +
            AQH/AgEAMA4GA1UdDwEB/wQEAwIBxjCBlAYDVR0gBIGMMIGJMIGGBgsrBgEEAc4f
         | 
| 16 | 
            +
            ZAEBATB3MCEGCCsGAQUFBwIBFhVodHRwczovL3d3dy5zay5lZS9jcHMwUgYIKwYB
         | 
| 17 | 
            +
            BQUHAgIwRh5EAEEAcwB1AHQAdQBzAGUAIABzAGUAcgB0AGkAZgBpAGsAYQBhAHQA
         | 
| 18 | 
            +
            LgAgAEMAbwByAHAAbwByAGEAdABlACAASQBEAC4wHQYDVR0OBBYEFF11FBGM9KWO
         | 
| 19 | 
            +
            Qo97skBEo+7WejtyMB8GA1UdIwQYMBaAFBLyWj7qVhy/zQas8fElyalL1BSZMHwG
         | 
| 20 | 
            +
            CCsGAQUFBwEBBHAwbjAgBggrBgEFBQcwAYYUaHR0cDovL29jc3Auc2suZWUvQ0Ew
         | 
| 21 | 
            +
            SgYIKwYBBQUHMAKGPmh0dHA6Ly93d3cuc2suZWUvY2VydHMvRUVfQ2VydGlmaWNh
         | 
| 22 | 
            +
            dGlvbl9DZW50cmVfUm9vdF9DQS5kZXIuY3J0MD0GA1UdHwQ2MDQwMqAwoC6GLGh0
         | 
| 23 | 
            +
            dHA6Ly93d3cuc2suZWUvcmVwb3NpdG9yeS9jcmxzL2VlY2NyY2EuY3JsMA0GCSqG
         | 
| 24 | 
            +
            SIb3DQEBDAUAA4IBAQB4/0TLXdtMTnzl8Z810lR3pESCq6ueQRvGPPl2isGe3ldA
         | 
| 25 | 
            +
            9PhKZ7j6323ifI2ldOdMeU12gd4pzuHXieFC1YhswqXCR1huLNu1KA8PRhgxdOBQ
         | 
| 26 | 
            +
            1etRSkZTIftMhBgpxot2Tu4G2xKQ7wfetdqnrUQ/u++BuAhuHA2xsma236eQ7z3i
         | 
| 27 | 
            +
            zoxCOSc+FMpQT/SY9NvKtZlmFEPycxZxu0uWCQtBbx+b/MAYKgq2/vMvLO4lyRqk
         | 
| 28 | 
            +
            eSRuLMZT4AA42HgggUwL7hWiwedyEqvwq0Sg3e92F2wBff+Xah/WeZBioxul1TRt
         | 
| 29 | 
            +
            zFcge6BTfF2S0RdbaaOWeXsbNaA/azZ4WrNj1CTv
         | 
| 30 | 
            +
            -----END CERTIFICATE-----
         | 
| @@ -0,0 +1,37 @@ | |
| 1 | 
            +
            -----BEGIN CERTIFICATE-----
         | 
| 2 | 
            +
            MIIGgTCCBWmgAwIBAgIQXlM7EyVgNCtYSVcwizB43DANBgkqhkiG9w0BAQwFADB1
         | 
| 3 | 
            +
            MQswCQYDVQQGEwJFRTEiMCAGA1UECgwZQVMgU2VydGlmaXRzZWVyaW1pc2tlc2t1
         | 
| 4 | 
            +
            czEoMCYGA1UEAwwfRUUgQ2VydGlmaWNhdGlvbiBDZW50cmUgUm9vdCBDQTEYMBYG
         | 
| 5 | 
            +
            CSqGSIb3DQEJARYJcGtpQHNrLmVlMCAXDTE2MTIwODEyNTA1NloYDzIwMzAxMjE3
         | 
| 6 | 
            +
            MjM1OTU5WjCBhjELMAkGA1UEBhMCRUUxIjAgBgNVBAoMGUFTIFNlcnRpZml0c2Vl
         | 
| 7 | 
            +
            cmltaXNrZXNrdXMxITAfBgNVBAsMGFNlcnRpZml0c2VlcmltaXN0ZWVudXNlZDEX
         | 
| 8 | 
            +
            MBUGA1UEYQwOTlRSRUUtMTA3NDcwMTMxFzAVBgNVBAMMDktMQVNTMy1TSyAyMDE2
         | 
| 9 | 
            +
            MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAlkOLeKQPKK1U8VK7z2Dz
         | 
| 10 | 
            +
            t2SX2KblGqrBmOXfzlImzXHxGVopSeji2/4MdR5Ok6NJqXxanbyufXXRTeuE5nQ8
         | 
| 11 | 
            +
            Olzr5+9U21DPmVUADFNWnDLy6NWyqE3CvrYp7tVOHbfTb9Mf3ECvQNt8YM0HGwdS
         | 
| 12 | 
            +
            fc8kGXuX8d4oixxeG4AD+wrj1+LJ0ioaQFlS6Tbcwq3xEO0WVv1hMrJOoMmPpaqr
         | 
| 13 | 
            +
            vRLcoikpmjnPm/Gtfx64FcyXiMmNxFDnROVMgr1OQKbxAdlX3Iu32fcXjXesCTcA
         | 
| 14 | 
            +
            CLlNRMi5Sb1wowjGEpqL2H53+JDIrdE7hM0uUqX4aaT5etaUh0o2hxOBHg3m6WRA
         | 
| 15 | 
            +
            ZmBPqO1BqIBN6PRMWYgab7BBtJMUKXE+FUaNy9Lb8jraX85t3IwN/hbbMx3wUAqZ
         | 
| 16 | 
            +
            voQVIaJu2tsP8eTGJUd6jES9q9rH788LNf2w9o16blr1cM0AkzfbPf1ktClERcQd
         | 
| 17 | 
            +
            +iEhAPluSjKwMHIehRQGwGGuo7db4QXKhXDXPGK5YRw6Q56mp+BpSqJJqpdlQCie
         | 
| 18 | 
            +
            EXbHm9sHsoP5yaQygZI8nJpd0nlpdcTq91aEjrWuuksQTNDG9++8NSAql2G/BVCe
         | 
| 19 | 
            +
            sWx/zR0KtcWecMPUVfe7qEEFurWsewpLgZFsk5RLtNGwyTEgHHBfJqAJC8l2VMfb
         | 
| 20 | 
            +
            bsEW+tcjdMqb6BHgT6hNCx8CAwEAAaOCAfcwggHzMBIGA1UdEwEB/wQIMAYBAf8C
         | 
| 21 | 
            +
            AQAwDgYDVR0PAQH/BAQDAgHGMIHTBgNVHSAEgcswgcgwgYQGCSsGAQQBzh8HAzB3
         | 
| 22 | 
            +
            MCEGCCsGAQUFBwIBFhVodHRwczovL3d3dy5zay5lZS9jcHMwUgYIKwYBBQUHAgIw
         | 
| 23 | 
            +
            Rh5EAEEAcwB1AHQAdQBzAGUAIABzAGUAcgB0AGkAZgBpAGsAYQBhAHQALgAgAEMA
         | 
| 24 | 
            +
            bwByAHAAbwByAGEAdABlACAASQBEAC4wCAYGZ4EMAQICMAsGCSsGAQQBzh8HAjAI
         | 
| 25 | 
            +
            BgYEAI96AQEwCQYHBACL7EABATAIBgYEAI96AQcwCQYHBACL7EABAzAdBgNVHQ4E
         | 
| 26 | 
            +
            FgQUrl5Y9fLy2cGO2e9OB9t1ylDihwAwHwYDVR0jBBgwFoAUEvJaPupWHL/NBqzx
         | 
| 27 | 
            +
            8SXJqUvUFJkweAYIKwYBBQUHAQEEbDBqMCAGCCsGAQUFBzABhhRodHRwOi8vb2Nz
         | 
| 28 | 
            +
            cC5zay5lZS9DQTBGBggrBgEFBQcwAoY6aHR0cDovL3NrLmVlL2NlcnRzL0VFX0Nl
         | 
| 29 | 
            +
            cnRpZmljYXRpb25fQ2VudHJlX1Jvb3RfQ0EuZGVyLmNydDA9BgNVHR8ENjA0MDKg
         | 
| 30 | 
            +
            MKAuhixodHRwOi8vd3d3LnNrLmVlL3JlcG9zaXRvcnkvY3Jscy9lZWNjcmNhLmNy
         | 
| 31 | 
            +
            bDANBgkqhkiG9w0BAQwFAAOCAQEAah2vGqi+Pe5+CPtarh0vCQWOm233nl5Y9qL+
         | 
| 32 | 
            +
            JqG5PccowQ41kzf4qknmP6BHfisYGQsRc75K07A+/BdlFrLMbP3fFsuTi7+HAmAj
         | 
| 33 | 
            +
            XYEq35G49GAQg52+HvZiBe+RtbR8yOOar5fAKnzS1yNy9M1z7g7yMcEouk3TUebe
         | 
| 34 | 
            +
            2aanMvzabc7qgV3HGDfZkzhL9PlcjmFl0LQEflef/6sdMhy6C0HiditdLSUZYfSy
         | 
| 35 | 
            +
            SJpb6lvJBGdN4Vrbo2fNtL3qIc+vX1Jvh/qLFIFmFXuC6lIjFJFtpIbCIQMtHoMX
         | 
| 36 | 
            +
            dI1A5JzzkmrTLPTSYDAQXXn9RPnzsRz2GnlYRV4xGayDGbUyow==
         | 
| 37 | 
            +
            -----END CERTIFICATE-----
         | 
| @@ -0,0 +1,37 @@ | |
| 1 | 
            +
            -----BEGIN CERTIFICATE-----
         | 
| 2 | 
            +
            MIIGYjCCBUqgAwIBAgIQV6nz7KIvDihXxU71YTbgWjANBgkqhkiG9w0BAQwFADB1
         | 
| 3 | 
            +
            MQswCQYDVQQGEwJFRTEiMCAGA1UECgwZQVMgU2VydGlmaXRzZWVyaW1pc2tlc2t1
         | 
| 4 | 
            +
            czEoMCYGA1UEAwwfRUUgQ2VydGlmaWNhdGlvbiBDZW50cmUgUm9vdCBDQTEYMBYG
         | 
| 5 | 
            +
            CSqGSIb3DQEJARYJcGtpQHNrLmVlMCAXDTE2MDgzMDA5MTYzN1oYDzIwMzAxMjE3
         | 
| 6 | 
            +
            MjM1OTU5WjBfMQswCQYDVQQGEwJFRTEiMCAGA1UECgwZQVMgU2VydGlmaXRzZWVy
         | 
| 7 | 
            +
            aW1pc2tlc2t1czEXMBUGA1UEYQwOTlRSRUUtMTA3NDcwMTMxEzARBgNVBAMMCk5R
         | 
| 8 | 
            +
            LVNLIDIwMTYwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDdkRRNDxfO
         | 
| 9 | 
            +
            6oKU9GDrGLNQc41PA+pqDKCEcDhSw1bnkC/nDumg4PawQk8xklyDHr2ShrsFrTo5
         | 
| 10 | 
            +
            wps5UcgxxTMqb98bmMxQYghqxu5NqqpaZopbbSj+qDYUzrZkXIlVe+HFpUt5ce9W
         | 
| 11 | 
            +
            NpEmeenVAlt4ZaN1/srDfv3NSMmcF2r9XiUIIhDavxQ+QgPy3CrgT0Ja3yw/PLpF
         | 
| 12 | 
            +
            /ajCNQWaGWJHYkgNVzrnrKhKYDhgorc3lSqGfTfhW2Xf5klvBZokPfbhD26csnPe
         | 
| 13 | 
            +
            JjQQQJ2Loot3Z9/QPzfY/Qnqp5hjkvfqjKksX2wAt/UB+Hk4sRG+6Nqa3b+gxqMc
         | 
| 14 | 
            +
            ih1eI/I93Ii6OC7LijhN2k0R9L5+ArgQXhlAQYZGeCAC/unHmpCkiUQrEJq27kst
         | 
| 15 | 
            +
            mzoENnwQnF3mhq81KQGZul/Guw1fsQOolALESEWG6dTP1szaLeba4LYN707b9puR
         | 
| 16 | 
            +
            OVXk1WLoau131KZnIdc/+Ktu2ni4SVL3+qKbJ7+oqIfiFAqlSuCPTKssdFC49m7V
         | 
| 17 | 
            +
            G4bXnrYeA5svUQjCvpANmzXqRs6DmdctKPuXUj+W/gnQNoLOvIEkK30TD/RKd4eh
         | 
| 18 | 
            +
            uzzYj9qirhqBDFg+Ipqh9OByK7aY6f9KZ6qKmKttcPb4R7arBtuQoBlqadcXoGig
         | 
| 19 | 
            +
            o/kr/iXVRabWfGVM73iQo36RZrklrSu5awIDAQABo4ICADCCAfwwHwYDVR0jBBgw
         | 
| 20 | 
            +
            FoAUEvJaPupWHL/NBqzx8SXJqUvUFJkwHQYDVR0OBBYEFHq3hV+h88xBt67p6gZR
         | 
| 21 | 
            +
            CuD5AsisMA4GA1UdDwEB/wQEAwIBBjBGBgNVHSAEPzA9MDsGBgQAj3oBATAxMC8G
         | 
| 22 | 
            +
            CCsGAQUFBwIBFiNodHRwczovL3d3dy5zay5lZS9yZXBvc2l0b29yaXVtL0NQUzAS
         | 
| 23 | 
            +
            BgNVHRMBAf8ECDAGAQH/AgEAMCcGA1UdJQQgMB4GCCsGAQUFBwMJBggrBgEFBQcD
         | 
| 24 | 
            +
            AgYIKwYBBQUHAwQwfAYIKwYBBQUHAQEEcDBuMCAGCCsGAQUFBzABhhRodHRwOi8v
         | 
| 25 | 
            +
            b2NzcC5zay5lZS9DQTBKBggrBgEFBQcwAoY+aHR0cDovL3d3dy5zay5lZS9jZXJ0
         | 
| 26 | 
            +
            cy9FRV9DZXJ0aWZpY2F0aW9uX0NlbnRyZV9Sb290X0NBLmRlci5jcnQwQQYDVR0e
         | 
| 27 | 
            +
            BDowOKE2MASCAiIiMAqHCAAAAAAAAAAAMCKHIAAAAAAAAAAAAAAAAAAAAAAAAAAA
         | 
| 28 | 
            +
            AAAAAAAAAAAAAAAAMCUGCCsGAQUFBwEDBBkwFzAVBggrBgEFBQcLAjAJBgcEAIvs
         | 
| 29 | 
            +
            SQEBMD0GA1UdHwQ2MDQwMqAwoC6GLGh0dHA6Ly93d3cuc2suZWUvcmVwb3NpdG9y
         | 
| 30 | 
            +
            eS9jcmxzL2VlY2NyY2EuY3JsMA0GCSqGSIb3DQEBDAUAA4IBAQCu4HLsEBBpKmXw
         | 
| 31 | 
            +
            agXpFkmEGqTOC/eYWrtwVZNnz/MB+z8c6TyxwW2cDmNwMwMfojXT447rQ/xlai/5
         | 
| 32 | 
            +
            gjGkRwRE8P5W90h/JkO3rUWG4asrvPAwmkIiUHsHIHDVHCsSmhLNEgPdM4zP88/L
         | 
| 33 | 
            +
            EmV89ZIvUWGjzZYcgBljYeAlK4dCy4/7U14JW9FCwvFjFOyfDcpoYwxbV7Jkbhsw
         | 
| 34 | 
            +
            9J8uzzxjspGCvoq5izeTGuRV+WtV+yy6W/UOnpmYOJ6jxzUoYq6fnQGU+J9CLVxj
         | 
| 35 | 
            +
            jE8Jj25fuWSU3BvPs8cms7RzvvuZvPgQWm8IZt6L5P6EHOzeER3m3nftERhG2OXE
         | 
| 36 | 
            +
            +MHJ+onc
         | 
| 37 | 
            +
            -----END CERTIFICATE-----
         | 
| @@ -0,0 +1,31 @@ | |
| 1 | 
            +
            -----BEGIN CERTIFICATE-----
         | 
| 2 | 
            +
            MIIFVzCCBLigAwIBAgIQdUf6rBR0S4tbo2bU/mZV7TAKBggqhkjOPQQDBDBaMQsw
         | 
| 3 | 
            +
            CQYDVQQGEwJFRTEbMBkGA1UECgwSU0sgSUQgU29sdXRpb25zIEFTMRcwFQYDVQRh
         | 
| 4 | 
            +
            DA5OVFJFRS0xMDc0NzAxMzEVMBMGA1UEAwwMRUUtR292Q0EyMDE4MB4XDTE4MDky
         | 
| 5 | 
            +
            MDA5MjIyOFoXDTMzMDkwNTA5MTEwM1owWDELMAkGA1UEBhMCRUUxGzAZBgNVBAoM
         | 
| 6 | 
            +
            ElNLIElEIFNvbHV0aW9ucyBBUzEXMBUGA1UEYQwOTlRSRUUtMTA3NDcwMTMxEzAR
         | 
| 7 | 
            +
            BgNVBAMMCkVTVEVJRDIwMTgwgZswEAYHKoZIzj0CAQYFK4EEACMDgYYABAHHOBlv
         | 
| 8 | 
            +
            7UrRPYP1yHhOb7RA/YBDbtgynSVMqYdxnFrKHUXh6tFkghvHuA1k2DSom1hE5kqh
         | 
| 9 | 
            +
            B5VspDembwWDJBOQWQGOI/0t3EtccLYjeM7F9xOPdzUbZaIbpNRHpQgVBpFX0xpL
         | 
| 10 | 
            +
            TgW27MpIMhU8DHBWFpeAaNX3eUpD4gC5cvhsK0RFEqOCAx0wggMZMB8GA1UdIwQY
         | 
| 11 | 
            +
            MBaAFH4pVuc0knhOd+FvLjMqmHHB/TSfMB0GA1UdDgQWBBTZrHDbX36+lPig5L5H
         | 
| 12 | 
            +
            otA0rZoqEjAOBgNVHQ8BAf8EBAMCAQYwEgYDVR0TAQH/BAgwBgEB/wIBADCCAc0G
         | 
| 13 | 
            +
            A1UdIASCAcQwggHAMAgGBgQAj3oBAjAJBgcEAIvsQAECMDIGCysGAQQBg5EhAQEB
         | 
| 14 | 
            +
            MCMwIQYIKwYBBQUHAgEWFWh0dHBzOi8vd3d3LnNrLmVlL0NQUzANBgsrBgEEAYOR
         | 
| 15 | 
            +
            IQEBAjANBgsrBgEEAYORfwEBATANBgsrBgEEAYORIQEBBTANBgsrBgEEAYORIQEB
         | 
| 16 | 
            +
            BjANBgsrBgEEAYORIQEBBzANBgsrBgEEAYORIQEBAzANBgsrBgEEAYORIQEBBDAN
         | 
| 17 | 
            +
            BgsrBgEEAYORIQEBCDANBgsrBgEEAYORIQEBCTANBgsrBgEEAYORIQEBCjANBgsr
         | 
| 18 | 
            +
            BgEEAYORIQEBCzANBgsrBgEEAYORIQEBDDANBgsrBgEEAYORIQEBDTANBgsrBgEE
         | 
| 19 | 
            +
            AYORIQEBDjANBgsrBgEEAYORIQEBDzANBgsrBgEEAYORIQEBEDANBgsrBgEEAYOR
         | 
| 20 | 
            +
            IQEBETANBgsrBgEEAYORIQEBEjANBgsrBgEEAYORIQEBEzANBgsrBgEEAYORIQEB
         | 
| 21 | 
            +
            FDANBgsrBgEEAYORfwEBAjANBgsrBgEEAYORfwEBAzANBgsrBgEEAYORfwEBBDAN
         | 
| 22 | 
            +
            BgsrBgEEAYORfwEBBTANBgsrBgEEAYORfwEBBjAqBgNVHSUBAf8EIDAeBggrBgEF
         | 
| 23 | 
            +
            BQcDCQYIKwYBBQUHAwIGCCsGAQUFBwMEMGoGCCsGAQUFBwEBBF4wXDApBggrBgEF
         | 
| 24 | 
            +
            BQcwAYYdaHR0cDovL2FpYS5zay5lZS9lZS1nb3ZjYTIwMTgwLwYIKwYBBQUHMAKG
         | 
| 25 | 
            +
            I2h0dHA6Ly9jLnNrLmVlL0VFLUdvdkNBMjAxOC5kZXIuY3J0MBgGCCsGAQUFBwED
         | 
| 26 | 
            +
            BAwwCjAIBgYEAI5GAQEwMAYDVR0fBCkwJzAloCOgIYYfaHR0cDovL2Muc2suZWUv
         | 
| 27 | 
            +
            RUUtR292Q0EyMDE4LmNybDAKBggqhkjOPQQDBAOBjAAwgYgCQgDeuUY4HczUbFKS
         | 
| 28 | 
            +
            002HZ88gclgYdztHqglENyTMtXE6dMBRnCbgUmhBCAA0mJSHbyFJ8W9ikLiSyurm
         | 
| 29 | 
            +
            kJM0hDE9KgJCASOqA405Ia5nKjTJPNsHQlMi7KZsIcTHOoBccx+54N8ZX1MgBozJ
         | 
| 30 | 
            +
            mT59rZY/2/OeE163BAwD0UdUQAnMPP6+W3Vd
         | 
| 31 | 
            +
            -----END CERTIFICATE-----
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: mobile_id
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.0. | 
| 4 | 
            +
              version: 0.0.12
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Priit Tark
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2020- | 
| 11 | 
            +
            date: 2020-10-15 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: httparty
         | 
| @@ -106,10 +106,20 @@ files: | |
| 106 106 | 
             
            - lib/mobile_id.rb
         | 
| 107 107 | 
             
            - lib/mobile_id/auth.rb
         | 
| 108 108 | 
             
            - lib/mobile_id/cert.rb
         | 
| 109 | 
            +
            - lib/mobile_id/certs/EE-GovCA2018.pem.crt
         | 
| 109 110 | 
             
            - lib/mobile_id/certs/EE_Certification_Centre_Root_CA.pem.crt
         | 
| 111 | 
            +
            - lib/mobile_id/certs/EID-SK_2011.pem.crt
         | 
| 112 | 
            +
            - lib/mobile_id/certs/EID-SK_2016.pem.crt
         | 
| 113 | 
            +
            - lib/mobile_id/certs/ESTEID-SK_2011.pem.crt
         | 
| 110 114 | 
             
            - lib/mobile_id/certs/ESTEID-SK_2015.pem.crt
         | 
| 115 | 
            +
            - lib/mobile_id/certs/KLASS3-SK.pem.crt
         | 
| 116 | 
            +
            - lib/mobile_id/certs/KLASS3-SK_2010_EECCRCA.pem.crt
         | 
| 117 | 
            +
            - lib/mobile_id/certs/KLASS3-SK_2010_EECCRCA_SHA384.pem.crt
         | 
| 118 | 
            +
            - lib/mobile_id/certs/KLASS3-SK_2016_EECCRCA_SHA384.pem.crt
         | 
| 119 | 
            +
            - lib/mobile_id/certs/NQ-SK_2016.pem.crt
         | 
| 111 120 | 
             
            - lib/mobile_id/certs/TEST_of_EE_Certification_Centre_Root_CA.pem.crt
         | 
| 112 121 | 
             
            - lib/mobile_id/certs/TEST_of_ESTEID-SK_2015.pem.crt
         | 
| 122 | 
            +
            - lib/mobile_id/certs/esteid2018.pem.crt
         | 
| 113 123 | 
             
            - lib/mobile_id/locales/en.yml
         | 
| 114 124 | 
             
            - lib/mobile_id/locales/et.yml
         | 
| 115 125 | 
             
            - lib/mobile_id/locales/ru.yml
         |