openssl 2.1.2 → 3.0.0
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/CONTRIBUTING.md +35 -45
 - data/History.md +232 -0
 - data/README.md +2 -2
 - data/ext/openssl/extconf.rb +61 -46
 - data/ext/openssl/openssl_missing.c +0 -66
 - data/ext/openssl/openssl_missing.h +60 -44
 - data/ext/openssl/ossl.c +112 -66
 - data/ext/openssl/ossl.h +28 -11
 - data/ext/openssl/ossl_asn1.c +42 -5
 - data/ext/openssl/ossl_bn.c +276 -146
 - data/ext/openssl/ossl_bn.h +2 -1
 - data/ext/openssl/ossl_cipher.c +38 -29
 - data/ext/openssl/ossl_config.c +412 -41
 - data/ext/openssl/ossl_config.h +4 -7
 - data/ext/openssl/ossl_digest.c +31 -62
 - data/ext/openssl/ossl_engine.c +18 -27
 - data/ext/openssl/ossl_hmac.c +52 -145
 - data/ext/openssl/ossl_kdf.c +11 -19
 - data/ext/openssl/ossl_ns_spki.c +1 -1
 - data/ext/openssl/ossl_ocsp.c +9 -62
 - data/ext/openssl/ossl_ocsp.h +3 -3
 - data/ext/openssl/ossl_pkcs12.c +21 -3
 - data/ext/openssl/ossl_pkcs7.c +45 -78
 - data/ext/openssl/ossl_pkcs7.h +16 -0
 - data/ext/openssl/ossl_pkey.c +1255 -178
 - data/ext/openssl/ossl_pkey.h +40 -77
 - data/ext/openssl/ossl_pkey_dh.c +125 -335
 - data/ext/openssl/ossl_pkey_dsa.c +93 -398
 - data/ext/openssl/ossl_pkey_ec.c +155 -318
 - data/ext/openssl/ossl_pkey_rsa.c +105 -484
 - data/ext/openssl/ossl_rand.c +2 -40
 - data/ext/openssl/ossl_ssl.c +395 -364
 - data/ext/openssl/ossl_ssl_session.c +24 -29
 - data/ext/openssl/ossl_ts.c +1539 -0
 - data/ext/openssl/ossl_ts.h +16 -0
 - data/ext/openssl/ossl_x509.c +86 -1
 - data/ext/openssl/ossl_x509cert.c +166 -10
 - data/ext/openssl/ossl_x509crl.c +10 -7
 - data/ext/openssl/ossl_x509ext.c +15 -2
 - data/ext/openssl/ossl_x509name.c +16 -5
 - data/ext/openssl/ossl_x509req.c +10 -7
 - data/ext/openssl/ossl_x509store.c +193 -92
 - data/lib/openssl/bn.rb +1 -1
 - data/lib/openssl/buffering.rb +42 -17
 - data/lib/openssl/cipher.rb +1 -1
 - data/lib/openssl/digest.rb +10 -12
 - data/lib/openssl/hmac.rb +78 -0
 - data/lib/openssl/marshal.rb +30 -0
 - data/lib/openssl/pkcs5.rb +1 -1
 - data/lib/openssl/pkey.rb +435 -1
 - data/lib/openssl/ssl.rb +53 -14
 - data/lib/openssl/version.rb +5 -0
 - data/lib/openssl/x509.rb +177 -1
 - data/lib/openssl.rb +24 -9
 - metadata +13 -69
 - data/ext/openssl/deprecation.rb +0 -23
 - data/ext/openssl/ossl_version.h +0 -15
 - data/ext/openssl/ruby_missing.h +0 -24
 - data/lib/openssl/config.rb +0 -474
 
| 
         @@ -52,8 +52,15 @@ struct ossl_verify_cb_args { 
     | 
|
| 
       52 
52 
     | 
    
         
             
            };
         
     | 
| 
       53 
53 
     | 
    
         | 
| 
       54 
54 
     | 
    
         
             
            static VALUE
         
     | 
| 
       55 
     | 
    
         
            -
             
     | 
| 
      
 55 
     | 
    
         
            +
            ossl_x509stctx_new_i(VALUE arg)
         
     | 
| 
       56 
56 
     | 
    
         
             
            {
         
     | 
| 
      
 57 
     | 
    
         
            +
                return ossl_x509stctx_new((X509_STORE_CTX *)arg);
         
     | 
| 
      
 58 
     | 
    
         
            +
            }
         
     | 
| 
      
 59 
     | 
    
         
            +
             
     | 
| 
      
 60 
     | 
    
         
            +
            static VALUE
         
     | 
| 
      
 61 
     | 
    
         
            +
            call_verify_cb_proc(VALUE arg)
         
     | 
| 
      
 62 
     | 
    
         
            +
            {
         
     | 
| 
      
 63 
     | 
    
         
            +
                struct ossl_verify_cb_args *args = (struct ossl_verify_cb_args *)arg;
         
     | 
| 
       57 
64 
     | 
    
         
             
                return rb_funcall(args->proc, rb_intern("call"), 2,
         
     | 
| 
       58 
65 
     | 
    
         
             
            		      args->preverify_ok, args->store_ctx);
         
     | 
| 
       59 
66 
     | 
    
         
             
            }
         
     | 
| 
         @@ -69,7 +76,7 @@ ossl_verify_cb_call(VALUE proc, int ok, X509_STORE_CTX *ctx) 
     | 
|
| 
       69 
76 
     | 
    
         
             
            	return ok;
         
     | 
| 
       70 
77 
     | 
    
         | 
| 
       71 
78 
     | 
    
         
             
                ret = Qfalse;
         
     | 
