RSA error
@@ -62,6 +62,10 @@ | ||
62 | 62 | |
63 | 63 | TS_THREAD(ACT_START) |
64 | 64 | { |
65 | + if ( rsa->private_key == 0 ) { | |
66 | + error_char = "NO PRIVATE KEY"; | |
67 | + return rDO|FIN_ERROR; | |
68 | + } | |
65 | 69 | if ( PEM_write_RSAPrivateKey(fd,rsa->key, |
66 | 70 | 0,0,0,0,0) < 0 ) { |
67 | 71 | error_char = ERR_error_string( |
@@ -63,6 +63,10 @@ | ||
63 | 63 | |
64 | 64 | TS_THREAD(ACT_START) |
65 | 65 | { |
66 | + if ( rsa->public_key == 0 ) { | |
67 | + error_char = "NO PUBLIC KEY"; | |
68 | + return rDO|FIN_ERROR; | |
69 | + } | |
66 | 70 | if ( PEM_write_RSAPublicKey(fd,rsa->key) < 0 ) { |
67 | 71 | error_char = ERR_error_string( |
68 | 72 | ERR_get_error(),0); |
@@ -89,6 +89,7 @@ | ||
89 | 89 | |
90 | 90 | TS_STATE(FIN_START) |
91 | 91 | { |
92 | + rsa->private_key = rsa->public_key = 1; | |
92 | 93 | parent->eventHandler( |
93 | 94 | NEW stdEvent(TSE_RETURN, |
94 | 95 | ifThis, |
@@ -36,7 +36,7 @@ | ||
36 | 36 | |
37 | 37 | tsPipeIO * pipe; |
38 | 38 | |
39 | - char * error_char; | |
39 | + const char * error_char; | |
40 | 40 | stdString * error_stdString; |
41 | 41 | FILE * fd; |
42 | 42 | }; |
@@ -75,5 +75,6 @@ | ||
75 | 75 | ERR_get_error(),0); |
76 | 76 | return rDO|FIN_ERROR; |
77 | 77 | } |
78 | + rsa->private_key = rsa->public_key = 1; | |
78 | 79 | return rDO|ACT_FINISH; |
79 | 80 | } |
@@ -75,5 +75,6 @@ | ||
75 | 75 | ERR_get_error(),0); |
76 | 76 | return rDO|FIN_ERROR; |
77 | 77 | } |
78 | + rsa->public_key = 1; | |
78 | 79 | return rDO|ACT_FINISH; |
79 | 80 | } |
@@ -132,6 +132,16 @@ | ||
132 | 132 | int padding, |
133 | 133 | int * olen) |
134 | 134 | { |
135 | + if ( public_key == 0 ) { | |
136 | + caller->eventHandler( | |
137 | + NEW stdEvent(TSE_RETURN, | |
138 | + caller, | |
139 | + 0, | |
140 | + -1, | |
141 | + 0, | |
142 | + NEW stdString("NO PUBLIC KEY"))); | |
143 | + return; | |
144 | + } | |
135 | 145 | NEW co_tsRSAexecution( |
136 | 146 | caller, |
137 | 147 | this, |
@@ -152,6 +162,16 @@ | ||
152 | 162 | int padding, |
153 | 163 | int * olen) |
154 | 164 | { |
165 | + if ( private_key == 0 ) { | |
166 | + caller->eventHandler( | |
167 | + NEW stdEvent(TSE_RETURN, | |
168 | + caller, | |
169 | + 0, | |
170 | + -1, | |
171 | + 0, | |
172 | + NEW stdString("NO PRIVATE KEY"))); | |
173 | + return; | |
174 | + } | |
155 | 175 | NEW co_tsRSAexecution( |
156 | 176 | caller, |
157 | 177 | this, |
@@ -172,6 +192,16 @@ | ||
172 | 192 | int padding, |
173 | 193 | int * olen) |
174 | 194 | { |
195 | + if ( private_key == 0 ) { | |
196 | + caller->eventHandler( | |
197 | + NEW stdEvent(TSE_RETURN, | |
198 | + caller, | |
199 | + 0, | |
200 | + -1, | |
201 | + 0, | |
202 | + NEW stdString("NO PRIVATE KEY"))); | |
203 | + return; | |
204 | + } | |
175 | 205 | NEW co_tsRSAexecution( |
176 | 206 | caller, |
177 | 207 | this, |
@@ -192,6 +222,16 @@ | ||
192 | 222 | int padding, |
193 | 223 | int * olen) |
194 | 224 | { |
225 | + if ( public_key == 0 ) { | |
226 | + caller->eventHandler( | |
227 | + NEW stdEvent(TSE_RETURN, | |
228 | + caller, | |
229 | + 0, | |
230 | + -1, | |
231 | + 0, | |
232 | + NEW stdString("NO PUBLIC KEY"))); | |
233 | + return; | |
234 | + } | |
195 | 235 | NEW co_tsRSAexecution( |
196 | 236 | caller, |
197 | 237 | this, |
@@ -69,6 +69,8 @@ | ||
69 | 69 | |
70 | 70 | stdMutex * lock; |
71 | 71 | RSA * key; |
72 | + unsigned public_key:1; | |
73 | + unsigned private_key:1; | |
72 | 74 | protected: |
73 | 75 | }; |
74 | 76 |