pkcs11_protect_server 0.2.3 → 0.3.2
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 +7 -0
- checksums.yaml.gz.sig +2 -0
- data.tar.gz.sig +0 -0
- data/Manifest.txt +2 -2
- data/README_PROTECT_SERVER.rdoc +3 -3
- data/Rakefile +30 -31
- data/ext/extconf.rb +10 -5
- data/ext/generate_constants.rb +30 -14
- data/ext/generate_protect_server_constants.rb +41 -0
- data/ext/generate_protect_server_structs.rb +74 -0
- data/ext/generate_structs.rb +182 -40
- data/ext/pk11_struct_macros.h +13 -13
- data/ext/pk11_version.h +1 -1
- data/ext/pk11s.c +1 -0
- data/ext/std_structs.rb +1 -0
- data/test/helper.rb +1 -1
- data/test/test_pkcs11_protect_server.rb +7 -7
- data/test/test_pkcs11_protect_server_crypt.rb +19 -19
- metadata +125 -122
- metadata.gz.sig +1 -0
- data/ext/pk11s_const_def.inc +0 -182
- data/ext/pk11s_struct.doc +0 -206
- data/ext/pk11s_struct_def.inc +0 -79
- data/ext/pk11s_struct_impl.inc +0 -79
    
        data/ext/pk11_struct_macros.h
    CHANGED
    
    | @@ -19,10 +19,10 @@ pkcs11_num2ulong(VALUE val) | |
| 19 19 | 
             
            }
         | 
| 20 20 |  | 
| 21 21 | 
             
            static VALUE
         | 
| 22 | 
            -
            get_string(VALUE obj, off_t offset, size_t size)
         | 
| 22 | 
            +
            get_string(VALUE obj, off_t offset, size_t size, rb_encoding *enc)
         | 
| 23 23 | 
             
            {
         | 
| 24 24 | 
             
              char *ptr = (char*)DATA_PTR(obj);
         | 
| 25 | 
            -
              return  | 
| 25 | 
            +
              return rb_enc_str_new(ptr+offset, size, enc);
         | 
| 26 26 | 
             
            }
         | 
| 27 27 |  | 
| 28 28 | 
             
            static VALUE
         | 
| @@ -86,7 +86,7 @@ set_ulong_ptr(VALUE obj, VALUE value, const char *name, off_t offset) | |
| 86 86 | 
             
                *ptr = NULL_PTR;
         | 
| 87 87 | 
             
                return value;
         | 
| 88 88 | 
             
              }
         | 
| 89 | 
            -
              new_obj = Data_Make_Struct( | 
| 89 | 
            +
              new_obj = Data_Make_Struct(rb_cData, CK_ULONG, 0, -1, *ptr);
         | 
| 90 90 | 
             
              rb_iv_set(obj, name, new_obj);
         | 
| 91 91 | 
             
              **ptr = NUM2ULONG(value);
         | 
| 92 92 | 
             
              return value;
         | 
| @@ -126,12 +126,12 @@ set_bool(VALUE obj, VALUE value, off_t offset) | |
| 126 126 | 
             
            }
         | 
| 127 127 |  | 
| 128 128 | 
             
            static VALUE
         | 
| 129 | 
            -
            get_string_ptr(VALUE obj, const char *name, off_t offset)
         | 
| 129 | 
            +
            get_string_ptr(VALUE obj, const char *name, off_t offset, rb_encoding *enc)
         | 
| 130 130 | 
             
            {
         | 
| 131 131 | 
             
              char *ptr = (char*)DATA_PTR(obj);
         | 
| 132 132 | 
             
              char *p = *(char**)(ptr+offset);
         | 
| 133 133 | 
             
              if (!p) return Qnil;
         | 
| 134 | 
            -
              return  | 
| 134 | 
            +
              return rb_enc_str_new_cstr(p, enc);
         | 
| 135 135 | 
             
            }
         | 
| 136 136 |  | 
| 137 137 | 
             
            static VALUE
         | 
| @@ -151,14 +151,14 @@ set_string_ptr(VALUE obj, VALUE value, const char *name, off_t offset) | |
| 151 151 | 
             
            }
         | 
| 152 152 |  | 
| 153 153 | 
             
            static VALUE
         | 
| 154 | 
            -
            get_string_ptr_len(VALUE obj, const char *name, off_t offset, off_t offset_len)
         | 
| 154 | 
            +
            get_string_ptr_len(VALUE obj, const char *name, off_t offset, off_t offset_len, rb_encoding *enc)
         | 
| 155 155 | 
             
            {
         | 
| 156 156 | 
             
              unsigned long l;
         | 
| 157 157 | 
             
              char *ptr = (char*)DATA_PTR(obj);
         | 
| 158 158 | 
             
              char *p = *(char**)(ptr+offset);
         | 
| 159 159 | 
             
              if (!p) return Qnil;
         | 
| 160 160 | 
             
              l = *(unsigned long*)(ptr+offset_len);
         | 
| 161 | 
            -
              return  | 
| 161 | 
            +
              return rb_enc_str_new(p, l, enc);
         | 
| 162 162 | 
             
            }
         | 
