Skip to content

Commit 78e0b51

Browse files
committed
implement SSL_set_verify_result
Overrides the value that will be returned by `SSL_get_verify_result()`. Is this smart to do? Probably not.
1 parent 5646ead commit 78e0b51

File tree

5 files changed

+24
-1
lines changed

5 files changed

+24
-1
lines changed

MATRIX.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -475,7 +475,7 @@
475475
| `SSL_set_trust` | | | |
476476
| `SSL_set_verify` | | :white_check_mark: | :white_check_mark: |
477477
| `SSL_set_verify_depth` | | :white_check_mark: | :white_check_mark: |
478-
| `SSL_set_verify_result` | | | |
478+
| `SSL_set_verify_result` | | | :white_check_mark: |
479479
| `SSL_set_wfd` [^sock] | | | |
480480
| `SSL_shutdown` | :white_check_mark: | :white_check_mark: | :white_check_mark: |
481481
| `SSL_srp_server_param_with_username` [^deprecatedin_3_0] [^srp] | | | |

build.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -210,6 +210,7 @@ const ENTRYPOINTS: &[&str] = &[
210210
"SSL_set_SSL_CTX",
211211
"SSL_set_verify",
212212
"SSL_set_verify_depth",
213+
"SSL_set_verify_result",
213214
"SSL_shutdown",
214215
"SSL_up_ref",
215216
"SSL_use_certificate",

src/entry.rs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1294,6 +1294,12 @@ entry! {
12941294
}
12951295
}
12961296

1297+
entry! {
1298+
pub fn _SSL_set_verify_result(ssl: *mut SSL, v: c_long) {
1299+
try_clone_arc!(ssl).get().set_last_verification_result(v)
1300+
}
1301+
}
1302+
12971303
entry! {
12981304
pub fn _SSL_get_certificate(ssl: *const SSL) -> *mut X509 {
12991305
try_clone_arc!(ssl).get().get_certificate()

src/lib.rs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1395,6 +1395,14 @@ impl Ssl {
13951395
}
13961396
}
13971397

1398+
fn set_last_verification_result(&self, v: i64) {
1399+
match &self.conn {
1400+
ConnState::Client(_, verifier) => verifier.update_last_result(v),
1401+
ConnState::Server(_, verifier, _) => verifier.update_last_result(v),
1402+
_ => {}
1403+
}
1404+
}
1405+
13981406
fn get_last_verification_sig_scheme(&self) -> Option<SignatureScheme> {
13991407
match &self.conn {
14001408
ConnState::Client(_, verifier) => verifier.last_sig_scheme(),

src/verifier.rs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,10 @@ impl ServerVerifier {
6666
self.last_result.load(Ordering::Acquire)
6767
}
6868

69+
pub fn update_last_result(&self, v: i64) {
70+
self.last_result.store(v, Ordering::Relaxed);
71+
}
72+
6973
pub fn last_sig_scheme(&self) -> Option<SignatureScheme> {
7074
self.last_sig_scheme.read().ok().map(|scheme| *scheme)?
7175
}
@@ -202,6 +206,10 @@ impl ClientVerifier {
202206
self.last_result.load(Ordering::Acquire)
203207
}
204208

209+
pub fn update_last_result(&self, v: i64) {
210+
self.last_result.store(v, Ordering::Relaxed);
211+
}
212+
205213
pub fn last_sig_scheme(&self) -> Option<SignatureScheme> {
206214
self.last_sig_scheme.read().ok().map(|scheme| *scheme)?
207215
}

0 commit comments

Comments
 (0)