Add :getfinished() method to get local TLS Finished message

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

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

Add :getfinished() method to get local TLS Finished message

src/ssl.c file | annotate | diff | comparison | revisions
--- a/src/ssl.c	Fri Oct 08 21:11:25 2010 +0100
+++ b/src/ssl.c	Fri Oct 08 21:12:22 2010 +0100
@@ -409,6 +409,24 @@
     return 1;
   }
 }
+
+static int meth_getfinished(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_finished(conn, NULL, 0)) != 0) {
+    buffer = malloc(len);
+    if (buffer == NULL) return 0;
+    len = SSL_get_finished(conn, buffer, len);
+    lua_pushlstring(L, buffer, len);
+    free(buffer);
+    return 1;
+  } else {
+    return 0;
+  }
+}
 /*---------------------------------------------------------------------------*/
 
 
@@ -426,6 +444,7 @@
   {"want",              meth_want},
   {"compression",       meth_compression},
   {"getpeercertificate",meth_getpeercertificate},
+  {"getfinished",       meth_getfinished},
   {NULL,                NULL}
 };
 

mercurial