OLD | NEW |
| (Empty) |
1 Name: Tomcat Native Fork for Netty | |
2 Short Name: netty-tcnative | |
3 URL: https://github.com/netty/netty-tcnative | |
4 SHA: 856865181ca38c07b7d2be619903ee98f6f77a23 netty-tcnative-1.1.33.zip | |
5 Version: 1.1.33 | |
6 Date: October 13, 2015 | |
7 Revision: 2aa47be27783ec31086ca9881402f845543de4e6 | |
8 License: Apache 2.0 | |
9 License File: NOT_SHIPPED | |
10 Security Critical: no | |
11 The library is not security critical because it is used for tests only. | |
12 Do not link it into production code. | |
13 | |
14 Description: | |
15 netty-tcnative is a fork of Tomcat Native. It includes a set of changes cont
ributed | |
16 by Twitter, Inc, such as: | |
17 | |
18 Simplified distribution and linkage of native library | |
19 Complete mavenization of the project | |
20 Improved OpenSSL support | |
21 | |
22 Local Modifications: | |
23 | |
24 diff -ruN ./original/src/main/c/ssl.c ./src/third_party/netty-tcnative/src/c/ssl
.c | |
25 --- ./original/src/main/c/ssl.c 2015-10-13 08:36:59.000000000 -0400 | |
26 +++ ./src/third_party/netty-tcnative/src/c/ssl.c 2016-01-04 10:18:31.7297
65992 -0500 | |
27 @@ -1821,7 +1821,7 @@ | |
28 verify = SSL_VERIFY_NONE; | |
29 | |
30 UNREFERENCED(o); | |
31 - TCN_ASSERT(ctx != 0); | |
32 + TCN_ASSERT(c->ctx != 0); | |
33 c->verify_mode = level; | |
34 | |
35 if (c->verify_mode == SSL_CVERIFY_UNSET) | |
36 | |
37 diff --git a/c/ssl.c b/c/ssl.c | |
38 index 89e6cad..97c7982 100644 | |
39 --- a/c/ssl.c | |
40 +++ b/c/ssl.c | |
41 @@ -231,26 +231,38 @@ static const jint supported_ssl_opts = 0 | |
42 | |
43 static int ssl_tmp_key_init_rsa(int bits, int idx) | |
44 { | |
45 -#if (OPENSSL_VERSION_NUMBER < 0x10100000L) || defined(OPENSSL_USE_DEPRECATED) | |
46 - if (!(SSL_temp_keys[idx] = | |
47 - RSA_generate_key(bits, RSA_F4, NULL, NULL))) { | |
48 +#if (OPENSSL_VERSION_NUMBER >= 0x10100000L) | |
49 + return 0; | |
50 +#else | |
51 + | |
52 #ifdef OPENSSL_FIPS | |
53 - /** | |
54 - * With FIPS mode short RSA keys cannot be | |
55 - * generated. | |
56 - */ | |
57 - if (bits < 1024) | |
58 - return 0; | |
59 - else | |
60 -#endif | |
61 - return 1; | |
62 - } | |
63 - else { | |
64 + /** | |
65 + * Short RSA keys cannot be generated in FIPS mode. | |
66 + */ | |
67 + if (bits < 1024) | |
68 return 0; | |
69 - } | |
70 -#else | |
71 - return 0; | |
72 #endif | |
73 + | |
74 + BIGNUM *e = BN_new(); | |
75 + RSA *rsa = RSA_new(); | |
76 + int ret = 1; | |
77 + | |
78 + if (e == NULL || | |
79 + rsa == NULL || | |
80 + !BN_set_word(e, RSA_F4) || | |
81 + RSA_generate_key_ex(rsa, bits, e, NULL) != 1) { | |
82 + goto err; | |
83 + } | |
84 + | |
85 + SSL_temp_keys[idx] = rsa; | |
86 + rsa = NULL; | |
87 + ret = 0; | |
88 + | |
89 +err: | |
90 + BN_free(e); | |
91 + RSA_free(rsa); | |
92 + return ret; | |
93 +#endif /* OPENSSL_VERSION_NUMBER >= 0x10100000L */ | |
94 } | |
95 | |
96 static int ssl_tmp_key_init_dh(int bits, int idx) | |
97 @@ -610,45 +622,6 @@ int SSL_rand_seed(const char *file) | |
98 return RAND_status(); | |
99 } | |
100 | |
101 -static int ssl_rand_make(const char *file, int len, int base64) | |
102 -{ | |
103 - int r; | |
104 - int num = len; | |
105 - BIO *out = NULL; | |
106 - | |
107 - out = BIO_new(BIO_s_file()); | |
108 - if (out == NULL) | |
109 - return 0; | |
110 - if ((r = BIO_write_filename(out, (char *)file)) < 0) { | |
111 - BIO_free_all(out); | |
112 - return 0; | |
113 - } | |
114 - if (base64) { | |
115 - BIO *b64 = BIO_new(BIO_f_base64()); | |
116 - if (b64 == NULL) { | |
117 - BIO_free_all(out); | |
118 - return 0; | |
119 - } | |
120 - out = BIO_push(b64, out); | |
121 - } | |
122 - while (num > 0) { | |
123 - unsigned char buf[4096]; | |
124 - int len = num; | |
125 - if (len > sizeof(buf)) | |
126 - len = sizeof(buf); | |
127 - r = RAND_bytes(buf, len); | |
128 - if (r <= 0) { | |
129 - BIO_free_all(out); | |
130 - return 0; | |
131 - } | |
132 - BIO_write(out, buf, len); | |
133 - num -= len; | |
134 - } | |
135 - r = BIO_flush(out); | |
136 - BIO_free_all(out); | |
137 - return r > 0 ? 1 : 0; | |
138 -} | |
139 - | |
140 TCN_IMPLEMENT_CALL(jint, SSL, initialize)(TCN_STDARGS, jstring engine) | |
141 { | |
142 int r = 0; | |
143 @@ -785,17 +758,6 @@ TCN_IMPLEMENT_CALL(jboolean, SSL, randSave)(TCN_STDARGS, js
tring file) | |
144 return r ? JNI_TRUE : JNI_FALSE; | |
145 } | |
146 | |
147 -TCN_IMPLEMENT_CALL(jboolean, SSL, randMake)(TCN_STDARGS, jstring file, | |
148 - jint length, jboolean base64) | |
149 -{ | |
150 - TCN_ALLOC_CSTRING(file); | |
151 - int r; | |
152 - UNREFERENCED(o); | |
153 - r = ssl_rand_make(J2S(file), length, base64); | |
154 - TCN_FREE_CSTRING(file); | |
155 - return r ? JNI_TRUE : JNI_FALSE; | |
156 -} | |
157 - | |
158 TCN_IMPLEMENT_CALL(void, SSL, randSet)(TCN_STDARGS, jstring file) | |
159 { | |
160 TCN_ALLOC_CSTRING(file); | |
161 | |
162 | |
163 | |
OLD | NEW |