rev |
line source |
al@20512
|
1 Submitted by: DJ Lucas (dj_AT_linuxfromscratch_DOT_org)
|
al@20512
|
2 Date: 2017-05-27
|
al@20512
|
3 Initial Package Version: 2.10.11
|
al@20512
|
4 Upstream Status: Submitted
|
al@20512
|
5 Origin: https://git.archlinux.org/svntogit/packages.git/plain/trunk/openssl-1.1.0.patch?h=packages/ptlib
|
al@20512
|
6 Description: Fixes build with OpenSSL-1.1.0.
|
al@20512
|
7
|
al@20512
|
8
|
al@20512
|
9 diff -Naurp ptlib-2.10.11-orig/src/ptclib/pssl.cxx ptlib-2.10.11/src/ptclib/pssl.cxx
|
al@20512
|
10 --- ptlib-2.10.11-orig/src/ptclib/pssl.cxx 2017-05-27 14:10:00.609612786 -0500
|
al@20512
|
11 +++ ptlib-2.10.11/src/ptclib/pssl.cxx 2017-05-27 14:11:20.232842073 -0500
|
al@20512
|
12 @@ -140,7 +140,7 @@ PFACTORY_CREATE_SINGLETON(PProcessStartu
|
al@20512
|
13 class PSSL_BIO
|
al@20512
|
14 {
|
al@20512
|
15 public:
|
al@20512
|
16 - PSSL_BIO(BIO_METHOD *method = BIO_s_file_internal())
|
al@20512
|
17 + PSSL_BIO(const BIO_METHOD *method = BIO_s_file())
|
al@20512
|
18 { bio = BIO_new(method); }
|
al@20512
|
19
|
al@20512
|
20 ~PSSL_BIO()
|
al@20512
|
21 @@ -627,9 +627,10 @@ PSSLDiffieHellman::PSSLDiffieHellman(con
|
al@20512
|
22 if (dh == NULL)
|
al@20512
|
23 return;
|
al@20512
|
24
|
al@20512
|
25 - dh->p = BN_bin2bn(pData, pSize, NULL);
|
al@20512
|
26 - dh->g = BN_bin2bn(gData, gSize, NULL);
|
al@20512
|
27 - if (dh->p != NULL && dh->g != NULL)
|
al@20512
|
28 + BIGNUM *p = BN_bin2bn(pData, pSize, NULL);
|
al@20512
|
29 + BIGNUM *g = BN_bin2bn(gData, gSize, NULL);
|
al@20512
|
30 + DH_set0_pqg(dh, p, NULL, g);
|
al@20512
|
31 + if (p != NULL && p != NULL)
|
al@20512
|
32 return;
|
al@20512
|
33
|
al@20512
|
34 DH_free(dh);
|
al@20512
|
35 @@ -805,13 +806,11 @@ void PSSLContext::Construct(Method metho
|
al@20512
|
36 SSL_METHOD * meth;
|
al@20512
|
37
|
al@20512
|
38 switch (method) {
|
al@20512
|
39 - case SSLv3:
|
al@20512
|
40 - meth = SSLv3_method();
|
al@20512
|
41 - break;
|
al@20512
|
42 case TLSv1:
|
al@20512
|
43 meth = TLSv1_method();
|
al@20512
|
44 break;
|
al@20512
|
45 case SSLv23:
|
al@20512
|
46 + case SSLv3:
|
al@20512
|
47 default:
|
al@20512
|
48 meth = SSLv23_method();
|
al@20512
|
49 break;
|
al@20512
|
50 @@ -1117,7 +1116,7 @@ PBoolean PSSLChannel::RawSSLRead(void *
|
al@20512
|
51 //
|
al@20512
|
52
|
al@20512
|
53
|
al@20512
|
54 -#define PSSLCHANNEL(bio) ((PSSLChannel *)(bio->ptr))
|
al@20512
|
55 +#define PSSLCHANNEL(bio) ((PSSLChannel *)BIO_get_data(bio))
|
al@20512
|
56
|
al@20512
|
57 extern "C" {
|
al@20512
|
58
|
al@20512
|
59 @@ -1130,10 +1129,9 @@ typedef long (*lfptr)();
|
al@20512
|
60
|
al@20512
|
61 static int Psock_new(BIO * bio)
|
al@20512
|
62 {
|
al@20512
|
63 - bio->init = 0;
|
al@20512
|
64 - bio->num = 0;
|
al@20512
|
65 - bio->ptr = NULL; // this is really (PSSLChannel *)
|
al@20512
|
66 - bio->flags = 0;
|
al@20512
|
67 + BIO_set_init(bio, 0);
|
al@20512
|
68 + BIO_set_data(bio, NULL);
|
al@20512
|
69 + BIO_clear_flags(bio, ~0);
|
al@20512
|
70
|
al@20512
|
71 return(1);
|
al@20512
|
72 }
|
al@20512
|
73 @@ -1144,13 +1142,13 @@ static int Psock_free(BIO * bio)
|
al@20512
|
74 if (bio == NULL)
|
al@20512
|
75 return 0;
|
al@20512
|
76
|
al@20512
|
77 - if (bio->shutdown) {
|
al@20512
|
78 - if (bio->init) {
|
al@20512
|
79 + if (BIO_get_shutdown(bio)) {
|
al@20512
|
80 + if (BIO_get_init(bio)) {
|
al@20512
|
81 PSSLCHANNEL(bio)->Shutdown(PSocket::ShutdownReadAndWrite);
|
al@20512
|
82 PSSLCHANNEL(bio)->Close();
|
al@20512
|
83 }
|
al@20512
|
84 - bio->init = 0;
|
al@20512
|
85 - bio->flags = 0;
|
al@20512
|
86 + BIO_set_init(bio, 0);
|
al@20512
|
87 + BIO_clear_flags(bio, ~0);
|
al@20512
|
88 }
|
al@20512
|
89 return 1;
|
al@20512
|
90 }
|
al@20512
|
91 @@ -1160,11 +1158,11 @@ static long Psock_ctrl(BIO * bio, int cm
|
al@20512
|
92 {
|
al@20512
|
93 switch (cmd) {
|
al@20512
|
94 case BIO_CTRL_SET_CLOSE:
|
al@20512
|
95 - bio->shutdown = (int)num;
|
al@20512
|
96 + BIO_set_shutdown(bio, (int)num);
|
al@20512
|
97 return 1;
|
al@20512
|
98
|
al@20512
|
99 case BIO_CTRL_GET_CLOSE:
|
al@20512
|
100 - return bio->shutdown;
|
al@20512
|
101 + return BIO_get_shutdown(bio);
|
al@20512
|
102
|
al@20512
|
103 case BIO_CTRL_FLUSH:
|
al@20512
|
104 return 1;
|
al@20512
|
105 @@ -1239,7 +1237,8 @@ static int Psock_puts(BIO * bio, const c
|
al@20512
|
106 };
|
al@20512
|
107
|
al@20512
|
108
|
al@20512
|
109 -static BIO_METHOD methods_Psock =
|
al@20512
|
110 +static BIO_METHOD *methods_Psock = NULL;
|
al@20512
|
111 +/*
|
al@20512
|
112 {
|
al@20512
|
113 BIO_TYPE_SOCKET,
|
al@20512
|
114 "PTLib-PSSLChannel",
|
al@20512
|
115 @@ -1261,19 +1260,33 @@ static BIO_METHOD methods_Psock =
|
al@20512
|
116 Psock_free
|
al@20512
|
117 #endif
|
al@20512
|
118 };
|
al@20512
|
119 -
|
al@20512
|
120 +*/
|
al@20512
|
121
|
al@20512
|
122 PBoolean PSSLChannel::OnOpen()
|
al@20512
|
123 {
|
al@20512
|
124 - BIO * bio = BIO_new(&methods_Psock);
|
al@20512
|
125 + if (methods_Psock == NULL) {
|
al@20512
|
126 + methods_Psock = BIO_meth_new(BIO_TYPE_SOCKET | BIO_get_new_index(), "PTLib-PSSLChannel");
|
al@20512
|
127 + if (methods_Psock == NULL ||
|
al@20512
|
128 + BIO_meth_set_write(methods_Psock, Psock_write) ||
|
al@20512
|
129 + BIO_meth_set_read(methods_Psock, Psock_read) ||
|
al@20512
|
130 + BIO_meth_set_puts(methods_Psock, Psock_puts) ||
|
al@20512
|
131 + BIO_meth_set_gets(methods_Psock, NULL) ||
|
al@20512
|
132 + BIO_meth_set_ctrl(methods_Psock, Psock_ctrl) ||
|
al@20512
|
133 + BIO_meth_set_create(methods_Psock, Psock_new) ||
|
al@20512
|
134 + BIO_meth_set_destroy(methods_Psock, Psock_free)) {
|
al@20512
|
135 + SSLerr(SSL_F_SSL_SET_FD,ERR_R_BUF_LIB);
|
al@20512
|
136 + return PFalse;
|
al@20512
|
137 + }
|
al@20512
|
138 + }
|
al@20512
|
139 + BIO * bio = BIO_new(methods_Psock);
|
al@20512
|
140 if (bio == NULL) {
|
al@20512
|
141 SSLerr(SSL_F_SSL_SET_FD,ERR_R_BUF_LIB);
|
al@20512
|
142 return PFalse;
|
al@20512
|
143 }
|
al@20512
|
144
|
al@20512
|
145 // "Open" then bio
|
al@20512
|
146 - bio->ptr = this;
|
al@20512
|
147 - bio->init = 1;
|
al@20512
|
148 + BIO_set_data(bio, this);
|
al@20512
|
149 + BIO_set_init(bio, 1);
|
al@20512
|
150
|
al@20512
|
151 SSL_set_bio(ssl, bio, bio);
|
al@20512
|
152 return PTrue;
|