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,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 */
|