| 163 163 |  | 
| 164 164 | 
             
            static VALUE
         | 
| @@ -290,9 +290,9 @@ static VALUE c##s;\ | |
| 290 290 | 
             
            static VALUE a##s##_members;\
         | 
| 291 291 | 
             
            PKCS11_IMPLEMENT_ALLOCATOR(s);
         | 
| 292 292 |  | 
| 293 | 
            -
            #define PKCS11_IMPLEMENT_STRING_ACCESSOR(s, f) \
         | 
| 293 | 
            +
            #define PKCS11_IMPLEMENT_STRING_ACCESSOR(s, f, enco) \
         | 
| 294 294 | 
             
            static VALUE c##s##_get_##f(VALUE o){ \
         | 
| 295 | 
            -
              return get_string(o, OFFSET_OF(s, f), SIZE_OF(s, f)); \
         | 
| 295 | 
            +
              return get_string(o, OFFSET_OF(s, f), SIZE_OF(s, f), rb_##enco##_encoding()); \
         | 
| 296 296 | 
             
            } \
         | 
| 297 297 | 
             
            static VALUE c##s##_set_##f(VALUE o, VALUE v){ \
         | 
| 298 298 | 
             
              return set_string(o, v, OFFSET_OF(s, f), SIZE_OF(s, f)); \
         | 
| @@ -338,17 +338,17 @@ static VALUE c##s##_set_##f(VALUE o, VALUE v){ \ | |
| 338 338 | 
             
              return set_bool(o, v, OFFSET_OF(s, f)); \
         | 
| 339 339 | 
             
            }
         | 
| 340 340 |  | 
| 341 | 
            -
            #define PKCS11_IMPLEMENT_STRING_PTR_ACCESSOR(s, f) \
         | 
| 341 | 
            +
            #define PKCS11_IMPLEMENT_STRING_PTR_ACCESSOR(s, f, enco) \
         | 
| 342 342 | 
             
            static VALUE c##s##_get_##f(VALUE o){ \
         | 
