rubysl-openssl 2.4.0 → 2.5.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
}
|