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,12 +1,11 @@
|
|
1
1
|
/*
|
2
|
-
* $Id: ossl_ocsp.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_OCSP_H_)
|
@@ -1,13 +1,15 @@
|
|
1
1
|
/*
|
2
|
-
* This program is
|
2
|
+
* This program is licensed under the same licence as Ruby.
|
3
3
|
* (See the file 'LICENCE'.)
|
4
|
-
* $Id: ossl_pkcs12.c 48802 2014-12-12 22:37:53Z nobu $
|
5
4
|
*/
|
6
5
|
#include "ossl.h"
|
7
6
|
|
8
|
-
#define
|
7
|
+
#define NewPKCS12(klass) \
|
8
|
+
TypedData_Wrap_Struct((klass), &ossl_pkcs12_type, 0)
|
9
|
+
|
10
|
+
#define SetPKCS12(obj, p12) do { \
|
9
11
|
if(!(p12)) ossl_raise(rb_eRuntimeError, "PKCS12 wasn't initialized."); \
|
10
|
-
(obj) =
|
12
|
+
RTYPEDDATA_DATA(obj) = (p12); \
|
11
13
|
} while (0)
|
12
14
|
|
13
15
|
#define GetPKCS12(obj, p12) do { \
|
@@ -56,8 +58,9 @@ ossl_pkcs12_s_allocate(VALUE klass)
|
|
56
58
|
PKCS12 *p12;
|
57
59
|
VALUE obj;
|
58
60
|
|
61
|
+
obj = NewPKCS12(klass);
|
59
62
|
if(!(p12 = PKCS12_new())) ossl_raise(ePKCS12Error, NULL);
|
60
|
-
|
63
|
+
SetPKCS12(obj, p12);
|
61
64
|
|
62
65
|
return obj;
|
63
66
|
}
|
@@ -118,11 +121,12 @@ ossl_pkcs12_s_create(int argc, VALUE *argv, VALUE self)
|
|
118
121
|
if (!NIL_P(keytype))
|
119
122
|
ktype = NUM2INT(keytype);
|
120
123
|
|
124
|
+
obj = NewPKCS12(cPKCS12);
|
121
125
|
p12 = PKCS12_create(passphrase, friendlyname, key, x509, x509s,
|
122
126
|
nkey, ncert, kiter, miter, ktype);
|
123
127
|
sk_X509_pop_free(x509s, X509_free);
|
124
128
|
if(!p12) ossl_raise(ePKCS12Error, NULL);
|
125
|
-
|
129
|
+
SetPKCS12(obj, p12);
|
126
130
|
|
127
131
|
ossl_pkcs12_set_key(obj, pkey);
|
128
132
|
ossl_pkcs12_set_cert(obj, cert);
|
@@ -1,7 +1,6 @@
|
|
1
1
|
/*
|
2
|
-
* This program is
|
2
|
+
* This program is licensed under the same licence as Ruby.
|
3
3
|
* (See the file 'LICENCE'.)
|
4
|
-
* $Id: ossl_pkcs12.h 25189 2009-10-02 12:04:37Z akr $
|
5
4
|
*/
|
6
5
|
#if !defined(_OSSL_PKCS12_H_)
|
7
6
|
#define _OSSL_PKCS12_H_
|
@@ -12,4 +11,3 @@ extern VALUE ePKCS12Error;
|
|
12
11
|
void Init_ossl_pkcs12(void);
|
13
12
|
|
14
13
|
#endif /* _OSSL_PKCS12_H_ */
|
15
|
-
|
@@ -1,20 +1,21 @@
|
|
1
1
|
/*
|
2
|
-
* $Id: ossl_pkcs7.c 48805 2014-12-12 22:38:01Z 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 NewPKCS7(klass) \
|
13
|
+
TypedData_Wrap_Struct((klass), &ossl_pkcs7_type, 0)
|
14
|
+
#define SetPKCS7(obj, pkcs7) do { \
|
14
15
|
if (!(pkcs7)) { \
|
15
16
|
ossl_raise(rb_eRuntimeError, "PKCS7 wasn't initialized."); \
|
16
17
|
} \
|
17
|
-
(obj) =
|
18
|
+
RTYPEDDATA_DATA(obj) = (pkcs7); \
|
18
19
|
} while (0)
|
19
20
|
#define GetPKCS7(obj, pkcs7) do { \
|
20
21
|
TypedData_Get_Struct((obj), PKCS7, &ossl_pkcs7_type, (pkcs7)); \
|
@@ -27,11 +28,13 @@
|
|
27
28
|
GetPKCS7((obj), (pkcs7)); \
|
28
29
|
} while (0)
|
29
30
|
|
30
|
-
#define
|
31
|
+
#define NewPKCS7si(klass) \
|
32
|
+
TypedData_Wrap_Struct((klass), &ossl_pkcs7_signer_info_type, 0)
|
33
|
+
#define SetPKCS7si(obj, p7si) do { \
|
31
34
|
if (!(p7si)) { \
|
32
35
|
ossl_raise(rb_eRuntimeError, "PKCS7si wasn't initialized."); \
|
33
36
|
} \
|
34
|
-
(obj) =
|
37
|
+
RTYPEDDATA_DATA(obj) = (p7si); \
|
35
38
|
} while (0)
|
36
39
|
#define GetPKCS7si(obj, p7si) do { \
|
37
40
|
TypedData_Get_Struct((obj), PKCS7_SIGNER_INFO, &ossl_pkcs7_signer_info_type, (p7si)); \
|
@@ -44,11 +47,13 @@
|
|
44
47
|
GetPKCS7si((obj), (p7si)); \
|
45
48
|
} while (0)
|
46
49
|
|
47
|
-
#define
|
50
|
+
#define NewPKCS7ri(klass) \
|
51
|
+
TypedData_Wrap_Struct((klass), &ossl_pkcs7_recip_info_type, 0)
|
52
|
+
#define SetPKCS7ri(obj, p7ri) do { \
|
48
53
|
if (!(p7ri)) { \
|
49
54
|
ossl_raise(rb_eRuntimeError, "PKCS7ri wasn't initialized."); \
|
50
55
|
} \
|
51
|
-
(obj) =
|
56
|
+
RTYPEDDATA_DATA(obj) = (p7ri); \
|
52
57
|
} while (0)
|
53
58
|
#define GetPKCS7ri(obj, p7ri) do { \
|
54
59
|
TypedData_Get_Struct((obj), PKCS7_RECIP_INFO, &ossl_pkcs7_recip_info_type, (p7ri)); \
|
@@ -128,9 +133,10 @@ ossl_pkcs7si_new(PKCS7_SIGNER_INFO *p7si)
|
|
128
133
|
PKCS7_SIGNER_INFO *pkcs7;
|
129
134
|
VALUE obj;
|
130
135
|
|
136
|
+
obj = NewPKCS7si(cPKCS7Signer);
|
131
137
|
pkcs7 = p7si ? PKCS7_SIGNER_INFO_dup(p7si) : PKCS7_SIGNER_INFO_new();
|
132
138
|
if (!pkcs7) ossl_raise(ePKCS7Error, NULL);
|
133
|
-
|
139
|
+
SetPKCS7si(obj, pkcs7);
|
134
140
|
|
135
141
|
return obj;
|
136
142
|
}
|
@@ -154,9 +160,10 @@ ossl_pkcs7ri_new(PKCS7_RECIP_INFO *p7ri)
|
|
154
160
|
PKCS7_RECIP_INFO *pkcs7;
|
155
161
|
VALUE obj;
|
156
162
|
|
163
|
+
obj = NewPKCS7ri(cPKCS7Recipient);
|
157
164
|
pkcs7 = p7ri ? PKCS7_RECIP_INFO_dup(p7ri) : PKCS7_RECIP_INFO_new();
|
158
165
|
if (!pkcs7) ossl_raise(ePKCS7Error, NULL);
|
159
|
-
|
166
|
+
SetPKCS7ri(obj, pkcs7);
|
160
167
|
|
161
168
|
return obj;
|
162
169
|
}
|
@@ -185,13 +192,14 @@ ossl_pkcs7_s_read_smime(VALUE klass, VALUE arg)
|
|
185
192
|
PKCS7 *pkcs7;
|
186
193
|
VALUE ret, data;
|
187
194
|
|
195
|
+
ret = NewPKCS7(cPKCS7);
|
188
196
|
in = ossl_obj2bio(arg);
|
189
197
|
out = NULL;
|
190
198
|
pkcs7 = SMIME_read_PKCS7(in, &out);
|
191
199
|
BIO_free(in);
|
192
200
|
if(!pkcs7) ossl_raise(ePKCS7Error, NULL);
|
193
201
|
data = out ? ossl_membio2str(out) : Qnil;
|
194
|
-
|
202
|
+
SetPKCS7(ret, pkcs7);
|
195
203
|
ossl_pkcs7_set_data(ret, data);
|
196
204
|
ossl_pkcs7_set_err_string(ret, Qnil);
|
197
205
|
|
@@ -253,6 +261,7 @@ ossl_pkcs7_s_sign(int argc, VALUE *argv, VALUE klass)
|
|
253
261
|
x509 = GetX509CertPtr(cert); /* NO NEED TO DUP */
|
254
262
|
pkey = GetPrivPKeyPtr(key); /* NO NEED TO DUP */
|
255
263
|
flg = NIL_P(flags) ? 0 : NUM2INT(flags);
|
264
|
+
ret = NewPKCS7(cPKCS7);
|
256
265
|
in = ossl_obj2bio(data);
|
257
266
|
if(NIL_P(certs)) x509s = NULL;
|
258
267
|
else{
|
@@ -267,7 +276,7 @@ ossl_pkcs7_s_sign(int argc, VALUE *argv, VALUE klass)
|
|
267
276
|
sk_X509_pop_free(x509s, X509_free);
|
268
277
|
ossl_raise(ePKCS7Error, NULL);
|
269
278
|
}
|
270
|
-
|
279
|
+
SetPKCS7(ret, pkcs7);
|
271
280
|
ossl_pkcs7_set_data(ret, data);
|
272
281
|
ossl_pkcs7_set_err_string(ret, Qnil);
|
273
282
|
BIO_free(in);
|
@@ -308,6 +317,7 @@ ossl_pkcs7_s_encrypt(int argc, VALUE *argv, VALUE klass)
|
|
308
317
|
}
|
309
318
|
else ciph = GetCipherPtr(cipher); /* NO NEED TO DUP */
|
310
319
|
flg = NIL_P(flags) ? 0 : NUM2INT(flags);
|
320
|
+
ret = NewPKCS7(cPKCS7);
|
311
321
|
in = ossl_obj2bio(data);
|
312
322
|
x509s = ossl_protect_x509_ary2sk(certs, &status);
|
313
323
|
if(status){
|
@@ -320,7 +330,7 @@ ossl_pkcs7_s_encrypt(int argc, VALUE *argv, VALUE klass)
|
|
320
330
|
ossl_raise(ePKCS7Error, NULL);
|
321
331
|
}
|
322
332
|
BIO_free(in);
|
323
|
-
|
333
|
+
SetPKCS7(ret, p7);
|
324
334
|
ossl_pkcs7_set_data(ret, data);
|
325
335
|
sk_X509_pop_free(x509s, X509_free);
|
326
336
|
|
@@ -333,10 +343,11 @@ ossl_pkcs7_alloc(VALUE klass)
|
|
333
343
|
PKCS7 *pkcs7;
|
334
344
|
VALUE obj;
|
335
345
|
|
346
|
+
obj = NewPKCS7(klass);
|
336
347
|
if (!(pkcs7 = PKCS7_new())) {
|
337
348
|
ossl_raise(ePKCS7Error, NULL);
|
338
349
|
}
|
339
|
-
|
350
|
+
SetPKCS7(obj, pkcs7);
|
340
351
|
|
341
352
|
return obj;
|
342
353
|
}
|
@@ -886,10 +897,11 @@ ossl_pkcs7si_alloc(VALUE klass)
|
|
886
897
|
PKCS7_SIGNER_INFO *p7si;
|
887
898
|
VALUE obj;
|
888
899
|
|
900
|
+
obj = NewPKCS7si(klass);
|
889
901
|
if (!(p7si = PKCS7_SIGNER_INFO_new())) {
|
890
902
|
ossl_raise(ePKCS7Error, NULL);
|
891
903
|
}
|
892
|
-
|
904
|
+
SetPKCS7si(obj, p7si);
|
893
905
|
|
894
906
|
return obj;
|
895
907
|
}
|
@@ -965,10 +977,11 @@ ossl_pkcs7ri_alloc(VALUE klass)
|
|
965
977
|
PKCS7_RECIP_INFO *p7ri;
|
966
978
|
VALUE obj;
|
967
979
|
|
980
|
+
obj = NewPKCS7ri(klass);
|
968
981
|
if (!(p7ri = PKCS7_RECIP_INFO_new())) {
|
969
982
|
ossl_raise(ePKCS7Error, NULL);
|
970
983
|
}
|
971
|
-
|
984
|
+
SetPKCS7ri(obj, p7ri);
|
972
985
|
|
973
986
|
return obj;
|
974
987
|
}
|
@@ -1,11 +1,10 @@
|
|
1
1
|
/*
|
2
|
-
* $Id: ossl_pkcs7.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_PKCS7_H_)
|
@@ -19,4 +18,3 @@ extern VALUE ePKCS7Error;
|
|
19
18
|
void Init_ossl_pkcs7(void);
|
20
19
|
|
21
20
|
#endif /* _OSSL_PKCS7_H_ */
|
22
|
-
|
@@ -1,11 +1,10 @@
|
|
1
1
|
/*
|
2
|
-
* $Id: ossl_pkey.c 48806 2014-12-12 23:19:07Z 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"
|
@@ -199,7 +198,7 @@ GetPrivPKeyPtr(VALUE obj)
|
|
199
198
|
{
|
200
199
|
EVP_PKEY *pkey;
|
201
200
|
|
202
|
-
if (
|
201
|
+
if (rb_funcallv(obj, id_private_q, 0, NULL) != Qtrue) {
|
203
202
|
ossl_raise(rb_eArgError, "Private key is needed.");
|
204
203
|
}
|
205
204
|
SafeGetPKey(obj, pkey);
|
@@ -223,7 +222,7 @@ DupPrivPKeyPtr(VALUE obj)
|
|
223
222
|
{
|
224
223
|
EVP_PKEY *pkey;
|
225
224
|
|
226
|
-
if (
|
225
|
+
if (rb_funcallv(obj, id_private_q, 0, NULL) != Qtrue) {
|
227
226
|
ossl_raise(rb_eArgError, "Private key is needed.");
|
228
227
|
}
|
229
228
|
SafeGetPKey(obj, pkey);
|
@@ -241,10 +240,11 @@ ossl_pkey_alloc(VALUE klass)
|
|
241
240
|
EVP_PKEY *pkey;
|
242
241
|
VALUE obj;
|
243
242
|
|
243
|
+
obj = NewPKey(klass);
|
244
244
|
if (!(pkey = EVP_PKEY_new())) {
|
245
245
|
ossl_raise(ePKeyError, NULL);
|
246
246
|
}
|
247
|
-
|
247
|
+
SetPKey(obj, pkey);
|
248
248
|
|
249
249
|
return obj;
|
250
250
|
}
|
@@ -289,8 +289,9 @@ ossl_pkey_sign(VALUE self, VALUE digest, VALUE data)
|
|
289
289
|
EVP_MD_CTX ctx;
|
290
290
|
unsigned int buf_len;
|
291
291
|
VALUE str;
|
292
|
+
int result;
|
292
293
|
|
293
|
-
if (
|
294
|
+
if (rb_funcallv(self, id_private_q, 0, NULL) != Qtrue) {
|
294
295
|
ossl_raise(rb_eArgError, "Private key is needed.");
|
295
296
|
}
|
296
297
|
GetPKey(self, pkey);
|
@@ -298,7 +299,9 @@ ossl_pkey_sign(VALUE self, VALUE digest, VALUE data)
|
|
298
299
|
StringValue(data);
|
299
300
|
EVP_SignUpdate(&ctx, RSTRING_PTR(data), RSTRING_LEN(data));
|
300
301
|
str = rb_str_new(0, EVP_PKEY_size(pkey)+16);
|
301
|
-
|
302
|
+
result = EVP_SignFinal(&ctx, (unsigned char *)RSTRING_PTR(str), &buf_len, pkey);
|
303
|
+
EVP_MD_CTX_cleanup(&ctx);
|
304
|
+
if (!result)
|
302
305
|
ossl_raise(ePKeyError, NULL);
|
303
306
|
assert((long)buf_len <= RSTRING_LEN(str));
|
304
307
|
rb_str_set_len(str, buf_len);
|
@@ -450,4 +453,3 @@ Init_ossl_pkey(void)
|
|
450
453
|
Init_ossl_dh();
|
451
454
|
Init_ossl_ec();
|
452
455
|
}
|
453
|
-
|
@@ -1,11 +1,10 @@
|
|
1
1
|
/*
|
2
|
-
* $Id: ossl_pkey.h 48806 2014-12-12 23:19:07Z nobu $
|
3
2
|
* 'OpenSSL for Ruby' project
|
4
3
|
* Copyright (C) 2001 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_PKEY_H_)
|
@@ -21,11 +20,13 @@ extern const rb_data_type_t ossl_evp_pkey_type;
|
|
21
20
|
#define OSSL_PKEY_SET_PUBLIC(obj) rb_iv_set((obj), "private", Qfalse)
|
22
21
|
#define OSSL_PKEY_IS_PRIVATE(obj) (rb_iv_get((obj), "private") == Qtrue)
|
23
22
|
|
24
|
-
#define
|
23
|
+
#define NewPKey(klass) \
|
24
|
+
TypedData_Wrap_Struct((klass), &ossl_evp_pkey_type, 0)
|
25
|
+
#define SetPKey(obj, pkey) do { \
|
25
26
|
if (!(pkey)) { \
|
26
27
|
rb_raise(rb_eRuntimeError, "PKEY wasn't initialized!"); \
|
27
28
|
} \
|
28
|
-
(obj) =
|
29
|
+
RTYPEDDATA_DATA(obj) = (pkey); \
|
29
30
|
OSSL_PKEY_SET_PUBLIC(obj); \
|
30
31
|
} while (0)
|
31
32
|
#define GetPKey(obj, pkey) do {\
|
@@ -82,8 +83,6 @@ void Init_ossl_dsa(void);
|
|
82
83
|
*/
|
83
84
|
extern VALUE cDH;
|
84
85
|
extern VALUE eDHError;
|
85
|
-
extern DH *OSSL_DEFAULT_DH_512;
|
86
|
-
extern DH *OSSL_DEFAULT_DH_1024;
|
87
86
|
|
88
87
|
VALUE ossl_dh_new(EVP_PKEY *);
|
89
88
|
void Init_ossl_dh(void);
|
@@ -1,11 +1,10 @@
|
|
1
1
|
/*
|
2
|
-
* $Id: ossl_pkey_dh.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
|
#if !defined(OPENSSL_NO_DH)
|
@@ -46,6 +45,7 @@ dh_instance(VALUE klass, DH *dh)
|
|
46
45
|
if (!dh) {
|
47
46
|
return Qfalse;
|
48
47
|
}
|
48
|
+
obj = NewPKey(klass);
|
49
49
|
if (!(pkey = EVP_PKEY_new())) {
|
50
50
|
return Qfalse;
|
51
51
|
}
|
@@ -53,7 +53,7 @@ dh_instance(VALUE klass, DH *dh)
|
|
53
53
|
EVP_PKEY_free(pkey);
|
54
54
|
return Qfalse;
|
55
55
|
}
|
56
|
-
|
56
|
+
SetPKey(obj, pkey);
|
57
57
|
|
58
58
|
return obj;
|
59
59
|
}
|
@@ -66,10 +66,11 @@ ossl_dh_new(EVP_PKEY *pkey)
|
|
66
66
|
if (!pkey) {
|
67
67
|
obj = dh_instance(cDH, DH_new());
|
68
68
|
} else {
|
69
|
+
obj = NewPKey(cDH);
|
69
70
|
if (EVP_PKEY_type(pkey->type) != EVP_PKEY_DH) {
|
70
71
|
ossl_raise(rb_eTypeError, "Not a DH key!");
|
71
72
|
}
|
72
|
-
|
73
|
+
SetPKey(obj, pkey);
|
73
74
|
}
|
74
75
|
if (obj == Qfalse) {
|
75
76
|
ossl_raise(eDHError, NULL);
|
@@ -521,69 +522,6 @@ OSSL_PKEY_BN(dh, g)
|
|
521
522
|
OSSL_PKEY_BN(dh, pub_key)
|
522
523
|
OSSL_PKEY_BN(dh, priv_key)
|
523
524
|
|
524
|
-
/*
|
525
|
-
* -----BEGIN DH PARAMETERS-----
|
526
|
-
* MEYCQQD0zXHljRg/mJ9PYLACLv58Cd8VxBxxY7oEuCeURMiTqEhMym16rhhKgZG2
|
527
|
-
* zk2O9uUIBIxSj+NKMURHGaFKyIvLAgEC
|
528
|
-
* -----END DH PARAMETERS-----
|
529
|
-
*/
|
530
|
-
static unsigned char DEFAULT_DH_512_PRIM[] = {
|
531
|
-
0xf4, 0xcd, 0x71, 0xe5, 0x8d, 0x18, 0x3f, 0x98,
|
532
|
-
0x9f, 0x4f, 0x60, 0xb0, 0x02, 0x2e, 0xfe, 0x7c,
|
533
|
-
0x09, 0xdf, 0x15, 0xc4, 0x1c, 0x71, 0x63, 0xba,
|
534
|
-
0x04, 0xb8, 0x27, 0x94, 0x44, 0xc8, 0x93, 0xa8,
|
535
|
-
0x48, 0x4c, 0xca, 0x6d, 0x7a, 0xae, 0x18, 0x4a,
|
536
|
-
0x81, 0x91, 0xb6, 0xce, 0x4d, 0x8e, 0xf6, 0xe5,
|
537
|
-
0x08, 0x04, 0x8c, 0x52, 0x8f, 0xe3, 0x4a, 0x31,
|
538
|
-
0x44, 0x47, 0x19, 0xa1, 0x4a, 0xc8, 0x8b, 0xcb,
|
539
|
-
};
|
540
|
-
static unsigned char DEFAULT_DH_512_GEN[] = { 0x02 };
|
541
|
-
DH *OSSL_DEFAULT_DH_512 = NULL;
|
542
|
-
|
543
|
-
/*
|
544
|
-
* -----BEGIN DH PARAMETERS-----
|
545
|
-
* MIGHAoGBAJ0lOVy0VIr/JebWn0zDwY2h+rqITFOpdNr6ugsgvkDXuucdcChhYExJ
|
546
|
-
* AV/ZD2AWPbrTqV76mGRgJg4EddgT1zG0jq3rnFdMj2XzkBYx3BVvfR0Arnby0RHR
|
547
|
-
* T4h7KZ/2zmjvV+eF8kBUHBJAojUlzxKj4QeO2x20FP9X5xmNUXeDAgEC
|
548
|
-
* -----END DH PARAMETERS-----
|
549
|
-
*/
|
550
|
-
static unsigned char DEFAULT_DH_1024_PRIM[] = {
|
551
|
-
0x9d, 0x25, 0x39, 0x5c, 0xb4, 0x54, 0x8a, 0xff,
|
552
|
-
0x25, 0xe6, 0xd6, 0x9f, 0x4c, 0xc3, 0xc1, 0x8d,
|
553
|
-
0xa1, 0xfa, 0xba, 0x88, 0x4c, 0x53, 0xa9, 0x74,
|
554
|
-
0xda, 0xfa, 0xba, 0x0b, 0x20, 0xbe, 0x40, 0xd7,
|
555
|
-
0xba, 0xe7, 0x1d, 0x70, 0x28, 0x61, 0x60, 0x4c,
|
556
|
-
0x49, 0x01, 0x5f, 0xd9, 0x0f, 0x60, 0x16, 0x3d,
|
557
|
-
0xba, 0xd3, 0xa9, 0x5e, 0xfa, 0x98, 0x64, 0x60,
|
558
|
-
0x26, 0x0e, 0x04, 0x75, 0xd8, 0x13, 0xd7, 0x31,
|
559
|
-
0xb4, 0x8e, 0xad, 0xeb, 0x9c, 0x57, 0x4c, 0x8f,
|
560
|
-
0x65, 0xf3, 0x90, 0x16, 0x31, 0xdc, 0x15, 0x6f,
|
561
|
-
0x7d, 0x1d, 0x00, 0xae, 0x76, 0xf2, 0xd1, 0x11,
|
562
|
-
0xd1, 0x4f, 0x88, 0x7b, 0x29, 0x9f, 0xf6, 0xce,
|
563
|
-
0x68, 0xef, 0x57, 0xe7, 0x85, 0xf2, 0x40, 0x54,
|
564
|
-
0x1c, 0x12, 0x40, 0xa2, 0x35, 0x25, 0xcf, 0x12,
|
565
|
-
0xa3, 0xe1, 0x07, 0x8e, 0xdb, 0x1d, 0xb4, 0x14,
|
566
|
-
0xff, 0x57, 0xe7, 0x19, 0x8d, 0x51, 0x77, 0x83
|
567
|
-
};
|
568
|
-
static unsigned char DEFAULT_DH_1024_GEN[] = { 0x02 };
|
569
|
-
DH *OSSL_DEFAULT_DH_1024 = NULL;
|
570
|
-
|
571
|
-
static DH*
|
572
|
-
ossl_create_dh(unsigned char *p, size_t plen, unsigned char *g, size_t glen)
|
573
|
-
{
|
574
|
-
DH *dh;
|
575
|
-
|
576
|
-
if ((dh = DH_new()) == NULL) ossl_raise(eDHError, NULL);
|
577
|
-
dh->p = BN_bin2bn(p, rb_long2int(plen), NULL);
|
578
|
-
dh->g = BN_bin2bn(g, rb_long2int(glen), NULL);
|
579
|
-
if (dh->p == NULL || dh->g == NULL){
|
580
|
-
DH_free(dh);
|
581
|
-
ossl_raise(eDHError, NULL);
|
582
|
-
}
|
583
|
-
|
584
|
-
return dh;
|
585
|
-
}
|
586
|
-
|
587
525
|
/*
|
588
526
|
* INIT
|
589
527
|
*/
|
@@ -649,13 +587,6 @@ Init_ossl_dh(void)
|
|
649
587
|
DEF_OSSL_PKEY_BN(cDH, dh, pub_key);
|
650
588
|
DEF_OSSL_PKEY_BN(cDH, dh, priv_key);
|
651
589
|
rb_define_method(cDH, "params", ossl_dh_get_params, 0);
|
652
|
-
|
653
|
-
OSSL_DEFAULT_DH_512 = ossl_create_dh(
|
654
|
-
DEFAULT_DH_512_PRIM, sizeof(DEFAULT_DH_512_PRIM),
|
655
|
-
DEFAULT_DH_512_GEN, sizeof(DEFAULT_DH_512_GEN));
|
656
|
-
OSSL_DEFAULT_DH_1024 = ossl_create_dh(
|
657
|
-
DEFAULT_DH_1024_PRIM, sizeof(DEFAULT_DH_1024_PRIM),
|
658
|
-
DEFAULT_DH_1024_GEN, sizeof(DEFAULT_DH_1024_GEN));
|
659
590
|
}
|
660
591
|
|
661
592
|
#else /* defined NO_DH */
|