rubysl-openssl 2.4.0 → 2.5.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/ext/rubysl/openssl/deprecation.rb +1 -0
- data/ext/rubysl/openssl/extconf.rb +6 -8
- data/ext/rubysl/openssl/openssl_missing.c +1 -3
- data/ext/rubysl/openssl/openssl_missing.h +1 -3
- data/ext/rubysl/openssl/ossl.c +15 -3
- data/ext/rubysl/openssl/ossl.h +5 -4
- data/ext/rubysl/openssl/ossl_asn1.c +19 -13
- data/ext/rubysl/openssl/ossl_asn1.h +1 -2
- data/ext/rubysl/openssl/ossl_bio.c +1 -2
- data/ext/rubysl/openssl/ossl_bio.h +1 -3
- data/ext/rubysl/openssl/ossl_bn.c +227 -90
- data/ext/rubysl/openssl/ossl_bn.h +1 -3
- data/ext/rubysl/openssl/ossl_cipher.c +5 -11
- data/ext/rubysl/openssl/ossl_cipher.h +1 -3
- data/ext/rubysl/openssl/ossl_config.c +1 -2
- data/ext/rubysl/openssl/ossl_config.h +1 -3
- data/ext/rubysl/openssl/ossl_digest.c +6 -7
- data/ext/rubysl/openssl/ossl_digest.h +1 -3
- data/ext/rubysl/openssl/ossl_engine.c +11 -7
- data/ext/rubysl/openssl/ossl_engine.h +1 -2
- data/ext/rubysl/openssl/ossl_hmac.c +1 -2
- data/ext/rubysl/openssl/ossl_hmac.h +1 -2
- data/ext/rubysl/openssl/ossl_ns_spki.c +7 -6
- data/ext/rubysl/openssl/ossl_ns_spki.h +1 -3
- data/ext/rubysl/openssl/ossl_ocsp.c +39 -25
- data/ext/rubysl/openssl/ossl_ocsp.h +1 -2
- data/ext/rubysl/openssl/ossl_pkcs12.c +10 -6
- data/ext/rubysl/openssl/ossl_pkcs12.h +1 -3
- data/ext/rubysl/openssl/ossl_pkcs5.c +0 -1
- data/ext/rubysl/openssl/ossl_pkcs7.c +29 -16
- data/ext/rubysl/openssl/ossl_pkcs7.h +1 -3
- data/ext/rubysl/openssl/ossl_pkey.c +10 -8
- data/ext/rubysl/openssl/ossl_pkey.h +5 -6
- data/ext/rubysl/openssl/ossl_pkey_dh.c +5 -74
- data/ext/rubysl/openssl/ossl_pkey_dsa.c +7 -6
- data/ext/rubysl/openssl/ossl_pkey_ec.c +4 -2
- data/ext/rubysl/openssl/ossl_pkey_rsa.c +5 -5
- data/ext/rubysl/openssl/ossl_rand.c +13 -5
- data/ext/rubysl/openssl/ossl_rand.h +1 -3
- data/ext/rubysl/openssl/ossl_ssl.c +334 -265
- data/ext/rubysl/openssl/ossl_ssl.h +1 -5
- data/ext/rubysl/openssl/ossl_ssl_session.c +5 -1
- data/ext/rubysl/openssl/ossl_version.h +1 -2
- data/ext/rubysl/openssl/ossl_x509.c +1 -3
- data/ext/rubysl/openssl/ossl_x509.h +1 -2
- data/ext/rubysl/openssl/ossl_x509attr.c +9 -6
- data/ext/rubysl/openssl/ossl_x509cert.c +14 -12
- data/ext/rubysl/openssl/ossl_x509crl.c +15 -13
- data/ext/rubysl/openssl/ossl_x509ext.c +13 -8
- data/ext/rubysl/openssl/ossl_x509name.c +9 -6
- data/ext/rubysl/openssl/ossl_x509req.c +12 -10
- data/ext/rubysl/openssl/ossl_x509revoked.c +12 -10
- data/ext/rubysl/openssl/ossl_x509store.c +17 -10
- data/ext/rubysl/openssl/ruby_missing.h +1 -2
- data/lib/openssl/bn.rb +2 -8
- data/lib/openssl/buffering.rb +3 -7
- data/lib/openssl/cipher.rb +3 -9
- data/lib/openssl/config.rb +2 -1
- data/lib/openssl/digest.rb +3 -10
- data/lib/openssl/pkey.rb +37 -0
- data/lib/openssl/ssl.rb +128 -17
- data/lib/openssl/x509.rb +2 -8
- data/lib/rubysl/openssl.rb +4 -7
- data/lib/rubysl/openssl/version.rb +1 -1
- metadata +12 -11
@@ -1,11 +1,10 @@
|
|
1
1
|
/*
|
2
|
-
* $Id: ossl_bn.h 25189 2009-10-02 12:04:37Z akr $
|
3
2
|
* 'OpenSSL for Ruby' project
|
4
3
|
* Copyright (C) 2001-2002 Michal Rokos <m.rokos@sh.cvut.cz>
|
5
4
|
* All rights reserved.
|
6
5
|
*/
|
7
6
|
/*
|
8
|
-
* This program is
|
7
|
+
* This program is licensed under the same licence as Ruby.
|
9
8
|
* (See the file 'LICENCE'.)
|
10
9
|
*/
|
11
10
|
#if !defined(_OSSL_BN_H_)
|
@@ -22,4 +21,3 @@ void Init_ossl_bn(void);
|
|
22
21
|
|
23
22
|
|
24
23
|
#endif /* _OSS_BN_H_ */
|
25
|
-
|
@@ -1,17 +1,16 @@
|
|
1
1
|
/*
|
2
|
-
* $Id: ossl_cipher.c 48923 2014-12-23 02:42:16Z nobu $
|
3
2
|
* 'OpenSSL for Ruby' project
|
4
3
|
* Copyright (C) 2001-2002 Michal Rokos <m.rokos@sh.cvut.cz>
|
5
4
|
* All rights reserved.
|
6
5
|
*/
|
7
6
|
/*
|
8
|
-
* This program is
|
7
|
+
* This program is licensed under the same licence as Ruby.
|
9
8
|
* (See the file 'LICENCE'.)
|
10
9
|
*/
|
11
10
|
#include "ossl.h"
|
12
11
|
|
13
|
-
#define
|
14
|
-
|
12
|
+
#define NewCipher(klass) \
|
13
|
+
TypedData_Wrap_Struct((klass), &ossl_cipher_type, 0)
|
15
14
|
#define MakeCipher(obj, klass, ctx) \
|
16
15
|
(obj) = TypedData_Make_Struct((klass), EVP_CIPHER_CTX, &ossl_cipher_type, (ctx))
|
17
16
|
#define AllocCipher(obj, ctx) \
|
@@ -92,17 +91,13 @@ static size_t
|
|
92
91
|
ossl_cipher_memsize(const void *ptr)
|
93
92
|
{
|
94
93
|
const EVP_CIPHER_CTX *ctx = ptr;
|
95
|
-
return
|
94
|
+
return sizeof(*ctx);
|
96
95
|
}
|
97
96
|
|
98
97
|
static VALUE
|
99
98
|
ossl_cipher_alloc(VALUE klass)
|
100
99
|
{
|
101
|
-
|
102
|
-
|
103
|
-
WrapCipher(obj, klass, 0);
|
104
|
-
|
105
|
-
return obj;
|
100
|
+
return NewCipher(klass);
|
106
101
|
}
|
107
102
|
|
108
103
|
/*
|
@@ -1014,4 +1009,3 @@ Init_ossl_cipher(void)
|
|
1014
1009
|
rb_define_method(cCipher, "block_size", ossl_cipher_block_size, 0);
|
1015
1010
|
rb_define_method(cCipher, "padding=", ossl_cipher_set_padding, 1);
|
1016
1011
|
}
|
1017
|
-
|
@@ -1,11 +1,10 @@
|
|
1
1
|
/*
|
2
|
-
* $Id: ossl_cipher.h 25189 2009-10-02 12:04:37Z akr $
|
3
2
|
* 'OpenSSL for Ruby' project
|
4
3
|
* Copyright (C) 2001-2002 Michal Rokos <m.rokos@sh.cvut.cz>
|
5
4
|
* All rights reserved.
|
6
5
|
*/
|
7
6
|
/*
|
8
|
-
* This program is
|
7
|
+
* This program is licensed under the same licence as Ruby.
|
9
8
|
* (See the file 'LICENCE'.)
|
10
9
|
*/
|
11
10
|
#if !defined(_OSSL_CIPHER_H_)
|
@@ -19,4 +18,3 @@ VALUE ossl_cipher_new(const EVP_CIPHER *);
|
|
19
18
|
void Init_ossl_cipher(void);
|
20
19
|
|
21
20
|
#endif /* _OSSL_CIPHER_H_ */
|
22
|
-
|
@@ -1,11 +1,10 @@
|
|
1
1
|
/*
|
2
|
-
* $Id: ossl_config.c 47744 2014-09-30 05:25:32Z nobu $
|
3
2
|
* 'OpenSSL for Ruby' project
|
4
3
|
* Copyright (C) 2001-2002 Michal Rokos <m.rokos@sh.cvut.cz>
|
5
4
|
* All rights reserved.
|
6
5
|
*/
|
7
6
|
/*
|
8
|
-
* This program is
|
7
|
+
* This program is licensed under the same licence as Ruby.
|
9
8
|
* (See the file 'LICENCE'.)
|
10
9
|
*/
|
11
10
|
#include "ossl.h"
|
@@ -1,11 +1,10 @@
|
|
1
1
|
/*
|
2
|
-
* $Id: ossl_config.h 25189 2009-10-02 12:04:37Z akr $
|
3
2
|
* 'OpenSSL for Ruby' project
|
4
3
|
* Copyright (C) 2001-2002 Michal Rokos <m.rokos@sh.cvut.cz>
|
5
4
|
* All rights reserved.
|
6
5
|
*/
|
7
6
|
/*
|
8
|
-
* This program is
|
7
|
+
* This program is licensed under the same licence as Ruby.
|
9
8
|
* (See the file 'LICENCE'.)
|
10
9
|
*/
|
11
10
|
#if !defined(_OSSL_CONFIG_H_)
|
@@ -19,4 +18,3 @@ CONF* DupConfigPtr(VALUE obj);
|
|
19
18
|
void Init_ossl_config(void);
|
20
19
|
|
21
20
|
#endif /* _OSSL_CONFIG_H_ */
|
22
|
-
|
@@ -1,11 +1,10 @@
|
|
1
1
|
/*
|
2
|
-
* $Id: ossl_digest.c 48791 2014-12-12 21:57:44Z nobu $
|
3
2
|
* 'OpenSSL for Ruby' project
|
4
3
|
* Copyright (C) 2001-2002 Michal Rokos <m.rokos@sh.cvut.cz>
|
5
4
|
* All rights reserved.
|
6
5
|
*/
|
7
6
|
/*
|
8
|
-
* This program is
|
7
|
+
* This program is licensed under the same licence as Ruby.
|
9
8
|
* (See the file 'LICENCE'.)
|
10
9
|
*/
|
11
10
|
#include "ossl.h"
|
@@ -95,13 +94,11 @@ ossl_digest_new(const EVP_MD *md)
|
|
95
94
|
static VALUE
|
96
95
|
ossl_digest_alloc(VALUE klass)
|
97
96
|
{
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
ctx = EVP_MD_CTX_create();
|
97
|
+
VALUE obj = TypedData_Wrap_Struct(klass, &ossl_digest_type, 0);
|
98
|
+
EVP_MD_CTX *ctx = EVP_MD_CTX_create();
|
102
99
|
if (ctx == NULL)
|
103
100
|
ossl_raise(rb_eRuntimeError, "EVP_MD_CTX_create() failed");
|
104
|
-
obj =
|
101
|
+
RTYPEDDATA_DATA(obj) = ctx;
|
105
102
|
|
106
103
|
return obj;
|
107
104
|
}
|
@@ -310,6 +307,8 @@ ossl_digest_block_length(VALUE self)
|
|
310
307
|
void
|
311
308
|
Init_ossl_digest(void)
|
312
309
|
{
|
310
|
+
rb_require("digest");
|
311
|
+
|
313
312
|
#if 0
|
314
313
|
mOSSL = rb_define_module("OpenSSL"); /* let rdoc know about mOSSL */
|
315
314
|
#endif
|
@@ -1,11 +1,10 @@
|
|
1
1
|
/*
|
2
|
-
* $Id: ossl_digest.h 25189 2009-10-02 12:04:37Z akr $
|
3
2
|
* 'OpenSSL for Ruby' project
|
4
3
|
* Copyright (C) 2001-2002 Michal Rokos <m.rokos@sh.cvut.cz>
|
5
4
|
* All rights reserved.
|
6
5
|
*/
|
7
6
|
/*
|
8
|
-
* This program is
|
7
|
+
* This program is licensed under the same licence as Ruby.
|
9
8
|
* (See the file 'LICENCE'.)
|
10
9
|
*/
|
11
10
|
#if !defined(_OSSL_DIGEST_H_)
|
@@ -19,4 +18,3 @@ VALUE ossl_digest_new(const EVP_MD *);
|
|
19
18
|
void Init_ossl_digest(void);
|
20
19
|
|
21
20
|
#endif /* _OSSL_DIGEST_H_ */
|
22
|
-
|
@@ -1,22 +1,23 @@
|
|
1
1
|
/*
|
2
|
-
* $Id: ossl_engine.c 48792 2014-12-12 21:57:49Z nobu $
|
3
2
|
* 'OpenSSL for Ruby' project
|
4
3
|
* Copyright (C) 2003 GOTOU Yuuzou <gotoyuzo@notwork.org>
|
5
4
|
* All rights reserved.
|
6
5
|
*/
|
7
6
|
/*
|
8
|
-
* This program is
|
7
|
+
* This program is licensed under the same licence as Ruby.
|
9
8
|
* (See the file 'LICENCE'.)
|
10
9
|
*/
|
11
10
|
#include "ossl.h"
|
12
11
|
|
13
12
|
#if defined(OSSL_ENGINE_ENABLED)
|
14
13
|
|
15
|
-
#define
|
14
|
+
#define NewEngine(klass) \
|
15
|
+
TypedData_Wrap_Struct((klass), &ossl_engine_type, 0)
|
16
|
+
#define SetEngine(obj, engine) do { \
|
16
17
|
if (!(engine)) { \
|
17
18
|
ossl_raise(rb_eRuntimeError, "ENGINE wasn't initialized."); \
|
18
19
|
} \
|
19
|
-
(obj) =
|
20
|
+
RTYPEDDATA_DATA(obj) = (engine); \
|
20
21
|
} while(0)
|
21
22
|
#define GetEngine(obj, engine) do { \
|
22
23
|
TypedData_Get_Struct((obj), ENGINE, &ossl_engine_type, (engine)); \
|
@@ -182,11 +183,12 @@ ossl_engine_s_engines(VALUE klass)
|
|
182
183
|
|
183
184
|
ary = rb_ary_new();
|
184
185
|
for(e = ENGINE_get_first(); e; e = ENGINE_get_next(e)){
|
186
|
+
obj = NewEngine(klass);
|
185
187
|
/* Need a ref count of two here because of ENGINE_free being
|
186
188
|
* called internally by OpenSSL when moving to the next ENGINE
|
187
189
|
* and by us when releasing the ENGINE reference */
|
188
190
|
ENGINE_up_ref(e);
|
189
|
-
|
191
|
+
SetEngine(obj, e);
|
190
192
|
rb_ary_push(ary, obj);
|
191
193
|
}
|
192
194
|
|
@@ -213,9 +215,10 @@ ossl_engine_s_by_id(VALUE klass, VALUE id)
|
|
213
215
|
|
214
216
|
StringValue(id);
|
215
217
|
ossl_engine_s_load(1, &id, klass);
|
218
|
+
obj = NewEngine(klass);
|
216
219
|
if(!(e = ENGINE_by_id(RSTRING_PTR(id))))
|
217
220
|
ossl_raise(eEngineError, NULL);
|
218
|
-
|
221
|
+
SetEngine(obj, e);
|
219
222
|
if(rb_block_given_p()) rb_yield(obj);
|
220
223
|
if(!ENGINE_init(e))
|
221
224
|
ossl_raise(eEngineError, NULL);
|
@@ -232,10 +235,11 @@ ossl_engine_s_alloc(VALUE klass)
|
|
232
235
|
ENGINE *e;
|
233
236
|
VALUE obj;
|
234
237
|
|
238
|
+
obj = NewEngine(klass);
|
235
239
|
if (!(e = ENGINE_new())) {
|
236
240
|
ossl_raise(eEngineError, NULL);
|
237
241
|
}
|
238
|
-
|
242
|
+
SetEngine(obj, e);
|
239
243
|
|
240
244
|
return obj;
|
241
245
|
}
|
@@ -1,12 +1,11 @@
|
|
1
1
|
/*
|
2
|
-
* $Id: ossl_engine.h 25189 2009-10-02 12:04:37Z akr $
|
3
2
|
* 'OpenSSL for Ruby' project
|
4
3
|
* Copyright (C) 2003 Michal Rokos <m.rokos@sh.cvut.cz>
|
5
4
|
* Copyright (C) 2003 GOTOU Yuuzou <gotoyuzo@notwork.org>
|
6
5
|
* All rights reserved.
|
7
6
|
*/
|
8
7
|
/*
|
9
|
-
* This program is
|
8
|
+
* This program is licensed under the same licence as Ruby.
|
10
9
|
* (See the file 'LICENCE'.)
|
11
10
|
*/
|
12
11
|
#if !defined(OSSL_ENGINE_H)
|
@@ -1,11 +1,10 @@
|
|
1
1
|
/*
|
2
|
-
* $Id: ossl_hmac.c 48793 2014-12-12 21:57:56Z nobu $
|
3
2
|
* 'OpenSSL for Ruby' project
|
4
3
|
* Copyright (C) 2001-2002 Michal Rokos <m.rokos@sh.cvut.cz>
|
5
4
|
* All rights reserved.
|
6
5
|
*/
|
7
6
|
/*
|
8
|
-
* This program is
|
7
|
+
* This program is licensed under the same licence as Ruby.
|
9
8
|
* (See the file 'LICENCE'.)
|
10
9
|
*/
|
11
10
|
#if !defined(OPENSSL_NO_HMAC)
|
@@ -1,11 +1,10 @@
|
|
1
1
|
/*
|
2
|
-
* $Id: ossl_hmac.h 25189 2009-10-02 12:04:37Z akr $
|
3
2
|
* 'OpenSSL for Ruby' project
|
4
3
|
* Copyright (C) 2001-2002 Michal Rokos <m.rokos@sh.cvut.cz>
|
5
4
|
* All rights reserved.
|
6
5
|
*/
|
7
6
|
/*
|
8
|
-
* This program is
|
7
|
+
* This program is licensed under the same licence as Ruby.
|
9
8
|
* (See the file 'LICENCE'.)
|
10
9
|
*/
|
11
10
|
#if !defined(_OSSL_HMAC_H_)
|
@@ -1,20 +1,21 @@
|
|
1
1
|
/*
|
2
|
-
* $Id: ossl_ns_spki.c 48794 2014-12-12 21:58:03Z nobu $
|
3
2
|
* 'OpenSSL for Ruby' project
|
4
3
|
* Copyright (C) 2001-2002 Michal Rokos <m.rokos@sh.cvut.cz>
|
5
4
|
* All rights reserved.
|
6
5
|
*/
|
7
6
|
/*
|
8
|
-
* This program is
|
7
|
+
* This program is licensed under the same licence as Ruby.
|
9
8
|
* (See the file 'LICENCE'.)
|
10
9
|
*/
|
11
10
|
#include "ossl.h"
|
12
11
|
|
13
|
-
#define
|
12
|
+
#define NewSPKI(klass) \
|
13
|
+
TypedData_Wrap_Struct((klass), &ossl_netscape_spki_type, 0)
|
14
|
+
#define SetSPKI(obj, spki) do { \
|
14
15
|
if (!(spki)) { \
|
15
16
|
ossl_raise(rb_eRuntimeError, "SPKI wasn't initialized!"); \
|
16
17
|
} \
|
17
|
-
(obj) =
|
18
|
+
RTYPEDDATA_DATA(obj) = (spki); \
|
18
19
|
} while (0)
|
19
20
|
#define GetSPKI(obj, spki) do { \
|
20
21
|
TypedData_Get_Struct((obj), NETSCAPE_SPKI, &ossl_netscape_spki_type, (spki)); \
|
@@ -58,10 +59,11 @@ ossl_spki_alloc(VALUE klass)
|
|
58
59
|
NETSCAPE_SPKI *spki;
|
59
60
|
VALUE obj;
|
60
61
|
|
62
|
+
obj = NewSPKI(klass);
|
61
63
|
if (!(spki = NETSCAPE_SPKI_new())) {
|
62
64
|
ossl_raise(eSPKIError, NULL);
|
63
65
|
}
|
64
|
-
|
66
|
+
SetSPKI(obj, spki);
|
65
67
|
|
66
68
|
return obj;
|
67
69
|
}
|
@@ -401,4 +403,3 @@ Init_ossl_ns_spki(void)
|
|
401
403
|
rb_define_method(cSPKI, "challenge", ossl_spki_get_challenge, 0);
|
402
404
|
rb_define_method(cSPKI, "challenge=", ossl_spki_set_challenge, 1);
|
403
405
|
}
|
404
|
-
|
@@ -1,11 +1,10 @@
|
|
1
1
|
/*
|
2
|
-
* $Id: ossl_ns_spki.h 25189 2009-10-02 12:04:37Z akr $
|
3
2
|
* 'OpenSSL for Ruby' project
|
4
3
|
* Copyright (C) 2001-2002 Michal Rokos <m.rokos@sh.cvut.cz>
|
5
4
|
* All rights reserved.
|
6
5
|
*/
|
7
6
|
/*
|
8
|
-
* This program is
|
7
|
+
* This program is licensed under the same licence as Ruby.
|
9
8
|
* (See the file 'LICENCE'.)
|
10
9
|
*/
|
11
10
|
#if !defined(_OSSL_NS_SPKI_H_)
|
@@ -18,4 +17,3 @@ extern VALUE eSPKIError;
|
|
18
17
|
void Init_ossl_ns_spki(void);
|
19
18
|
|
20
19
|
#endif /* _OSSL_NS_SPKI_H_ */
|
21
|
-
|
@@ -1,21 +1,22 @@
|
|
1
1
|
/*
|
2
|
-
* $Id: ossl_ocsp.c 48798 2014-12-12 21:58:22Z nobu $
|
3
2
|
* 'OpenSSL for Ruby' project
|
4
3
|
* Copyright (C) 2003 Michal Rokos <m.rokos@sh.cvut.cz>
|
5
4
|
* Copyright (C) 2003 GOTOU Yuuzou <gotoyuzo@notwork.org>
|
6
5
|
* All rights reserved.
|
7
6
|
*/
|
8
7
|
/*
|
9
|
-
* This program is
|
8
|
+
* This program is licensed under the same licence as Ruby.
|
10
9
|
* (See the file 'LICENCE'.)
|
11
10
|
*/
|
12
11
|
#include "ossl.h"
|
13
12
|
|
14
13
|
#if defined(OSSL_OCSP_ENABLED)
|
15
14
|
|
16
|
-
#define
|
15
|
+
#define NewOCSPReq(klass) \
|
16
|
+
TypedData_Wrap_Struct((klass), &ossl_ocsp_request_type, 0)
|
17
|
+
#define SetOCSPReq(obj, req) do { \
|
17
18
|
if(!(req)) ossl_raise(rb_eRuntimeError, "Request wasn't initialized!"); \
|
18
|
-
(obj) =
|
19
|
+
RTYPEDDATA_DATA(obj) = (req); \
|
19
20
|
} while (0)
|
20
21
|
#define GetOCSPReq(obj, req) do { \
|
21
22
|
TypedData_Get_Struct((obj), OCSP_REQUEST, &ossl_ocsp_request_type, (req)); \
|
@@ -26,9 +27,11 @@
|
|
26
27
|
GetOCSPReq((obj), (req)); \
|
27
28
|
} while (0)
|
28
29
|
|
29
|
-
#define
|
30
|
+
#define NewOCSPRes(klass) \
|
31
|
+
TypedData_Wrap_Struct((klass), &ossl_ocsp_response_type, 0)
|
32
|
+
#define SetOCSPRes(obj, res) do { \
|
30
33
|
if(!(res)) ossl_raise(rb_eRuntimeError, "Response wasn't initialized!"); \
|
31
|
-
(obj) =
|
34
|
+
RTYPEDDATA_DATA(obj) = (res); \
|
32
35
|
} while (0)
|
33
36
|
#define GetOCSPRes(obj, res) do { \
|
34
37
|
TypedData_Get_Struct((obj), OCSP_RESPONSE, &ossl_ocsp_response_type, (res)); \
|
@@ -39,9 +42,11 @@
|
|
39
42
|
GetOCSPRes((obj), (res)); \
|
40
43
|
} while (0)
|
41
44
|
|
42
|
-
#define
|
45
|
+
#define NewOCSPBasicRes(klass) \
|
46
|
+
TypedData_Wrap_Struct((klass), &ossl_ocsp_basicresp_type, 0)
|
47
|
+
#define SetOCSPBasicRes(obj, res) do { \
|
43
48
|
if(!(res)) ossl_raise(rb_eRuntimeError, "Response wasn't initialized!"); \
|
44
|
-
(obj) =
|
49
|
+
RTYPEDDATA_DATA(obj) = (res); \
|
45
50
|
} while (0)
|
46
51
|
#define GetOCSPBasicRes(obj, res) do { \
|
47
52
|
TypedData_Get_Struct((obj), OCSP_BASICRESP, &ossl_ocsp_basicresp_type, (res)); \
|
@@ -52,9 +57,11 @@
|
|
52
57
|
GetOCSPBasicRes((obj), (res)); \
|
53
58
|
} while (0)
|
54
59
|
|
55
|
-
#define
|
60
|
+
#define NewOCSPCertId(klass) \
|
61
|
+
TypedData_Wrap_Struct((klass), &ossl_ocsp_certid_type, 0)
|
62
|
+
#define SetOCSPCertId(obj, cid) do { \
|
56
63
|
if(!(cid)) ossl_raise(rb_eRuntimeError, "Cert ID wasn't initialized!"); \
|
57
|
-
(obj) =
|
64
|
+
RTYPEDDATA_DATA(obj) = (cid); \
|
58
65
|
} while (0)
|
59
66
|
#define GetOCSPCertId(obj, cid) do { \
|
60
67
|
TypedData_Get_Struct((obj), OCSP_CERTID, &ossl_ocsp_certid_type, (cid)); \
|
@@ -134,8 +141,8 @@ static const rb_data_type_t ossl_ocsp_certid_type = {
|
|
134
141
|
static VALUE
|
135
142
|
ossl_ocspcertid_new(OCSP_CERTID *cid)
|
136
143
|
{
|
137
|
-
VALUE obj;
|
138
|
-
|
144
|
+
VALUE obj = NewOCSPCertId(cOCSPCertId);
|
145
|
+
SetOCSPCertId(obj, cid);
|
139
146
|
return obj;
|
140
147
|
}
|
141
148
|
|
@@ -148,9 +155,10 @@ ossl_ocspreq_alloc(VALUE klass)
|
|
148
155
|
OCSP_REQUEST *req;
|
149
156
|
VALUE obj;
|
150
157
|
|
158
|
+
obj = NewOCSPReq(klass);
|
151
159
|
if (!(req = OCSP_REQUEST_new()))
|
152
160
|
ossl_raise(eOCSPError, NULL);
|
153
|
-
|
161
|
+
SetOCSPReq(obj, req);
|
154
162
|
|
155
163
|
return obj;
|
156
164
|
}
|
@@ -294,9 +302,10 @@ ossl_ocspreq_get_certid(VALUE self)
|
|
294
302
|
ary = (count > 0) ? rb_ary_new() : Qnil;
|
295
303
|
for(i = 0; i < count; i++){
|
296
304
|
one = OCSP_request_onereq_get0(req, i);
|
305
|
+
tmp = NewOCSPCertId(cOCSPCertId);
|
297
306
|
if(!(id = OCSP_CERTID_dup(OCSP_onereq_get0_id(one))))
|
298
307
|
ossl_raise(eOCSPError, NULL);
|
299
|
-
|
308
|
+
SetOCSPCertId(tmp, id);
|
300
309
|
rb_ary_push(ary, tmp);
|
301
310
|
}
|
302
311
|
|
@@ -415,9 +424,10 @@ ossl_ocspres_s_create(VALUE klass, VALUE status, VALUE basic_resp)
|
|
415
424
|
|
416
425
|
if(NIL_P(basic_resp)) bs = NULL;
|
417
426
|
else GetOCSPBasicRes(basic_resp, bs); /* NO NEED TO DUP */
|
427
|
+
obj = NewOCSPRes(klass);
|
418
428
|
if(!(res = OCSP_response_create(st, bs)))
|
419
429
|
ossl_raise(eOCSPError, NULL);
|
420
|
-
|
430
|
+
SetOCSPRes(obj, res);
|
421
431
|
|
422
432
|
return obj;
|
423
433
|
}
|
@@ -428,9 +438,10 @@ ossl_ocspres_alloc(VALUE klass)
|
|
428
438
|
OCSP_RESPONSE *res;
|
429
439
|
VALUE obj;
|
430
440
|
|
441
|
+
obj = NewOCSPRes(klass);
|
431
442
|
if(!(res = OCSP_RESPONSE_new()))
|
432
443
|
ossl_raise(eOCSPError, NULL);
|
433
|
-
|
444
|
+
SetOCSPRes(obj, res);
|
434
445
|
|
435
446
|
return obj;
|
436
447
|
}
|
@@ -519,9 +530,10 @@ ossl_ocspres_get_basic(VALUE self)
|
|
519
530
|
VALUE ret;
|
520
531
|
|
521
532
|
GetOCSPRes(self, res);
|
533
|
+
ret = NewOCSPBasicRes(cOCSPBasicRes);
|
522
534
|
if(!(bs = OCSP_response_get1_basic(res)))
|
523
535
|
return Qnil;
|
524
|
-
|
536
|
+
SetOCSPBasicRes(ret, bs);
|
525
537
|
|
526
538
|
return ret;
|
527
539
|
}
|
@@ -562,9 +574,10 @@ ossl_ocspbres_alloc(VALUE klass)
|
|
562
574
|
OCSP_BASICRESP *bs;
|
563
575
|
VALUE obj;
|
564
576
|
|
577
|
+
obj = NewOCSPBasicRes(klass);
|
565
578
|
if(!(bs = OCSP_BASICRESP_new()))
|
566
579
|
ossl_raise(eOCSPError, NULL);
|
567
|
-
|
580
|
+
SetOCSPBasicRes(obj, bs);
|
568
581
|
|
569
582
|
return obj;
|
570
583
|
}
|
@@ -638,7 +651,7 @@ ossl_ocspbres_add_nonce(int argc, VALUE *argv, VALUE self)
|
|
638
651
|
* call-seq:
|
639
652
|
* basic_response.add_status(certificate_id, status, reason, revocation_time, this_update, next_update, extensions) -> basic_response
|
640
653
|
*
|
641
|
-
* Adds a validation +status+ (0 for
|
654
|
+
* Adds a validation +status+ (0 for good, 1 for revoked, 2 for unknown) to this
|
642
655
|
* response for +certificate_id+. +reason+ describes the reason for the
|
643
656
|
* revocation, if any.
|
644
657
|
*
|
@@ -658,9 +671,9 @@ ossl_ocspbres_add_status(VALUE self, VALUE cid, VALUE status,
|
|
658
671
|
OCSP_BASICRESP *bs;
|
659
672
|
OCSP_SINGLERESP *single;
|
660
673
|
OCSP_CERTID *id;
|
661
|
-
int st, rsn;
|
662
674
|
ASN1_TIME *ths, *nxt, *rev;
|
663
|
-
int
|
675
|
+
int st, rsn, error, rstatus = 0;
|
676
|
+
long i;
|
664
677
|
VALUE tmp;
|
665
678
|
|
666
679
|
st = NUM2INT(status);
|
@@ -669,7 +682,7 @@ ossl_ocspbres_add_status(VALUE self, VALUE cid, VALUE status,
|
|
669
682
|
/* All ary's members should be X509Extension */
|
670
683
|
Check_Type(ext, T_ARRAY);
|
671
684
|
for (i = 0; i < RARRAY_LEN(ext); i++)
|
672
|
-
OSSL_Check_Kind(
|
685
|
+
OSSL_Check_Kind(RARRAY_AREF(ext, i), cX509Ext);
|
673
686
|
}
|
674
687
|
|
675
688
|
error = 0;
|
@@ -698,7 +711,7 @@ ossl_ocspbres_add_status(VALUE self, VALUE cid, VALUE status,
|
|
698
711
|
sk_X509_EXTENSION_pop_free(single->singleExtensions, X509_EXTENSION_free);
|
699
712
|
single->singleExtensions = NULL;
|
700
713
|
for(i = 0; i < RARRAY_LEN(ext); i++){
|
701
|
-
x509ext = DupX509ExtPtr(
|
714
|
+
x509ext = DupX509ExtPtr(RARRAY_AREF(ext, i));
|
702
715
|
if(!OCSP_SINGLERESP_add_ext(single, x509ext, -1)){
|
703
716
|
X509_EXTENSION_free(x509ext);
|
704
717
|
error = 1;
|
@@ -723,7 +736,7 @@ ossl_ocspbres_add_status(VALUE self, VALUE cid, VALUE status,
|
|
723
736
|
* basic_response.status -> statuses
|
724
737
|
*
|
725
738
|
* Returns an Array of statuses for this response. Each status contains a
|
726
|
-
* CertificateId, the status (0 for
|
739
|
+
* CertificateId, the status (0 for good, 1 for revoked, 2 for unknown), the reason for
|
727
740
|
* the status, the revocation time, the time of this update, the time for the
|
728
741
|
* next update and a list of OpenSSL::X509::Extensions.
|
729
742
|
*/
|
@@ -851,9 +864,10 @@ ossl_ocspcid_alloc(VALUE klass)
|
|
851
864
|
OCSP_CERTID *id;
|
852
865
|
VALUE obj;
|
853
866
|
|
867
|
+
obj = NewOCSPCertId(klass);
|
854
868
|
if(!(id = OCSP_CERTID_new()))
|
855
869
|
ossl_raise(eOCSPError, NULL);
|
856
|
-
|
870
|
+
SetOCSPCertId(obj, id);
|
857
871
|
|
858
872
|
return obj;
|
859
873
|
}
|