| 343 | 
            -
              return get_string_ptr(o, #f, OFFSET_OF(s, f)); \
         | 
| 343 | 
            +
              return get_string_ptr(o, #f, OFFSET_OF(s, f), rb_##enco##_encoding()); \
         | 
| 344 344 | 
             
            } \
         | 
| 345 345 | 
             
            static VALUE c##s##_set_##f(VALUE o, VALUE v){ \
         | 
| 346 346 | 
             
              return set_string_ptr(o, v, #f, OFFSET_OF(s, f)); \
         | 
| 347 347 | 
             
            }
         | 
| 348 348 |  | 
| 349 | 
            -
            #define PKCS11_IMPLEMENT_STRING_PTR_LEN_ACCESSOR(s, f, l) \
         | 
| 349 | 
            +
            #define PKCS11_IMPLEMENT_STRING_PTR_LEN_ACCESSOR(s, f, l, enco) \
         | 
| 350 350 | 
             
            static VALUE c##s##_get_##f(VALUE o){ \
         | 
| 351 | 
            -
              return get_string_ptr_len(o, #f, OFFSET_OF(s, f), OFFSET_OF(s, l)); \
         | 
| 351 | 
            +
              return get_string_ptr_len(o, #f, OFFSET_OF(s, f), OFFSET_OF(s, l), rb_##enco##_encoding()); \
         | 
| 352 352 | 
             
            } \
         | 
| 353 353 | 
             
            static VALUE c##s##_set_##f(VALUE o, VALUE v){ \
         | 
| 354 354 | 
             
              return set_string_ptr_len(o, v, #f, OFFSET_OF(s, f), OFFSET_OF(s, l)); \
         | 
    
        data/ext/pk11_version.h
    CHANGED
    
    
    
        data/ext/pk11s.c
    CHANGED
    
    
    
        data/ext/std_structs.rb
    ADDED
    
    | @@ -0,0 +1 @@ | |
| 1 | 
            +
            PKCS11_STD_STRUCTS = [:CK_MECHANISM, :CK_VERSION, :CK_INFO, :CK_SLOT_INFO, :CK_TOKEN_INFO, :CK_SESSION_INFO, :CK_DATE, :CK_MECHANISM_INFO, :CK_C_INITIALIZE_ARGS, :CK_RSA_PKCS_OAEP_PARAMS, :CK_RSA_PKCS_PSS_PARAMS, :CK_ECDH1_DERIVE_PARAMS, :CK_ECMQV_DERIVE_PARAMS, :CK_X9_42_DH1_DERIVE_PARAMS, :CK_X9_42_DH2_DERIVE_PARAMS, :CK_X9_42_MQV_DERIVE_PARAMS, :CK_KEA_DERIVE_PARAMS, :CK_RC2_CBC_PARAMS, :CK_RC2_MAC_GENERAL_PARAMS, :CK_RC5_PARAMS, :CK_RC5_CBC_PARAMS, :CK_RC5_MAC_GENERAL_PARAMS, :CK_DES_CBC_ENCRYPT_DATA_PARAMS, :CK_AES_CBC_ENCRYPT_DATA_PARAMS, :CK_SKIPJACK_PRIVATE_WRAP_PARAMS, :CStruct, :CK_ATTRIBUTE, :CK_SKIPJACK_RELAYX_PARAMS, :CK_PBE_PARAMS, :CK_KEY_WRAP_SET_OAEP_PARAMS, :CK_SSL3_RANDOM_DATA, :CK_SSL3_MASTER_KEY_DERIVE_PARAMS, :CK_SSL3_KEY_MAT_OUT, :CK_SSL3_KEY_MAT_PARAMS, :CK_WTLS_RANDOM_DATA, :CK_WTLS_MASTER_KEY_DERIVE_PARAMS, :CK_WTLS_PRF_PARAMS, :CK_WTLS_KEY_MAT_OUT, :CK_WTLS_KEY_MAT_PARAMS, :CK_CMS_SIG_PARAMS, :CK_KEY_DERIVATION_STRING_DATA, :CK_PKCS5_PBKD2_PARAMS, :CK_OTP_PARAM, :CK_OTP_PARAMS, :CK_OTP_SIGNATURE_INFO, :CK_KIP_PARAMS, :CK_AES_CTR_PARAMS, :CK_GCM_PARAMS, :CK_CCM_PARAMS, :CK_CAMELLIA_CBC_ENCRYPT_DATA_PARAMS, :CK_ARIA_CBC_ENCRYPT_DATA_PARAMS, :CK_DSA_PARAMETER_GEN_PARAM, :CK_ECDH_AES_KEY_WRAP_PARAMS, :CK_RSA_AES_KEY_WRAP_PARAMS, :CK_TLS12_MASTER_KEY_DERIVE_PARAMS, :CK_TLS12_KEY_MAT_PARAMS, :CK_TLS_KDF_PARAMS, :CK_TLS_MAC_PARAMS, :CK_GOSTR3410_DERIVE_PARAMS, :CK_GOSTR3410_KEY_WRAP_PARAMS]
         | 
    
        data/test/helper.rb
    CHANGED
    
    
| @@ -1,8 +1,8 @@ | |
| 1 | 
            -
            require " | 
| 1 | 
            +
            require "minitest/autorun"
         | 
| 2 2 | 
             
            require "pkcs11_protect_server"
         | 
| 3 3 | 
             
            require "test/helper"
         | 
| 4 4 |  | 
| 5 | 
            -
            class TestPkcs11ProtectServer < Test | 
| 5 | 
            +
            class TestPkcs11ProtectServer < Minitest::Test
         | 
| 6 6 | 
             
              include PKCS11
         | 
| 7 7 |  | 
| 8 8 | 
             
              def test_CStruct
         | 
| @@ -12,7 +12,7 @@ class TestPkcs11ProtectServer < Test::Unit::TestCase | |
| 12 12 | 
             
                assert_match( /m=3/, s.inspect, 'There should be a n value in CK_SECRET_SHARE_PARAMS')
         | 
| 13 13 | 
             
                assert_equal ["n", "m"], s.members, 'CK_SECRET_SHARE_PARAMS should contain some attributes'
         | 
| 14 14 | 
             
                assert_equal [2, 3], s.values, 'values of CK_SECRET_SHARE_PARAMS'
         | 
| 15 | 
            -
                assert_equal( {: | 
| 15 | 
            +
                assert_equal( {n: 2, m: 3}, s.to_hash, 'CK_SECRET_SHARE_PARAMS as hash' )
         | 
| 16 16 | 
             
              end
         | 
| 17 17 |  | 
| 18 18 | 
             
              def test_CK_PKCS12_PBE_IMPORT_PARAMS
         | 
| @@ -23,7 +23,7 @@ class TestPkcs11ProtectServer < Test::Unit::TestCase | |
| 23 23 | 
             
                s.certAttr = [s1, s2]
         | 
| 24 24 | 
             
                assert_equal [s1.to_hash, s2.to_hash], s.certAttr.map{|e| e.to_hash }
         | 
| 25 25 | 
             
                GC.start
         | 
| 26 | 
            -
                 | 
| 26 | 
            +
                assert_raises(ArgumentError){ s.certAttr = [s1, s2, nil] }
         | 
| 27 27 | 
             
                assert_equal [s1.to_hash, s2.to_hash], s.certAttr.map{|e| e.to_hash }
         | 
| 28 28 |  | 
| 29 29 | 
             
                s.certAttr = []
         | 
| @@ -39,12 +39,12 @@ class TestPkcs11ProtectServer < Test::Unit::TestCase | |
| 39 39 | 
             
              end
         | 
| 40 40 |  | 
| 41 41 | 
             
              def test_loading
         | 
| 42 | 
            -
                pk = PKCS11::ProtectServer::Library.new(:sw, : | 
| 42 | 
            +
                pk = PKCS11::ProtectServer::Library.new(:sw, flags: 0)
         | 
| 43 43 | 
             
                so_path = pk.so_path
         | 
| 44 44 | 
             
                pk.close
         | 
| 45 45 | 
             
                assert !so_path.empty?, "Used path shouldn't be empty"
         | 
| 46 46 |  | 
| 47 | 
            -
                pk = PKCS11::ProtectServer::Library.new(so_path, : | 
| 47 | 
            +
                pk = PKCS11::ProtectServer::Library.new(so_path, flags: 0)
         | 
| 48 48 | 
             
                pk.close
         | 
| 49 49 | 
             
              end
         | 
| 50 50 |  | 
| @@ -52,7 +52,7 @@ class TestPkcs11ProtectServer < Test::Unit::TestCase | |
| 52 52 | 
             
                pk = PKCS11::ProtectServer::Library.new
         | 
| 53 53 | 
             
                pk.load_library(:sw)
         | 
| 54 54 | 
             
                pk.C_GetFunctionList
         | 
| 55 | 
            -
                pk.C_Initialize(: | 
| 55 | 
            +
                pk.C_Initialize(flags: 0)
         | 
| 56 56 | 
             
                pk.info
         | 
| 57 57 | 
             
                pk.close
         | 
| 58 58 | 
             
              end
         | 
| @@ -1,8 +1,8 @@ | |
| 1 | 
            -
            require " | 
| 1 | 
            +
            require "minitest/autorun"
         | 
| 2 2 | 
             
            require "pkcs11_protect_server"
         | 
| 3 3 | 
             
            require "test/helper"
         | 
| 4 4 |  | 
| 5 | 
            -
            class TestPkcs11ProtectServerCrypt < Test | 
| 5 | 
            +
            class TestPkcs11ProtectServerCrypt < Minitest::Test
         | 
| 6 6 | 
             
              include PKCS11
         | 
| 7 7 | 
             
              attr_reader :slots
         | 
| 8 8 | 
             
              attr_reader :slot
         | 
| @@ -39,12 +39,12 @@ class TestPkcs11ProtectServerCrypt < Test::Unit::TestCase | |
| 39 39 | 
             
                assert_equal CKS_RO_USER_FUNCTIONS, session.info.state, "Session should be in USER state"
         | 
| 40 40 |  | 
| 41 41 | 
             
                @secret_key = session.create_object(
         | 
| 42 | 
            -
                  : | 
| 43 | 
            -
                  : | 
| 44 | 
            -
                  : | 
| 45 | 
            -
                  : | 
| 46 | 
            -
                  : | 
| 47 | 
            -
                  : | 
| 42 | 
            +
                  CLASS: CKO_SECRET_KEY,
         | 
| 43 | 
            +
                  KEY_TYPE: CKK_DES2,
         | 
| 44 | 
            +
                  ENCRYPT: true, WRAP: true, DECRYPT: true, UNWRAP: true, TOKEN: false, DERIVE: true,
         | 
| 45 | 
            +
                  USAGE_COUNT: 0, EXPORTABLE: true,
         | 
| 46 | 
            +
                  VALUE: adjust_parity("0123456789abcdef"),
         | 
| 47 | 
            +
                  LABEL: 'test_secret_key')
         | 
| 48 48 | 
             
              end
         | 
| 49 49 |  | 
| 50 50 | 
             
              def teardown
         | 
| @@ -58,12 +58,12 @@ class TestPkcs11ProtectServerCrypt < Test::Unit::TestCase | |
| 58 58 | 
             
              end
         | 
| 59 59 |  | 
| 60 60 | 
             
              def test_bad_parity
         | 
| 61 | 
            -
                 | 
| 61 | 
            +
                assert_raises(ProtectServer::CKR_ET_NOT_ODD_PARITY) do
         | 
| 62 62 | 
             
                  session.create_object(
         | 
| 63 | 
            -
                    : | 
| 64 | 
            -
                    : | 
| 65 | 
            -
                    : | 
| 66 | 
            -
                    : | 
| 63 | 
            +
                    CLASS: CKO_SECRET_KEY,
         | 
| 64 | 
            +
                    KEY_TYPE: CKK_DES2,
         | 
| 65 | 
            +
                    VALUE: "0123456789abcdef",
         | 
| 66 | 
            +
                    LABEL: 'test_secret_key2')
         | 
| 67 67 | 
             
                end
         | 
| 68 68 | 
             
              end
         | 
| 69 69 |  | 
| @@ -73,14 +73,14 @@ class TestPkcs11ProtectServerCrypt < Test::Unit::TestCase | |
| 73 73 | 
             
                pa.iv = "2"*8
         | 
| 74 74 |  | 
| 75 75 | 
             
                new_key1 = session.derive_key( {ProtectServer::CKM_DES3_DERIVE_CBC => pa}, secret_key,
         | 
| 76 | 
            -
                  : | 
| 77 | 
            -
                 | 
| 76 | 
            +
                  CLASS: CKO_SECRET_KEY, KEY_TYPE: CKK_DES2, ENCRYPT: true, DECRYPT: true, SENSITIVE: false )
         | 
| 77 | 
            +
                refute_equal secret_key[:VALUE], new_key1[:VALUE], 'Derived key shouldn\'t have equal key value'
         | 
| 78 78 |  | 
| 79 | 
            -
                new_key2 = session.derive_key( {: | 
| 80 | 
            -
                  : | 
| 79 | 
            +
                new_key2 = session.derive_key( {DES3_DERIVE_CBC:  {data: "1"*16, iv: "2"*16}}, secret_key,
         | 
| 80 | 
            +
                  CLASS: CKO_SECRET_KEY, KEY_TYPE: CKK_DES2, ENCRYPT: true, DECRYPT: true, SENSITIVE: false )
         | 
| 81 81 | 
             
                assert_equal new_key1[:VALUE], new_key2[:VALUE], 'Both derived key should be equal'
         | 
| 82 82 |  | 
| 83 | 
            -
                encrypted_key_value = session.encrypt( {: | 
| 83 | 
            +
                encrypted_key_value = session.encrypt( {DES3_CBC:  "2"*8}, secret_key, "1"*16)
         | 
| 84 84 | 
             
                encrypted_key_value = adjust_parity(encrypted_key_value)
         | 
| 85 85 | 
             
                assert_equal new_key1[:VALUE], encrypted_key_value, 'Encrypted data should equal derived key value'
         | 
| 86 86 |  | 
| @@ -98,6 +98,6 @@ class TestPkcs11ProtectServerCrypt < Test::Unit::TestCase | |
| 98 98 | 
             
                assert_equal 5, secret_key[:USAGE_COUNT], 'CKA_USAGE_COUNT should be usable'
         | 
| 99 99 |  | 
| 100 100 | 
             
                assert_equal false, secret_key[:IMPORT], 'CKA_IMPORT should default to false'
         | 
| 101 | 
            -
                 | 
| 101 | 
            +
                refute_nil secret_key.attributes.find{|a| a.type==ProtectServer::CKA_EXPORT}, 'CKA_EXPORT should be returned for Object#attributes'
         | 
| 102 102 | 
             
              end
         | 
| 103 103 | 
             
            end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,165 +1,168 @@ | |
| 1 | 
            -
            --- !ruby/object:Gem::Specification | 
| 1 | 
            +
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: pkcs11_protect_server
         | 
| 3 | 
            -
            version: !ruby/object:Gem::Version | 
| 4 | 
            -
               | 
| 5 | 
            -
              prerelease: 
         | 
| 6 | 
            -
              segments: 
         | 
| 7 | 
            -
              - 0
         | 
| 8 | 
            -
              - 2
         | 
| 9 | 
            -
              - 3
         | 
| 10 | 
            -
              version: 0.2.3
         | 
| 3 | 
            +
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            +
              version: 0.3.2
         | 
| 11 5 | 
             
            platform: ruby
         | 
| 12 | 
            -
            authors: | 
| 6 | 
            +
            authors:
         | 
| 13 7 | 
             
            - Lars Kanis
         | 
| 14 8 | 
             
            autorequire: 
         | 
| 15 9 | 
             
            bindir: bin
         | 
| 16 | 
            -
            cert_chain: | 
| 17 | 
            -
             | 
| 18 | 
            -
             | 
| 19 | 
            -
             | 
| 20 | 
            -
             | 
| 10 | 
            +
            cert_chain:
         | 
| 11 | 
            +
            - |
         | 
| 12 | 
            +
              -----BEGIN CERTIFICATE-----
         | 
| 13 | 
            +
              MIIDPDCCAiSgAwIBAgIBBjANBgkqhkiG9w0BAQsFADBEMQ0wCwYDVQQDDARsYXJz
         | 
| 14 | 
            +
              MR8wHQYKCZImiZPyLGQBGRYPZ3JlaXotcmVpbnNkb3JmMRIwEAYKCZImiZPyLGQB
         | 
| 15 | 
            +
              GRYCZGUwHhcNMTkxMjAzMTkzNDA5WhcNMjAxMjAyMTkzNDA5WjBEMQ0wCwYDVQQD
         | 
| 16 | 
            +
              DARsYXJzMR8wHQYKCZImiZPyLGQBGRYPZ3JlaXotcmVpbnNkb3JmMRIwEAYKCZIm
         | 
| 17 | 
            +
              iZPyLGQBGRYCZGUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDZb4Uv
         | 
| 18 | 
            +
              RFJfRu/VEWiy3psh2jinETjiuBrL0NeRFGf8H7iU9+gx/DI/FFhfHGLrDeIskrJx
         | 
| 19 | 
            +
              YIWDMmEjVO10UUdj7wu4ZhmU++0Cd7Kq9/TyP/shIP3IjqHjVLCnJ3P6f1cl5rxZ
         | 
| 20 | 
            +
              gqo+d3BAoDrmPk0rtaf6QopwUw9RBiF8V4HqvpiY+ruJotP5UQDP4/lVOKvA8PI9
         | 
| 21 | 
            +
              P0GmVbFBrbc7Zt5h78N3UyOK0u+nvOC23BvyHXzCtcFsXCoEkt+Wwh0RFqVZdnjM
         | 
| 22 | 
            +
              LMO2vULHKKHDdX54K/sbVCj9pN9h1aotNzrEyo55zxn0G9PHg/G3P8nMvAXPkUTe
         | 
| 23 | 
            +
              brhXrfCwWRvOXA4TAgMBAAGjOTA3MAkGA1UdEwQCMAAwCwYDVR0PBAQDAgSwMB0G
         | 
| 24 | 
            +
              A1UdDgQWBBRAHK81igrXodaDj8a8/BIKsaZrETANBgkqhkiG9w0BAQsFAAOCAQEA
         | 
| 25 | 
            +
              XDITkfRngYnc7MnDMd1XRSZqZKPvPFIk/ByhD4T5mHDAmOVV9Q4csAF9wAnYqLVG
         | 
| 26 | 
            +
              XqetRpK47O55NHN7zG2RbE7ospqgNU4ToXM2KCZuGoGuV75RBf6kk498kcPuFBPq
         | 
| 27 | 
            +
              FWzBIlr9Nat2NjwmEAvVf2UrmKl7rEDCQTkYCe9H5qkWtbneBASIfbVaw14yhosQ
         | 
| 28 | 
            +
              0fP+rf/XkPrhjfYMBd258JnTy32boRZQ018c/kX8myjnEZA6rTr6082ESHD3BTHj
         | 
| 29 | 
            +
              D5uWyL3krcnTOgVS0jv7qSuxDjlvpHqvN1BNaw64Gf5TpqRDNM5r+hXhD8U339Ot
         | 
| 30 | 
            +
              lrxBVhTTtOOm6AE6oziYmw==
         | 
| 31 | 
            +
              -----END CERTIFICATE-----
         | 
| 32 | 
            +
            date: 2020-01-12 00:00:00.000000000 Z
         | 
| 33 | 
            +
            dependencies:
         | 
| 34 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 21 35 | 
             
              name: pkcs11
         | 
| 22 | 
            -
               | 
| 23 | 
            -
             | 
| 24 | 
            -
                 | 
| 25 | 
            -
             | 
| 26 | 
            -
             | 
| 27 | 
            -
                  - !ruby/object:Gem::Version 
         | 
| 28 | 
            -
                    hash: 17
         | 
| 29 | 
            -
                    segments: 
         | 
| 30 | 
            -
                    - 0
         | 
| 31 | 
            -
                    - 2
         | 
| 32 | 
            -
                    - 3
         | 
| 33 | 
            -
                    version: 0.2.3
         | 
| 36 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 37 | 
            +
                requirements:
         | 
| 38 | 
            +
                - - '='
         | 
| 39 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 40 | 
            +
                    version: 0.3.2
         | 
| 34 41 | 
             
              type: :runtime
         | 
| 35 | 
            -
              version_requirements: *id001
         | 
| 36 | 
            -
            - !ruby/object:Gem::Dependency 
         | 
| 37 | 
            -
              name: yard
         | 
| 38 42 | 
             
              prerelease: false
         | 
| 39 | 
            -
               | 
| 40 | 
            -
                 | 
| 41 | 
            -
                 | 
| 42 | 
            -
             | 
| 43 | 
            -
             | 
| 44 | 
            -
             | 
| 45 | 
            -
             | 
| 46 | 
            -
             | 
| 47 | 
            -
             | 
| 48 | 
            -
             | 
| 43 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 44 | 
            +
                requirements:
         | 
| 45 | 
            +
                - - '='
         | 
| 46 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 47 | 
            +
                    version: 0.3.2
         | 
| 48 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 49 | 
            +
              name: yard
         | 
| 50 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 51 | 
            +
                requirements:
         | 
| 52 | 
            +
                - - "~>"
         | 
| 53 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 54 | 
            +
                    version: '0.6'
         | 
| 49 55 | 
             
              type: :development
         | 
| 50 | 
            -
               | 
| 51 | 
            -
             | 
| 56 | 
            +
              prerelease: false
         | 
| 57 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 58 | 
            +
                requirements:
         | 
| 59 | 
            +
                - - "~>"
         | 
| 60 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 61 | 
            +
                    version: '0.6'
         | 
| 62 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 52 63 | 
             
              name: rake-compiler
         | 
| 64 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 65 | 
            +
                requirements:
         | 
| 66 | 
            +
                - - "~>"
         | 
| 67 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 68 | 
            +
                    version: '0.7'
         | 
| 69 | 
            +
              type: :development
         | 
| 53 70 | 
             
              prerelease: false
         | 
| 54 | 
            -
               | 
| 55 | 
            -
                 | 
| 56 | 
            -
                 | 
| 71 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 72 | 
            +
                requirements:
         | 
| 73 | 
            +
                - - "~>"
         | 
| 74 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 75 | 
            +
                    version: '0.7'
         | 
| 76 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 77 | 
            +
              name: rdoc
         | 
| 78 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 79 | 
            +
                requirements:
         | 
| 57 80 | 
             
                - - ">="
         | 
| 58 | 
            -
                  - !ruby/object:Gem::Version | 
| 59 | 
            -
                     | 
| 60 | 
            -
             | 
| 61 | 
            -
             | 
| 62 | 
            -
                     | 
| 63 | 
            -
                    version: "0.7"
         | 
| 81 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 82 | 
            +
                    version: '4.0'
         | 
| 83 | 
            +
                - - "<"
         | 
| 84 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 85 | 
            +
                    version: '7'
         | 
| 64 86 | 
             
              type: :development
         | 
| 65 | 
            -
              version_requirements: *id003
         | 
| 66 | 
            -
            - !ruby/object:Gem::Dependency 
         | 
| 67 | 
            -
              name: rdoc
         | 
| 68 87 | 
             
              prerelease: false
         | 
| 69 | 
            -
               | 
| 70 | 
            -
                 | 
| 71 | 
            -
                 | 
| 72 | 
            -
             | 
| 73 | 
            -
             | 
| 74 | 
            -
             | 
| 75 | 
            -
             | 
| 76 | 
            -
                     | 
| 77 | 
            -
             | 
| 78 | 
            -
                    version: "3.10"
         | 
| 79 | 
            -
              type: :development
         | 
| 80 | 
            -
              version_requirements: *id004
         | 
| 81 | 
            -
            - !ruby/object:Gem::Dependency 
         | 
| 88 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 89 | 
            +
                requirements:
         | 
| 90 | 
            +
                - - ">="
         | 
| 91 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 92 | 
            +
                    version: '4.0'
         | 
| 93 | 
            +
                - - "<"
         | 
| 94 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 95 | 
            +
                    version: '7'
         | 
| 96 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 82 97 | 
             
              name: hoe
         | 
| 83 | 
            -
               | 
| 84 | 
            -
             | 
| 85 | 
            -
                 | 
| 86 | 
            -
             | 
| 87 | 
            -
             | 
| 88 | 
            -
                  - !ruby/object:Gem::Version 
         | 
| 89 | 
            -
                    hash: 27
         | 
| 90 | 
            -
                    segments: 
         | 
| 91 | 
            -
                    - 2
         | 
| 92 | 
            -
                    - 12
         | 
| 93 | 
            -
                    version: "2.12"
         | 
| 98 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 99 | 
            +
                requirements:
         | 
| 100 | 
            +
                - - "~>"
         | 
| 101 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 102 | 
            +
                    version: '3.20'
         | 
| 94 103 | 
             
              type: :development
         | 
| 95 | 
            -
               | 
| 96 | 
            -
             | 
| 97 | 
            -
             | 
| 104 | 
            +
              prerelease: false
         | 
| 105 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 106 | 
            +
                requirements:
         | 
| 107 | 
            +
                - - "~>"
         | 
| 108 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 109 | 
            +
                    version: '3.20'
         | 
| 110 | 
            +
            description: This module allows Ruby programs to use vendor extensions for Safenet
         | 
| 111 | 
            +
              Protect Server.
         | 
| 112 | 
            +
            email:
         | 
| 98 113 | 
             
            - kanis@comcard.de
         | 
| 99 114 | 
             
            executables: []
         | 
| 100 | 
            -
             | 
| 101 | 
            -
            extensions: 
         | 
| 115 | 
            +
            extensions:
         | 
| 102 116 | 
             
            - ext/extconf.rb
         | 
| 103 | 
            -
            extra_rdoc_files: | 
| 117 | 
            +
            extra_rdoc_files:
         | 
| 104 118 | 
             
            - Manifest.txt
         | 
| 105 119 | 
             
            - README_PROTECT_SERVER.rdoc
         | 
| 106 120 | 
             
            - ext/pk11s.c
         | 
| 107 | 
            -
            files: | 
| 108 | 
            -
            - .gemtest
         | 
| 109 | 
            -
            - .yardopts
         | 
| 121 | 
            +
            files:
         | 
| 122 | 
            +
            - ".gemtest"
         | 
| 123 | 
            +
            - ".yardopts"
         | 
| 110 124 | 
             
            - Manifest.txt
         | 
| 111 125 | 
             
            - README_PROTECT_SERVER.rdoc
         | 
| 112 126 | 
             
            - Rakefile
         | 
| 113 127 | 
             
            - ext/extconf.rb
         | 
| 114 128 | 
             
            - ext/generate_constants.rb
         | 
| 129 | 
            +
            - ext/generate_protect_server_constants.rb
         | 
| 130 | 
            +
            - ext/generate_protect_server_structs.rb
         | 
| 115 131 | 
             
            - ext/generate_structs.rb
         | 
| 132 | 
            +
            - ext/pk11_const_macros.h
         | 
| 133 | 
            +
            - ext/pk11_struct_macros.h
         | 
| 134 | 
            +
            - ext/pk11_version.h
         | 
| 116 135 | 
             
            - ext/pk11s.c
         | 
| 136 | 
            +
            - ext/std_structs.rb
         | 
| 117 137 | 
             
            - lib/pkcs11_protect_server.rb
         | 
| 118 138 | 
             
            - lib/pkcs11_protect_server/extensions.rb
         | 
| 119 139 | 
             
            - test/helper.rb
         | 
| 120 140 | 
             
            - test/test_pkcs11_protect_server.rb
         | 
| 121 141 | 
             
            - test/test_pkcs11_protect_server_crypt.rb
         | 
| 122 | 
            -
            - ext/pk11s_struct_impl.inc
         | 
| 123 | 
            -
            - ext/pk11s_struct_def.inc
         | 
| 124 | 
            -
            - ext/pk11s_const_def.inc
         | 
| 125 | 
            -
            - ext/pk11s_struct.doc
         | 
| 126 | 
            -
            - ext/pk11_struct_macros.h
         | 
| 127 | 
            -
            - ext/pk11_const_macros.h
         | 
| 128 | 
            -
            - ext/pk11_version.h
         | 
| 129 142 | 
             
            homepage: http://github.com/larskanis/pkcs11
         | 
| 130 | 
            -
            licenses: | 
| 131 | 
            -
             | 
| 143 | 
            +
            licenses:
         | 
| 144 | 
            +
            - MIT
         | 
| 145 | 
            +
            metadata:
         | 
| 146 | 
            +
              homepage_uri: http://github.com/larskanis/pkcs11
         | 
| 132 147 | 
             
            post_install_message: 
         | 
| 133 | 
            -
            rdoc_options: | 
| 134 | 
            -
            - --main
         | 
| 148 | 
            +
            rdoc_options:
         | 
| 149 | 
            +
            - "--main"
         | 
| 135 150 | 
             
            - README_PROTECT_SERVER.rdoc
         | 
| 136 | 
            -
            require_paths: | 
| 151 | 
            +
            require_paths:
         | 
| 137 152 | 
             
            - lib
         | 
| 138 | 
            -
            required_ruby_version: !ruby/object:Gem::Requirement | 
| 139 | 
            -
               | 
| 140 | 
            -
              requirements: 
         | 
| 153 | 
            +
            required_ruby_version: !ruby/object:Gem::Requirement
         | 
| 154 | 
            +
              requirements:
         | 
| 141 155 | 
             
              - - ">="
         | 
| 142 | 
            -
                - !ruby/object:Gem::Version | 
| 143 | 
            -
                   | 
| 144 | 
            -
             | 
| 145 | 
            -
             | 
| 146 | 
            -
                  version: "0"
         | 
| 147 | 
            -
            required_rubygems_version: !ruby/object:Gem::Requirement 
         | 
| 148 | 
            -
              none: false
         | 
| 149 | 
            -
              requirements: 
         | 
| 156 | 
            +
                - !ruby/object:Gem::Version
         | 
| 157 | 
            +
                  version: 2.2.0
         | 
| 158 | 
            +
            required_rubygems_version: !ruby/object:Gem::Requirement
         | 
| 159 | 
            +
              requirements:
         | 
| 150 160 | 
             
              - - ">="
         | 
| 151 | 
            -
                - !ruby/object:Gem::Version | 
| 152 | 
            -
                   | 
| 153 | 
            -
                  segments: 
         | 
| 154 | 
            -
                  - 0
         | 
| 155 | 
            -
                  version: "0"
         | 
| 161 | 
            +
                - !ruby/object:Gem::Version
         | 
| 162 | 
            +
                  version: '0'
         | 
| 156 163 | 
             
            requirements: []
         | 
| 157 | 
            -
             | 
| 158 | 
            -
            rubyforge_project: pkcs11_protect_server
         | 
| 159 | 
            -
            rubygems_version: 1.8.6
         | 
| 164 | 
            +
            rubygems_version: 3.0.3
         | 
| 160 165 | 
             
            signing_key: 
         | 
| 161 | 
            -
            specification_version:  | 
| 166 | 
            +
            specification_version: 4
         | 
| 162 167 | 
             
            summary: Safenet-ProtectServer extensions for PKCS#11-Ruby
         | 
| 163 | 
            -
            test_files: 
         | 
| 164 | 
            -
            - test/test_pkcs11_protect_server_crypt.rb
         | 
| 165 | 
            -
            - test/test_pkcs11_protect_server.rb
         | 
| 168 | 
            +
            test_files: []
         |