From 7a150fe2efd23c4aeeb7262f614b2d31e4455287 Mon Sep 17 00:00:00 2001 From: Adam Chlipala Date: Sun, 3 Sep 2006 03:36:50 +0000 Subject: [PATCH] Server gets client's CN --- src/openssl.sig | 1 + src/openssl.sml | 15 ++++++++++++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/openssl.sig b/src/openssl.sig index 3179103..ef6403d 100644 --- a/src/openssl.sig +++ b/src/openssl.sig @@ -42,5 +42,6 @@ val shutdown : listener -> unit val accept : listener -> bio option val peerCN : bio -> string +val acceptPeerCN : bio -> string end diff --git a/src/openssl.sml b/src/openssl.sml index 627b405..ea91848 100644 --- a/src/openssl.sml +++ b/src/openssl.sml @@ -169,7 +169,18 @@ fun accept listener = if F_OpenSSL_SML_do_accept.f' listener <= 0 then NONE else - SOME (F_OpenSSL_SML_pop.f' listener) + let + val bio = F_OpenSSL_SML_pop.f' listener + in + if C.Ptr.isNull' bio then + (ssl_err "Null accepted"; + raise OpenSSL "Null accepted") + else if F_OpenSSL_SML_do_handshake.f' bio <= 0 then + (ssl_err "Handshake failed"; + raise OpenSSL "Handshake failed") + else + SOME bio + end fun peerCN bio = let @@ -186,4 +197,6 @@ fun peerCN bio = ZString.toML' subj end +fun acceptPeerCN bio = peerCN (F_OpenSSL_SML_next.f' bio) + end -- 2.20.1