Add :getpeerfinished() connection method to get peer's TLS Finished message

Fri, 08 Oct 2010 21:12:48 +0100

author
Tobias Markmann <tm@ayena.de>
date
Fri, 08 Oct 2010 21:12:48 +0100
changeset 6
d559a15eeb40
parent 5
2d5a8f963181
child 7
da3cf40976f6

Add :getpeerfinished() connection method to get peer's TLS Finished message

src/ssl.c file | annotate | diff | comparison | revisions
--- a/src/ssl.c	Fri Oct 08 21:12:22 2010 +0100
+++ b/src/ssl.c	Fri Oct 08 21:12:48 2010 +0100
@@ -427,6 +427,25 @@
     return 0;
   }
 }
+
+static int meth_getpeerfinished(lua_State *L)
+{
+  p_ssl ssl = (p_ssl)luaL_checkudata(L, 1, "SSL:Connection");
+  SSL *conn = ssl->ssl;
+  char *buffer = NULL;
+  size_t len = 0;
+  if ((len = SSL_get_peer_finished(conn, NULL, 0)) != 0) {
+    buffer = malloc(len);
+    if (buffer == NULL) return 0;
+    len = SSL_get_peer_finished(conn, buffer, len);
+    lua_pushlstring(L, buffer, len);
+    free(buffer);
+    return 1;
+  } else {
+    return 0;
+  }
+}
+
 /*---------------------------------------------------------------------------*/
 
 
@@ -445,6 +464,7 @@
   {"compression",       meth_compression},
   {"getpeercertificate",meth_getpeercertificate},
   {"getfinished",       meth_getfinished},
+  {"getpeerfinished",   meth_getpeerfinished},
   {NULL,                NULL}
 };
 

mercurial