| 
       72 
     | 
    
         
            -
                rctx = rb_protect( 
     | 
| 
      
 79 
     | 
    
         
            +
                rctx = rb_protect(ossl_x509stctx_new_i, (VALUE)ctx, &state);
         
     | 
| 
       73 
80 
     | 
    
         
             
                if (state) {
         
     | 
| 
       74 
81 
     | 
    
         
             
            	rb_set_errinfo(Qnil);
         
     | 
| 
       75 
82 
     | 
    
         
             
            	rb_warn("StoreContext initialization failure");
         
     | 
| 
         @@ -78,7 +85,7 @@ ossl_verify_cb_call(VALUE proc, int ok, X509_STORE_CTX *ctx) 
     | 
|
| 
       78 
85 
     | 
    
         
             
            	args.proc = proc;
         
     | 
| 
       79 
86 
     | 
    
         
             
            	args.preverify_ok = ok ? Qtrue : Qfalse;
         
     | 
| 
       80 
87 
     | 
    
         
             
            	args.store_ctx = rctx;
         
     | 
| 
       81 
     | 
    
         
            -
            	ret = rb_protect( 
     | 
| 
      
 88 
     | 
    
         
            +
            	ret = rb_protect(call_verify_cb_proc, (VALUE)&args, &state);
         
     | 
| 
       82 
89 
     | 
    
         
             
            	if (state) {
         
     | 
| 
       83 
90 
     | 
    
         
             
            	    rb_set_errinfo(Qnil);
         
     | 
| 
       84 
91 
     | 
    
         
             
            	    rb_warn("exception in verify_callback is ignored");
         
     | 
| 
         @@ -105,6 +112,13 @@ VALUE cX509Store; 
     | 
|
| 
       105 
112 
     | 
    
         
             
            VALUE cX509StoreContext;
         
     | 
| 
       106 
113 
     | 
    
         
             
            VALUE eX509StoreError;
         
     | 
| 
       107 
114 
     | 
    
         | 
| 
      
 115 
     | 
    
         
            +
            static void
         
     | 
| 
      
 116 
     | 
    
         
            +
            ossl_x509store_mark(void *ptr)
         
     | 
| 
      
 117 
     | 
    
         
            +
            {
         
     | 
| 
      
 118 
     | 
    
         
            +
                X509_STORE *store = ptr;
         
     | 
| 
      
 119 
     | 
    
         
            +
                rb_gc_mark((VALUE)X509_STORE_get_ex_data(store, store_ex_verify_cb_idx));
         
     | 
| 
      
 120 
     | 
    
         
            +
            }
         
     | 
| 
      
 121 
     | 
    
         
            +
             
     | 
| 
       108 
122 
     | 
    
         
             
            static void
         
     | 
| 
       109 
123 
     | 
    
         
             
            ossl_x509store_free(void *ptr)
         
     | 
| 
       110 
124 
     | 
    
         
             
            {
         
     | 
| 
         @@ -114,7 +128,7 @@ ossl_x509store_free(void *ptr) 
     | 
|
| 
       114 
128 
     | 
    
         
             
            static const rb_data_type_t ossl_x509store_type = {
         
     | 
| 
       115 
129 
     | 
    
         
             
                "OpenSSL/X509/STORE",
         
     | 
| 
       116 
130 
     | 
    
         
             
                {
         
     | 
| 
       117 
     | 
    
         
            -
             
     | 
| 
      
 131 
     | 
    
         
            +
                    ossl_x509store_mark, ossl_x509store_free,
         
     | 
| 
       118 
132 
     | 
    
         
             
                },
         
     | 
| 
       119 
133 
     | 
    
         
             
                0, 0, RUBY_TYPED_FREE_IMMEDIATELY,
         
     | 
| 
       120 
134 
     | 
    
         
             
            };
         
     | 
| 
         @@ -157,9 +171,8 @@ ossl_x509store_alloc(VALUE klass) 
     | 
|
| 
       157 
171 
     | 
    
         
             
                VALUE obj;
         
     | 
| 
       158 
172 
     | 
    
         | 
| 
       159 
173 
     | 
    
         
             
                obj = NewX509Store(klass);
         
     | 
| 
       160 
     | 
    
         
            -
                if((store = X509_STORE_new()) == NULL) 
     | 
| 
       161 
     | 
    
         
            -
                    ossl_raise(eX509StoreError,  
     | 
| 
       162 
     | 
    
         
            -
                }
         
     | 
| 
      
 174 
     | 
    
         
            +
                if ((store = X509_STORE_new()) == NULL)
         
     | 
| 
      
 175 
     | 
    
         
            +
                    ossl_raise(eX509StoreError, "X509_STORE_new");
         
     | 
| 
       163 
176 
     | 
    
         
             
                SetX509Store(obj, store);
         
     | 
| 
       164 
177 
     | 
    
         | 
| 
       165 
178 
     | 
    
         
             
                return obj;
         
     | 
| 
         @@ -192,8 +205,9 @@ ossl_x509store_initialize(int argc, VALUE *argv, VALUE self) 
     | 
|
| 
       192 
205 
     | 
    
         
             
            {
         
     | 
| 
       193 
206 
     | 
    
         
             
                X509_STORE *store;
         
     | 
| 
       194 
207 
     | 
    
         | 
| 
       195 
     | 
    
         
            -
            /* BUG: This method takes any number of arguments but appears to ignore them. */
         
     | 
| 
       196 
208 
     | 
    
         
             
                GetX509Store(self, store);
         
     | 
| 
      
 209 
     | 
    
         
            +
                if (argc != 0)
         
     | 
| 
      
 210 
     | 
    
         
            +
                    rb_warn("OpenSSL::X509::Store.new does not take any arguments");
         
     | 
| 
       197 
211 
     | 
    
         
             
            #if !defined(HAVE_OPAQUE_OPENSSL)
         
     | 
| 
       198 
212 
     | 
    
         
             
                /* [Bug #405] [Bug #1678] [Bug #3000]; already fixed? */
         
     | 
| 
       199 
213 
     | 
    
         
             
                store->ex_data.sk = NULL;
         
     | 
| 
         @@ -214,8 +228,16 @@ ossl_x509store_initialize(int argc, VALUE *argv, VALUE self) 
     | 
|
| 
       214 
228 
     | 
    
         
             
             * call-seq:
         
     | 
| 
       215 
229 
     | 
    
         
             
             *   store.flags = flags
         
     | 
| 
       216 
230 
     | 
    
         
             
             *
         
     | 
| 
       217 
     | 
    
         
            -
             * Sets  
     | 
| 
       218 
     | 
    
         
            -
             *  
     | 
| 
      
 231 
     | 
    
         
            +
             * Sets the default flags used by certificate chain verification performed with
         
     | 
| 
      
 232 
     | 
    
         
            +
             * the Store.
         
     | 
| 
      
 233 
     | 
    
         
            +
             *
         
     | 
| 
      
 234 
     | 
    
         
            +
             * _flags_ consists of zero or more of the constants defined in OpenSSL::X509
         
     | 
| 
      
 235 
     | 
    
         
            +
             * with name V_FLAG_* or'ed together.
         
     | 
| 
      
 236 
     | 
    
         
            +
             *
         
     | 
| 
      
 237 
     | 
    
         
            +
             * OpenSSL::X509::StoreContext#flags= can be used to change the flags for a
         
     | 
| 
      
 238 
     | 
    
         
            +
             * single verification operation.
         
     | 
| 
      
 239 
     | 
    
         
            +
             *
         
     | 
| 
      
 240 
     | 
    
         
            +
             * See also the man page X509_VERIFY_PARAM_set_flags(3).
         
     | 
| 
       219 
241 
     | 
    
         
             
             */
         
     | 
| 
       220 
242 
     | 
    
         
             
            static VALUE
         
     | 
| 
       221 
243 
     | 
    
         
             
            ossl_x509store_set_flags(VALUE self, VALUE flags)
         
     | 
| 
         @@ -233,9 +255,9 @@ ossl_x509store_set_flags(VALUE self, VALUE flags) 
     | 
|
| 
       233 
255 
     | 
    
         
             
             * call-seq:
         
     | 
| 
       234 
256 
     | 
    
         
             
             *   store.purpose = purpose
         
     | 
| 
       235 
257 
     | 
    
         
             
             *
         
     | 
| 
       236 
     | 
    
         
            -
             * Sets the store's  
     | 
| 
       237 
     | 
    
         
            -
             * the store will check every  
     | 
| 
       238 
     | 
    
         
            -
             * with the purpose. The purpose is specified by constants:
         
     | 
| 
      
 258 
     | 
    
         
            +
             * Sets the store's default verification purpose. If specified,
         
     | 
| 
      
 259 
     | 
    
         
            +
             * the verifications on the store will check every certificate's extensions are
         
     | 
| 
      
 260 
     | 
    
         
            +
             * consistent with the purpose. The purpose is specified by constants:
         
     | 
| 
       239 
261 
     | 
    
         
             
             *
         
     | 
| 
       240 
262 
     | 
    
         
             
             * * X509::PURPOSE_SSL_CLIENT
         
     | 
| 
       241 
263 
     | 
    
         
             
             * * X509::PURPOSE_SSL_SERVER
         
     | 
| 
         @@ -246,6 +268,11 @@ ossl_x509store_set_flags(VALUE self, VALUE flags) 
     | 
|
| 
       246 
268 
     | 
    
         
             
             * * X509::PURPOSE_ANY
         
     | 
| 
       247 
269 
     | 
    
         
             
             * * X509::PURPOSE_OCSP_HELPER
         
     | 
| 
       248 
270 
     | 
    
         
             
             * * X509::PURPOSE_TIMESTAMP_SIGN
         
     | 
| 
      
 271 
     | 
    
         
            +
             *
         
     | 
| 
      
 272 
     | 
    
         
            +
             * OpenSSL::X509::StoreContext#purpose= can be used to change the value for a
         
     | 
| 
      
 273 
     | 
    
         
            +
             * single verification operation.
         
     | 
| 
      
 274 
     | 
    
         
            +
             *
         
     | 
| 
      
 275 
     | 
    
         
            +
             * See also the man page X509_VERIFY_PARAM_set_purpose(3).
         
     | 
| 
       249 
276 
     | 
    
         
             
             */
         
     | 
| 
       250 
277 
     | 
    
         
             
            static VALUE
         
     | 
| 
       251 
278 
     | 
    
         
             
            ossl_x509store_set_purpose(VALUE self, VALUE purpose)
         
     | 
| 
         @@ -262,6 +289,14 @@ ossl_x509store_set_purpose(VALUE self, VALUE purpose) 
     | 
|
| 
       262 
289 
     | 
    
         
             
            /*
         
     | 
| 
       263 
290 
     | 
    
         
             
             * call-seq:
         
     | 
| 
       264 
291 
     | 
    
         
             
             *   store.trust = trust
         
     | 
| 
      
 292 
     | 
    
         
            +
             *
         
     | 
| 
      
 293 
     | 
    
         
            +
             * Sets the default trust settings used by the certificate verification with
         
     | 
| 
      
 294 
     | 
    
         
            +
             * the store.
         
     | 
| 
      
 295 
     | 
    
         
            +
             *
         
     | 
| 
      
 296 
     | 
    
         
            +
             * OpenSSL::X509::StoreContext#trust= can be used to change the value for a
         
     | 
| 
      
 297 
     | 
    
         
            +
             * single verification operation.
         
     | 
| 
      
 298 
     | 
    
         
            +
             *
         
     | 
| 
      
 299 
     | 
    
         
            +
             * See also the man page X509_VERIFY_PARAM_set_trust(3).
         
     | 
| 
       265 
300 
     | 
    
         
             
             */
         
     | 
| 
       266 
301 
     | 
    
         
             
            static VALUE
         
     | 
| 
       267 
302 
     | 
    
         
             
            ossl_x509store_set_trust(VALUE self, VALUE trust)
         
     | 
| 
         @@ -279,7 +314,13 @@ ossl_x509store_set_trust(VALUE self, VALUE trust) 
     | 
|
| 
       279 
314 
     | 
    
         
             
             * call-seq:
         
     | 
| 
       280 
315 
     | 
    
         
             
             *   store.time = time
         
     | 
| 
       281 
316 
     | 
    
         
             
             *
         
     | 
| 
       282 
     | 
    
         
            -
             * Sets the time to be used in verifications.
         
     | 
| 
      
 317 
     | 
    
         
            +
             * Sets the time to be used in the certificate verifications with the store.
         
     | 
| 
      
 318 
     | 
    
         
            +
             * By default, if not specified, the current system time is used.
         
     | 
| 
      
 319 
     | 
    
         
            +
             *
         
     | 
| 
      
 320 
     | 
    
         
            +
             * OpenSSL::X509::StoreContext#time= can be used to change the value for a
         
     | 
| 
      
 321 
     | 
    
         
            +
             * single verification operation.
         
     | 
| 
      
 322 
     | 
    
         
            +
             *
         
     | 
| 
      
 323 
     | 
    
         
            +
             * See also the man page X509_VERIFY_PARAM_set_time(3).
         
     | 
| 
       283 
324 
     | 
    
         
             
             */
         
     | 
| 
       284 
325 
     | 
    
         
             
            static VALUE
         
     | 
| 
       285 
326 
     | 
    
         
             
            ossl_x509store_set_time(VALUE self, VALUE time)
         
     | 
| 
         @@ -295,24 +336,23 @@ ossl_x509store_set_time(VALUE self, VALUE time) 
     | 
|
| 
       295 
336 
     | 
    
         
             
             * Adds the certificates in _file_ to the certificate store. _file_ is the path
         
     | 
| 
       296 
337 
     | 
    
         
             
             * to the file, and the file contains one or more certificates in PEM format
         
     | 
| 
       297 
338 
     | 
    
         
             
             * concatenated together.
         
     | 
| 
      
 339 
     | 
    
         
            +
             *
         
     | 
| 
      
 340 
     | 
    
         
            +
             * See also the man page X509_LOOKUP_file(3).
         
     | 
| 
       298 
341 
     | 
    
         
             
             */
         
     | 
| 
       299 
342 
     | 
    
         
             
            static VALUE
         
     | 
| 
       300 
343 
     | 
    
         
             
            ossl_x509store_add_file(VALUE self, VALUE file)
         
     | 
| 
       301 
344 
     | 
    
         
             
            {
         
     | 
| 
       302 
345 
     | 
    
         
             
                X509_STORE *store;
         
     | 
| 
       303 
346 
     | 
    
         
             
                X509_LOOKUP *lookup;
         
     | 
| 
       304 
     | 
    
         
            -
                char *path 
     | 
| 
      
 347 
     | 
    
         
            +
                const char *path;
         
     | 
| 
       305 
348 
     | 
    
         | 
| 
       306 
     | 
    
         
            -
                if(file != Qnil){
         
     | 
| 
       307 
     | 
    
         
            -
            	rb_check_safe_obj(file);
         
     | 
| 
       308 
     | 
    
         
            -
            	path = StringValueCStr(file);
         
     | 
| 
       309 
     | 
    
         
            -
                }
         
     | 
| 
       310 
349 
     | 
    
         
             
                GetX509Store(self, store);
         
     | 
| 
      
 350 
     | 
    
         
            +
                path = StringValueCStr(file);
         
     | 
| 
       311 
351 
     | 
    
         
             
                lookup = X509_STORE_add_lookup(store, X509_LOOKUP_file());
         
     | 
| 
       312 
     | 
    
         
            -
                if(lookup 
     | 
| 
       313 
     | 
    
         
            -
             
     | 
| 
       314 
     | 
    
         
            -
             
     | 
| 
       315 
     | 
    
         
            -
             
     | 
| 
      
 352 
     | 
    
         
            +
                if (!lookup)
         
     | 
| 
      
 353 
     | 
    
         
            +
                    ossl_raise(eX509StoreError, "X509_STORE_add_lookup");
         
     | 
| 
      
 354 
     | 
    
         
            +
                if (X509_LOOKUP_load_file(lookup, path, X509_FILETYPE_PEM) != 1)
         
     | 
| 
      
 355 
     | 
    
         
            +
                    ossl_raise(eX509StoreError, "X509_LOOKUP_load_file");
         
     | 
| 
       316 
356 
     | 
    
         
             
            #if OPENSSL_VERSION_NUMBER < 0x10101000 || defined(LIBRESSL_VERSION_NUMBER)
         
     | 
| 
       317 
357 
     | 
    
         
             
                /*
         
     | 
| 
       318 
358 
     | 
    
         
             
                 * X509_load_cert_crl_file() which is called from X509_LOOKUP_load_file()
         
     | 
| 
         @@ -331,24 +371,23 @@ ossl_x509store_add_file(VALUE self, VALUE file) 
     | 
|
| 
       331 
371 
     | 
    
         
             
             *   store.add_path(path) -> self
         
     | 
| 
       332 
372 
     | 
    
         
             
             *
         
     | 
| 
       333 
373 
     | 
    
         
             
             * Adds _path_ as the hash dir to be looked up by the store.
         
     | 
| 
      
 374 
     | 
    
         
            +
             *
         
     | 
| 
      
 375 
     | 
    
         
            +
             * See also the man page X509_LOOKUP_hash_dir(3).
         
     | 
| 
       334 
376 
     | 
    
         
             
             */
         
     | 
| 
       335 
377 
     | 
    
         
             
            static VALUE
         
     | 
| 
       336 
378 
     | 
    
         
             
            ossl_x509store_add_path(VALUE self, VALUE dir)
         
     | 
| 
       337 
379 
     | 
    
         
             
            {
         
     | 
| 
       338 
380 
     | 
    
         
             
                X509_STORE *store;
         
     | 
| 
       339 
381 
     | 
    
         
             
                X509_LOOKUP *lookup;
         
     | 
| 
       340 
     | 
    
         
            -
                char *path 
     | 
| 
      
 382 
     | 
    
         
            +
                const char *path;
         
     | 
| 
       341 
383 
     | 
    
         | 
| 
       342 
     | 
    
         
            -
                if(dir != Qnil){
         
     | 
| 
       343 
     | 
    
         
            -
            	rb_check_safe_obj(dir);
         
     | 
| 
       344 
     | 
    
         
            -
            	path = StringValueCStr(dir);
         
     | 
| 
       345 
     | 
    
         
            -
                }
         
     | 
| 
       346 
384 
     | 
    
         
             
                GetX509Store(self, store);
         
     | 
| 
      
 385 
     | 
    
         
            +
                path = StringValueCStr(dir);
         
     | 
| 
       347 
386 
     | 
    
         
             
                lookup = X509_STORE_add_lookup(store, X509_LOOKUP_hash_dir());
         
     | 
| 
       348 
     | 
    
         
            -
                if(lookup 
     | 
| 
       349 
     | 
    
         
            -
             
     | 
| 
       350 
     | 
    
         
            -
             
     | 
| 
       351 
     | 
    
         
            -
             
     | 
| 
      
 387 
     | 
    
         
            +
                if (!lookup)
         
     | 
| 
      
 388 
     | 
    
         
            +
                    ossl_raise(eX509StoreError, "X509_STORE_add_lookup");
         
     | 
| 
      
 389 
     | 
    
         
            +
                if (X509_LOOKUP_add_dir(lookup, path, X509_FILETYPE_PEM) != 1)
         
     | 
| 
      
 390 
     | 
    
         
            +
                    ossl_raise(eX509StoreError, "X509_LOOKUP_add_dir");
         
     | 
| 
       352 
391 
     | 
    
         | 
| 
       353 
392 
     | 
    
         
             
                return self;
         
     | 
| 
       354 
393 
     | 
    
         
             
            }
         
     | 
| 
         @@ -363,6 +402,8 @@ ossl_x509store_add_path(VALUE self, VALUE dir) 
     | 
|
| 
       363 
402 
     | 
    
         
             
             *
         
     | 
| 
       364 
403 
     | 
    
         
             
             * * OpenSSL::X509::DEFAULT_CERT_FILE
         
     | 
| 
       365 
404 
     | 
    
         
             
             * * OpenSSL::X509::DEFAULT_CERT_DIR
         
     | 
| 
      
 405 
     | 
    
         
            +
             *
         
     | 
| 
      
 406 
     | 
    
         
            +
             * See also the man page X509_STORE_set_default_paths(3).
         
     | 
| 
       366 
407 
     | 
    
         
             
             */
         
     | 
| 
       367 
408 
     | 
    
         
             
            static VALUE
         
     | 
| 
       368 
409 
     | 
    
         
             
            ossl_x509store_set_default_paths(VALUE self)
         
     | 
| 
         @@ -370,18 +411,19 @@ ossl_x509store_set_default_paths(VALUE self) 
     | 
|
| 
       370 
411 
     | 
    
         
             
                X509_STORE *store;
         
     | 
| 
       371 
412 
     | 
    
         | 
| 
       372 
413 
     | 
    
         
             
                GetX509Store(self, store);
         
     | 
| 
       373 
     | 
    
         
            -
                if (X509_STORE_set_default_paths(store) != 1) 
     | 
| 
       374 
     | 
    
         
            -
                    ossl_raise(eX509StoreError,  
     | 
| 
       375 
     | 
    
         
            -
                }
         
     | 
| 
      
 414 
     | 
    
         
            +
                if (X509_STORE_set_default_paths(store) != 1)
         
     | 
| 
      
 415 
     | 
    
         
            +
                    ossl_raise(eX509StoreError, "X509_STORE_set_default_paths");
         
     | 
| 
       376 
416 
     | 
    
         | 
| 
       377 
417 
     | 
    
         
             
                return Qnil;
         
     | 
| 
       378 
418 
     | 
    
         
             
            }
         
     | 
| 
       379 
419 
     | 
    
         | 
| 
       380 
420 
     | 
    
         
             
            /*
         
     | 
| 
       381 
421 
     | 
    
         
             
             * call-seq:
         
     | 
| 
       382 
     | 
    
         
            -
             *   store.add_cert(cert)
         
     | 
| 
      
 422 
     | 
    
         
            +
             *   store.add_cert(cert) -> self
         
     | 
| 
       383 
423 
     | 
    
         
             
             *
         
     | 
| 
       384 
424 
     | 
    
         
             
             * Adds the OpenSSL::X509::Certificate _cert_ to the certificate store.
         
     | 
| 
      
 425 
     | 
    
         
            +
             *
         
     | 
| 
      
 426 
     | 
    
         
            +
             * See also the man page X509_STORE_add_cert(3).
         
     | 
| 
       385 
427 
     | 
    
         
             
             */
         
     | 
| 
       386 
428 
     | 
    
         
             
            static VALUE
         
     | 
| 
       387 
429 
     | 
    
         
             
            ossl_x509store_add_cert(VALUE self, VALUE arg)
         
     | 
| 
         @@ -391,9 +433,8 @@ ossl_x509store_add_cert(VALUE self, VALUE arg) 
     | 
|
| 
       391 
433 
     | 
    
         | 
| 
       392 
434 
     | 
    
         
             
                cert = GetX509CertPtr(arg); /* NO NEED TO DUP */
         
     | 
| 
       393 
435 
     | 
    
         
             
                GetX509Store(self, store);
         
     | 
| 
       394 
     | 
    
         
            -
                if (X509_STORE_add_cert(store, cert) != 1) 
     | 
| 
       395 
     | 
    
         
            -
                    ossl_raise(eX509StoreError,  
     | 
| 
       396 
     | 
    
         
            -
                }
         
     | 
| 
      
 436 
     | 
    
         
            +
                if (X509_STORE_add_cert(store, cert) != 1)
         
     | 
| 
      
 437 
     | 
    
         
            +
                    ossl_raise(eX509StoreError, "X509_STORE_add_cert");
         
     | 
| 
       397 
438 
     | 
    
         | 
| 
       398 
439 
     | 
    
         
             
                return self;
         
     | 
| 
       399 
440 
     | 
    
         
             
            }
         
     | 
| 
         @@ -403,6 +444,8 @@ ossl_x509store_add_cert(VALUE self, VALUE arg) 
     | 
|
| 
       403 
444 
     | 
    
         
             
             *   store.add_crl(crl) -> self
         
     | 
| 
       404 
445 
     | 
    
         
             
             *
         
     | 
| 
       405 
446 
     | 
    
         
             
             * Adds the OpenSSL::X509::CRL _crl_ to the store.
         
     | 
| 
      
 447 
     | 
    
         
            +
             *
         
     | 
| 
      
 448 
     | 
    
         
            +
             * See also the man page X509_STORE_add_crl(3).
         
     | 
| 
       406 
449 
     | 
    
         
             
             */
         
     | 
| 
       407 
450 
     | 
    
         
             
            static VALUE
         
     | 
| 
       408 
451 
     | 
    
         
             
            ossl_x509store_add_crl(VALUE self, VALUE arg)
         
     | 
| 
         @@ -412,9 +455,8 @@ ossl_x509store_add_crl(VALUE self, VALUE arg) 
     | 
|
| 
       412 
455 
     | 
    
         | 
| 
       413 
456 
     | 
    
         
             
                crl = GetX509CRLPtr(arg); /* NO NEED TO DUP */
         
     | 
| 
       414 
457 
     | 
    
         
             
                GetX509Store(self, store);
         
     | 
| 
       415 
     | 
    
         
            -
                if (X509_STORE_add_crl(store, crl) != 1) 
     | 
| 
       416 
     | 
    
         
            -
                    ossl_raise(eX509StoreError,  
     | 
| 
       417 
     | 
    
         
            -
                }
         
     | 
| 
      
 458 
     | 
    
         
            +
                if (X509_STORE_add_crl(store, crl) != 1)
         
     | 
| 
      
 459 
     | 
    
         
            +
                    ossl_raise(eX509StoreError, "X509_STORE_add_crl");
         
     | 
| 
       418 
460 
     | 
    
         | 
| 
       419 
461 
     | 
    
         
             
                return self;
         
     | 
| 
       420 
462 
     | 
    
         
             
            }
         
     | 
| 
         @@ -458,23 +500,16 @@ ossl_x509store_verify(int argc, VALUE *argv, VALUE self) 
     | 
|
| 
       458 
500 
     | 
    
         
             
                return result;
         
     | 
| 
       459 
501 
     | 
    
         
             
            }
         
     | 
| 
       460 
502 
     | 
    
         | 
| 
       461 
     | 
    
         
            -
            /*
         
     | 
| 
       462 
     | 
    
         
            -
             * Public Functions
         
     | 
| 
       463 
     | 
    
         
            -
             */
         
     | 
| 
       464 
     | 
    
         
            -
            static void ossl_x509stctx_free(void*);
         
     | 
| 
       465 
     | 
    
         
            -
             
     | 
| 
       466 
     | 
    
         
            -
             
     | 
| 
       467 
     | 
    
         
            -
            static const rb_data_type_t ossl_x509stctx_type = {
         
     | 
| 
       468 
     | 
    
         
            -
                "OpenSSL/X509/STORE_CTX",
         
     | 
| 
       469 
     | 
    
         
            -
                {
         
     | 
| 
       470 
     | 
    
         
            -
            	0, ossl_x509stctx_free,
         
     | 
| 
       471 
     | 
    
         
            -
                },
         
     | 
| 
       472 
     | 
    
         
            -
                0, 0, RUBY_TYPED_FREE_IMMEDIATELY,
         
     | 
| 
       473 
     | 
    
         
            -
            };
         
     | 
| 
       474 
     | 
    
         
            -
             
     | 
| 
       475 
503 
     | 
    
         
             
            /*
         
     | 
| 
       476 
504 
     | 
    
         
             
             * Private functions
         
     | 
| 
       477 
505 
     | 
    
         
             
             */
         
     | 
| 
      
 506 
     | 
    
         
            +
            static void
         
     | 
| 
      
 507 
     | 
    
         
            +
            ossl_x509stctx_mark(void *ptr)
         
     | 
| 
      
 508 
     | 
    
         
            +
            {
         
     | 
| 
      
 509 
     | 
    
         
            +
                X509_STORE_CTX *ctx = ptr;
         
     | 
| 
      
 510 
     | 
    
         
            +
                rb_gc_mark((VALUE)X509_STORE_CTX_get_ex_data(ctx, stctx_ex_verify_cb_idx));
         
     | 
| 
      
 511 
     | 
    
         
            +
            }
         
     | 
| 
      
 512 
     | 
    
         
            +
             
     | 
| 
       478 
513 
     | 
    
         
             
            static void
         
     | 
| 
       479 
514 
     | 
    
         
             
            ossl_x509stctx_free(void *ptr)
         
     | 
| 
       480 
515 
     | 
    
         
             
            {
         
     | 
| 
         @@ -486,6 +521,14 @@ ossl_x509stctx_free(void *ptr) 
     | 
|
| 
       486 
521 
     | 
    
         
             
                X509_STORE_CTX_free(ctx);
         
     | 
| 
       487 
522 
     | 
    
         
             
            }
         
     | 
| 
       488 
523 
     | 
    
         | 
| 
      
 524 
     | 
    
         
            +
            static const rb_data_type_t ossl_x509stctx_type = {
         
     | 
| 
      
 525 
     | 
    
         
            +
                "OpenSSL/X509/STORE_CTX",
         
     | 
| 
      
 526 
     | 
    
         
            +
                {
         
     | 
| 
      
 527 
     | 
    
         
            +
                    ossl_x509stctx_mark, ossl_x509stctx_free,
         
     | 
| 
      
 528 
     | 
    
         
            +
                },
         
     | 
| 
      
 529 
     | 
    
         
            +
                0, 0, RUBY_TYPED_FREE_IMMEDIATELY,
         
     | 
| 
      
 530 
     | 
    
         
            +
            };
         
     | 
| 
      
 531 
     | 
    
         
            +
             
     | 
| 
       489 
532 
     | 
    
         
             
            static VALUE
         
     | 
| 
       490 
533 
     | 
    
         
             
            ossl_x509stctx_alloc(VALUE klass)
         
     | 
| 
       491 
534 
     | 
    
         
             
            {
         
     | 
| 
         @@ -493,9 +536,8 @@ ossl_x509stctx_alloc(VALUE klass) 
     | 
|
| 
       493 
536 
     | 
    
         
             
                VALUE obj;
         
     | 
| 
       494 
537 
     | 
    
         | 
| 
       495 
538 
     | 
    
         
             
                obj = NewX509StCtx(klass);
         
     | 
| 
       496 
     | 
    
         
            -
                if((ctx = X509_STORE_CTX_new()) == NULL) 
     | 
| 
       497 
     | 
    
         
            -
                    ossl_raise(eX509StoreError,  
     | 
| 
       498 
     | 
    
         
            -
                }
         
     | 
| 
      
 539 
     | 
    
         
            +
                if ((ctx = X509_STORE_CTX_new()) == NULL)
         
     | 
| 
      
 540 
     | 
    
         
            +
                    ossl_raise(eX509StoreError, "X509_STORE_CTX_new");
         
     | 
| 
       499 
541 
     | 
    
         
             
                SetX509StCtx(obj, ctx);
         
     | 
| 
       500 
542 
     | 
    
         | 
| 
       501 
543 
     | 
    
         
             
                return obj;
         
     | 
| 
         @@ -519,7 +561,9 @@ static VALUE ossl_x509stctx_set_time(VALUE, VALUE); 
     | 
|
| 
       519 
561 
     | 
    
         | 
| 
       520 
562 
     | 
    
         
             
            /*
         
     | 
| 
       521 
563 
     | 
    
         
             
             * call-seq:
         
     | 
| 
       522 
     | 
    
         
            -
             *   StoreContext.new(store, cert = nil,  
     | 
| 
      
 564 
     | 
    
         
            +
             *   StoreContext.new(store, cert = nil, untrusted = nil)
         
     | 
| 
      
 565 
     | 
    
         
            +
             *
         
     | 
| 
      
 566 
     | 
    
         
            +
             * Sets up a StoreContext for a verification of the X.509 certificate _cert_.
         
     | 
| 
       523 
567 
     | 
    
         
             
             */
         
     | 
| 
       524 
568 
     | 
    
         
             
            static VALUE
         
     | 
| 
       525 
569 
     | 
    
         
             
            ossl_x509stctx_initialize(int argc, VALUE *argv, VALUE self)
         
     | 
| 
         @@ -529,15 +573,24 @@ ossl_x509stctx_initialize(int argc, VALUE *argv, VALUE self) 
     | 
|
| 
       529 
573 
     | 
    
         
             
                X509_STORE *x509st;
         
     | 
| 
       530 
574 
     | 
    
         
             
                X509 *x509 = NULL;
         
     | 
| 
       531 
575 
     | 
    
         
             
                STACK_OF(X509) *x509s = NULL;
         
     | 
| 
      
 576 
     | 
    
         
            +
                int state;
         
     | 
| 
       532 
577 
     | 
    
         | 
| 
       533 
578 
     | 
    
         
             
                rb_scan_args(argc, argv, "12", &store, &cert, &chain);
         
     | 
| 
       534 
579 
     | 
    
         
             
                GetX509StCtx(self, ctx);
         
     | 
| 
       535 
580 
     | 
    
         
             
                GetX509Store(store, x509st);
         
     | 
| 
       536 
     | 
    
         
            -
                if(!NIL_P(cert)) 
     | 
| 
       537 
     | 
    
         
            -
             
     | 
| 
       538 
     | 
    
         
            -
                if( 
     | 
| 
      
 581 
     | 
    
         
            +
                if (!NIL_P(cert))
         
     | 
| 
      
 582 
     | 
    
         
            +
                    x509 = DupX509CertPtr(cert); /* NEED TO DUP */
         
     | 
| 
      
 583 
     | 
    
         
            +
                if (!NIL_P(chain)) {
         
     | 
| 
      
 584 
     | 
    
         
            +
                    x509s = ossl_protect_x509_ary2sk(chain, &state);
         
     | 
| 
      
 585 
     | 
    
         
            +
                    if (state) {
         
     | 
| 
      
 586 
     | 
    
         
            +
                        X509_free(x509);
         
     | 
| 
      
 587 
     | 
    
         
            +
                        rb_jump_tag(state);
         
     | 
| 
      
 588 
     | 
    
         
            +
                    }
         
     | 
| 
      
 589 
     | 
    
         
            +
                }
         
     | 
| 
      
 590 
     | 
    
         
            +
                if (X509_STORE_CTX_init(ctx, x509st, x509, x509s) != 1){
         
     | 
| 
      
 591 
     | 
    
         
            +
                    X509_free(x509);
         
     | 
| 
       539 
592 
     | 
    
         
             
                    sk_X509_pop_free(x509s, X509_free);
         
     | 
| 
       540 
     | 
    
         
            -
                    ossl_raise(eX509StoreError,  
     | 
| 
      
 593 
     | 
    
         
            +
                    ossl_raise(eX509StoreError, "X509_STORE_CTX_init");
         
     | 
| 
       541 
594 
     | 
    
         
             
                }
         
     | 
| 
       542 
595 
     | 
    
         
             
                if (!NIL_P(t = rb_iv_get(store, "@time")))
         
     | 
| 
       543 
596 
     | 
    
         
             
            	ossl_x509stctx_set_time(self, t);
         
     | 
| 
         @@ -550,6 +603,10 @@ ossl_x509stctx_initialize(int argc, VALUE *argv, VALUE self) 
     | 
|
| 
       550 
603 
     | 
    
         
             
            /*
         
     | 
| 
       551 
604 
     | 
    
         
             
             * call-seq:
         
     | 
| 
       552 
605 
     | 
    
         
             
             *   stctx.verify -> true | false
         
     | 
| 
      
 606 
     | 
    
         
            +
             *
         
     | 
| 
      
 607 
     | 
    
         
            +
             * Performs the certificate verification using the parameters set to _stctx_.
         
     | 
| 
      
 608 
     | 
    
         
            +
             *
         
     | 
| 
      
 609 
     | 
    
         
            +
             * See also the man page X509_verify_cert(3).
         
     | 
| 
       553 
610 
     | 
    
         
             
             */
         
     | 
| 
       554 
611 
     | 
    
         
             
            static VALUE
         
     | 
| 
       555 
612 
     | 
    
         
             
            ossl_x509stctx_verify(VALUE self)
         
     | 
| 
         @@ -562,48 +619,45 @@ ossl_x509stctx_verify(VALUE self) 
     | 
|
| 
       562 
619 
     | 
    
         | 
| 
       563 
620 
     | 
    
         
             
                switch (X509_verify_cert(ctx)) {
         
     | 
| 
       564 
621 
     | 
    
         
             
                  case 1:
         
     | 
| 
       565 
     | 
    
         
            -
             
     | 
| 
      
 622 
     | 
    
         
            +
                    return Qtrue;
         
     | 
| 
       566 
623 
     | 
    
         
             
                  case 0:
         
     | 
| 
       567 
     | 
    
         
            -
             
     | 
| 
       568 
     | 
    
         
            -
             
     | 
| 
      
 624 
     | 
    
         
            +
                    ossl_clear_error();
         
     | 
| 
      
 625 
     | 
    
         
            +
                    return Qfalse;
         
     | 
| 
       569 
626 
     | 
    
         
             
                  default:
         
     | 
| 
       570 
     | 
    
         
            -
             
     | 
| 
      
 627 
     | 
    
         
            +
                    ossl_raise(eX509CertError, "X509_verify_cert");
         
     | 
| 
       571 
628 
     | 
    
         
             
                }
         
     | 
| 
       572 
629 
     | 
    
         
             
            }
         
     | 
| 
       573 
630 
     | 
    
         | 
| 
       574 
631 
     | 
    
         
             
            /*
         
     | 
| 
       575 
632 
     | 
    
         
             
             * call-seq:
         
     | 
| 
       576 
     | 
    
         
            -
             *   stctx.chain -> Array of X509::Certificate
         
     | 
| 
      
 633 
     | 
    
         
            +
             *   stctx.chain -> nil | Array of X509::Certificate
         
     | 
| 
      
 634 
     | 
    
         
            +
             *
         
     | 
| 
      
 635 
     | 
    
         
            +
             * Returns the verified chain.
         
     | 
| 
      
 636 
     | 
    
         
            +
             *
         
     | 
| 
      
 637 
     | 
    
         
            +
             * See also the man page X509_STORE_CTX_set0_verified_chain(3).
         
     | 
| 
       577 
638 
     | 
    
         
             
             */
         
     | 
| 
       578 
639 
     | 
    
         
             
            static VALUE
         
     | 
| 
       579 
640 
     | 
    
         
             
            ossl_x509stctx_get_chain(VALUE self)
         
     | 
| 
       580 
641 
     | 
    
         
             
            {
         
     | 
| 
       581 
642 
     | 
    
         
             
                X509_STORE_CTX *ctx;
         
     | 
| 
       582 
     | 
    
         
            -
                STACK_OF(X509) *chain;
         
     | 
| 
       583 
     | 
    
         
            -
                X509 *x509;
         
     | 
| 
       584 
     | 
    
         
            -
                int i, num;
         
     | 
| 
       585 
     | 
    
         
            -
                VALUE ary;
         
     | 
| 
      
 643 
     | 
    
         
            +
                const STACK_OF(X509) *chain;
         
     | 
| 
       586 
644 
     | 
    
         | 
| 
       587 
645 
     | 
    
         
             
                GetX509StCtx(self, ctx);
         
     | 
| 
       588 
     | 
    
         
            -
                 
     | 
| 
       589 
     | 
    
         
            -
             
     | 
| 
       590 
     | 
    
         
            -
             
     | 
| 
       591 
     | 
    
         
            -
                 
     | 
| 
       592 
     | 
    
         
            -
            	OSSL_Debug("certs in chain < 0???");
         
     | 
| 
       593 
     | 
    
         
            -
            	return rb_ary_new();
         
     | 
| 
       594 
     | 
    
         
            -
                }
         
     | 
| 
       595 
     | 
    
         
            -
                ary = rb_ary_new2(num);
         
     | 
| 
       596 
     | 
    
         
            -
                for(i = 0; i < num; i++) {
         
     | 
| 
       597 
     | 
    
         
            -
            	x509 = sk_X509_value(chain, i);
         
     | 
| 
       598 
     | 
    
         
            -
            	rb_ary_push(ary, ossl_x509_new(x509));
         
     | 
| 
       599 
     | 
    
         
            -
                }
         
     | 
| 
       600 
     | 
    
         
            -
             
     | 
| 
       601 
     | 
    
         
            -
                return ary;
         
     | 
| 
      
 646 
     | 
    
         
            +
                chain = X509_STORE_CTX_get0_chain(ctx);
         
     | 
| 
      
 647 
     | 
    
         
            +
                if (!chain)
         
     | 
| 
      
 648 
     | 
    
         
            +
                    return Qnil; /* Could be an empty array instead? */
         
     | 
| 
      
 649 
     | 
    
         
            +
                return ossl_x509_sk2ary(chain);
         
     | 
| 
       602 
650 
     | 
    
         
             
            }
         
     | 
| 
       603 
651 
     | 
    
         | 
| 
       604 
652 
     | 
    
         
             
            /*
         
     | 
| 
       605 
653 
     | 
    
         
             
             * call-seq:
         
     | 
| 
       606 
654 
     | 
    
         
             
             *   stctx.error -> Integer
         
     | 
| 
      
 655 
     | 
    
         
            +
             *
         
     | 
| 
      
 656 
     | 
    
         
            +
             * Returns the error code of _stctx_. This is typically called after #verify
         
     | 
| 
      
 657 
     | 
    
         
            +
             * is done, or from the verification callback set to
         
     | 
| 
      
 658 
     | 
    
         
            +
             * OpenSSL::X509::Store#verify_callback=.
         
     | 
| 
      
 659 
     | 
    
         
            +
             *
         
     | 
| 
      
 660 
     | 
    
         
            +
             * See also the man page X509_STORE_CTX_get_error(3).
         
     | 
| 
       607 
661 
     | 
    
         
             
             */
         
     | 
| 
       608 
662 
     | 
    
         
             
            static VALUE
         
     | 
| 
       609 
663 
     | 
    
         
             
            ossl_x509stctx_get_err(VALUE self)
         
     | 
| 
         @@ -618,6 +672,11 @@ ossl_x509stctx_get_err(VALUE self) 
     | 
|
| 
       618 
672 
     | 
    
         
             
            /*
         
     | 
| 
       619 
673 
     | 
    
         
             
             * call-seq:
         
     | 
| 
       620 
674 
     | 
    
         
             
             *   stctx.error = error_code
         
     | 
| 
      
 675 
     | 
    
         
            +
             *
         
     | 
| 
      
 676 
     | 
    
         
            +
             * Sets the error code of _stctx_. This is used by the verification callback
         
     | 
| 
      
 677 
     | 
    
         
            +
             * set to OpenSSL::X509::Store#verify_callback=.
         
     | 
| 
      
 678 
     | 
    
         
            +
             *
         
     | 
| 
      
 679 
     | 
    
         
            +
             * See also the man page X509_STORE_CTX_set_error(3).
         
     | 
| 
       621 
680 
     | 
    
         
             
             */
         
     | 
| 
       622 
681 
     | 
    
         
             
            static VALUE
         
     | 
| 
       623 
682 
     | 
    
         
             
            ossl_x509stctx_set_error(VALUE self, VALUE err)
         
     | 
| 
         @@ -634,7 +693,10 @@ ossl_x509stctx_set_error(VALUE self, VALUE err) 
     | 
|
| 
       634 
693 
     | 
    
         
             
             * call-seq:
         
     | 
| 
       635 
694 
     | 
    
         
             
             *   stctx.error_string -> String
         
     | 
| 
       636 
695 
     | 
    
         
             
             *
         
     | 
| 
       637 
     | 
    
         
            -
             * Returns the error string corresponding to the error code 
     | 
| 
      
 696 
     | 
    
         
            +
             * Returns the human readable error string corresponding to the error code
         
     | 
| 
      
 697 
     | 
    
         
            +
             * retrieved by #error.
         
     | 
| 
      
 698 
     | 
    
         
            +
             *
         
     | 
| 
      
 699 
     | 
    
         
            +
             * See also the man page X509_verify_cert_error_string(3).
         
     | 
| 
       638 
700 
     | 
    
         
             
             */
         
     | 
| 
       639 
701 
     | 
    
         
             
            static VALUE
         
     | 
| 
       640 
702 
     | 
    
         
             
            ossl_x509stctx_get_err_string(VALUE self)
         
     | 
| 
         @@ -651,6 +713,10 @@ ossl_x509stctx_get_err_string(VALUE self) 
     | 
|
| 
       651 
713 
     | 
    
         
             
            /*
         
     | 
| 
       652 
714 
     | 
    
         
             
             * call-seq:
         
     | 
| 
       653 
715 
     | 
    
         
             
             *   stctx.error_depth -> Integer
         
     | 
| 
      
 716 
     | 
    
         
            +
             *
         
     | 
| 
      
 717 
     | 
    
         
            +
             * Returns the depth of the chain. This is used in combination with #error.
         
     | 
| 
      
 718 
     | 
    
         
            +
             *
         
     | 
| 
      
 719 
     | 
    
         
            +
             * See also the man page X509_STORE_CTX_get_error_depth(3).
         
     | 
| 
       654 
720 
     | 
    
         
             
             */
         
     | 
| 
       655 
721 
     | 
    
         
             
            static VALUE
         
     | 
| 
       656 
722 
     | 
    
         
             
            ossl_x509stctx_get_err_depth(VALUE self)
         
     | 
| 
         @@ -665,6 +731,10 @@ ossl_x509stctx_get_err_depth(VALUE self) 
     | 
|
| 
       665 
731 
     | 
    
         
             
            /*
         
     | 
| 
       666 
732 
     | 
    
         
             
             * call-seq:
         
     | 
| 
       667 
733 
     | 
    
         
             
             *   stctx.current_cert -> X509::Certificate
         
     | 
| 
      
 734 
     | 
    
         
            +
             *
         
     | 
| 
      
 735 
     | 
    
         
            +
             * Returns the certificate which caused the error.
         
     | 
| 
      
 736 
     | 
    
         
            +
             *
         
     | 
| 
      
 737 
     | 
    
         
            +
             * See also the man page X509_STORE_CTX_get_current_cert(3).
         
     | 
| 
       668 
738 
     | 
    
         
             
             */
         
     | 
| 
       669 
739 
     | 
    
         
             
            static VALUE
         
     | 
| 
       670 
740 
     | 
    
         
             
            ossl_x509stctx_get_curr_cert(VALUE self)
         
     | 
| 
         @@ -679,6 +749,10 @@ ossl_x509stctx_get_curr_cert(VALUE self) 
     | 
|
| 
       679 
749 
     | 
    
         
             
            /*
         
     | 
| 
       680 
750 
     | 
    
         
             
             * call-seq:
         
     | 
| 
       681 
751 
     | 
    
         
             
             *   stctx.current_crl -> X509::CRL
         
     | 
| 
      
 752 
     | 
    
         
            +
             *
         
     | 
| 
      
 753 
     | 
    
         
            +
             * Returns the CRL which caused the error.
         
     | 
| 
      
 754 
     | 
    
         
            +
             *
         
     | 
| 
      
 755 
     | 
    
         
            +
             * See also the man page X509_STORE_CTX_get_current_crl(3).
         
     | 
| 
       682 
756 
     | 
    
         
             
             */
         
     | 
| 
       683 
757 
     | 
    
         
             
            static VALUE
         
     | 
| 
       684 
758 
     | 
    
         
             
            ossl_x509stctx_get_curr_crl(VALUE self)
         
     | 
| 
         @@ -698,7 +772,10 @@ ossl_x509stctx_get_curr_crl(VALUE self) 
     | 
|
| 
       698 
772 
     | 
    
         
             
             * call-seq:
         
     | 
| 
       699 
773 
     | 
    
         
             
             *   stctx.flags = flags
         
     | 
| 
       700 
774 
     | 
    
         
             
             *
         
     | 
| 
       701 
     | 
    
         
            -
             * Sets the verification flags to the context.  
     | 
| 
      
 775 
     | 
    
         
            +
             * Sets the verification flags to the context. This overrides the default value
         
     | 
| 
      
 776 
     | 
    
         
            +
             * set by Store#flags=.
         
     | 
| 
      
 777 
     | 
    
         
            +
             *
         
     | 
| 
      
 778 
     | 
    
         
            +
             * See also the man page X509_VERIFY_PARAM_set_flags(3).
         
     | 
| 
       702 
779 
     | 
    
         
             
             */
         
     | 
| 
       703 
780 
     | 
    
         
             
            static VALUE
         
     | 
| 
       704 
781 
     | 
    
         
             
            ossl_x509stctx_set_flags(VALUE self, VALUE flags)
         
     | 
| 
         @@ -716,7 +793,10 @@ ossl_x509stctx_set_flags(VALUE self, VALUE flags) 
     | 
|
| 
       716 
793 
     | 
    
         
             
             * call-seq:
         
     | 
| 
       717 
794 
     | 
    
         
             
             *   stctx.purpose = purpose
         
     | 
| 
       718 
795 
     | 
    
         
             
             *
         
     | 
| 
       719 
     | 
    
         
            -
             * Sets the purpose of the context.  
     | 
| 
      
 796 
     | 
    
         
            +
             * Sets the purpose of the context. This overrides the default value set by
         
     | 
| 
      
 797 
     | 
    
         
            +
             * Store#purpose=.
         
     | 
| 
      
 798 
     | 
    
         
            +
             *
         
     | 
| 
      
 799 
     | 
    
         
            +
             * See also the man page X509_VERIFY_PARAM_set_purpose(3).
         
     | 
| 
       720 
800 
     | 
    
         
             
             */
         
     | 
| 
       721 
801 
     | 
    
         
             
            static VALUE
         
     | 
| 
       722 
802 
     | 
    
         
             
            ossl_x509stctx_set_purpose(VALUE self, VALUE purpose)
         
     | 
| 
         @@ -733,6 +813,11 @@ ossl_x509stctx_set_purpose(VALUE self, VALUE purpose) 
     | 
|
| 
       733 
813 
     | 
    
         
             
            /*
         
     | 
| 
       734 
814 
     | 
    
         
             
             * call-seq:
         
     | 
| 
       735 
815 
     | 
    
         
             
             *   stctx.trust = trust
         
     | 
| 
      
 816 
     | 
    
         
            +
             *
         
     | 
| 
      
 817 
     | 
    
         
            +
             * Sets the trust settings of the context. This overrides the default value set
         
     | 
| 
      
 818 
     | 
    
         
            +
             * by Store#trust=.
         
     | 
| 
      
 819 
     | 
    
         
            +
             *
         
     | 
| 
      
 820 
     | 
    
         
            +
             * See also the man page X509_VERIFY_PARAM_set_trust(3).
         
     | 
| 
       736 
821 
     | 
    
         
             
             */
         
     | 
| 
       737 
822 
     | 
    
         
             
            static VALUE
         
     | 
| 
       738 
823 
     | 
    
         
             
            ossl_x509stctx_set_trust(VALUE self, VALUE trust)
         
     | 
| 
         @@ -751,6 +836,8 @@ ossl_x509stctx_set_trust(VALUE self, VALUE trust) 
     | 
|
| 
       751 
836 
     | 
    
         
             
             *   stctx.time = time
         
     | 
| 
       752 
837 
     | 
    
         
             
             *
         
     | 
| 
       753 
838 
     | 
    
         
             
             * Sets the time used in the verification. If not set, the current time is used.
         
     | 
| 
      
 839 
     | 
    
         
            +
             *
         
     | 
| 
      
 840 
     | 
    
         
            +
             * See also the man page X509_VERIFY_PARAM_set_time(3).
         
     | 
| 
       754 
841 
     | 
    
         
             
             */
         
     | 
| 
       755 
842 
     | 
    
         
             
            static VALUE
         
     | 
| 
       756 
843 
     | 
    
         
             
            ossl_x509stctx_set_time(VALUE self, VALUE time)
         
     | 
| 
         @@ -826,23 +913,37 @@ Init_ossl_x509store(void) 
     | 
|
| 
       826 
913 
     | 
    
         
             
                cX509Store = rb_define_class_under(mX509, "Store", rb_cObject);
         
     | 
| 
       827 
914 
     | 
    
         
             
                /*
         
     | 
| 
       828 
915 
     | 
    
         
             
                 * The callback for additional certificate verification. It is invoked for
         
     | 
| 
       829 
     | 
    
         
            -
                 * each  
     | 
| 
      
 916 
     | 
    
         
            +
                 * each certificate in the chain and can be used to implement custom
         
     | 
| 
      
 917 
     | 
    
         
            +
                 * certificate verification conditions.
         
     | 
| 
       830 
918 
     | 
    
         
             
                 *
         
     | 
| 
       831 
919 
     | 
    
         
             
                 * The callback is invoked with two values, a boolean that indicates if the
         
     | 
| 
       832 
920 
     | 
    
         
             
                 * pre-verification by OpenSSL has succeeded or not, and the StoreContext in
         
     | 
| 
       833 
     | 
    
         
            -
                 * use. 
     | 
| 
      
 921 
     | 
    
         
            +
                 * use.
         
     | 
| 
      
 922 
     | 
    
         
            +
                 *
         
     | 
| 
      
 923 
     | 
    
         
            +
                 * The callback can use StoreContext#error= to change the error code as
         
     | 
| 
      
 924 
     | 
    
         
            +
                 * needed. The callback must return either true or false.
         
     | 
| 
      
 925 
     | 
    
         
            +
                 *
         
     | 
| 
      
 926 
     | 
    
         
            +
                 * NOTE: any exception raised within the callback will be ignored.
         
     | 
| 
      
 927 
     | 
    
         
            +
                 *
         
     | 
| 
      
 928 
     | 
    
         
            +
                 * See also the man page X509_STORE_CTX_set_verify_cb(3).
         
     | 
| 
       834 
929 
     | 
    
         
             
                 */
         
     | 
| 
       835 
930 
     | 
    
         
             
                rb_attr(cX509Store, rb_intern("verify_callback"), 1, 0, Qfalse);
         
     | 
| 
       836 
931 
     | 
    
         
             
                /*
         
     | 
| 
       837 
932 
     | 
    
         
             
                 * The error code set by the last call of #verify.
         
     | 
| 
      
 933 
     | 
    
         
            +
                 *
         
     | 
| 
      
 934 
     | 
    
         
            +
                 * See also StoreContext#error.
         
     | 
| 
       838 
935 
     | 
    
         
             
                 */
         
     | 
| 
       839 
936 
     | 
    
         
             
                rb_attr(cX509Store, rb_intern("error"), 1, 0, Qfalse);
         
     | 
| 
       840 
937 
     | 
    
         
             
                /*
         
     | 
| 
       841 
938 
     | 
    
         
             
                 * The description for the error code set by the last call of #verify.
         
     | 
| 
      
 939 
     | 
    
         
            +
                 *
         
     | 
| 
      
 940 
     | 
    
         
            +
                 * See also StoreContext#error_string.
         
     | 
| 
       842 
941 
     | 
    
         
             
                 */
         
     | 
| 
       843 
942 
     | 
    
         
             
                rb_attr(cX509Store, rb_intern("error_string"), 1, 0, Qfalse);
         
     | 
| 
       844 
943 
     | 
    
         
             
                /*
         
     | 
| 
       845 
944 
     | 
    
         
             
                 * The certificate chain constructed by the last call of #verify.
         
     | 
| 
      
 945 
     | 
    
         
            +
                 *
         
     | 
| 
      
 946 
     | 
    
         
            +
                 * See also StoreContext#chain.
         
     | 
| 
       846 
947 
     | 
    
         
             
                 */
         
     | 
| 
       847 
948 
     | 
    
         
             
                rb_attr(cX509Store, rb_intern("chain"), 1, 0, Qfalse);
         
     | 
| 
       848 
949 
     | 
    
         
             
                rb_define_alloc_func(cX509Store, ossl_x509store_alloc);
         
     | 
    
        data/lib/openssl/bn.rb
    CHANGED