# HG changeset patch # User Tobias Markmann # Date 1286568742 -3600 # Node ID 2d5a8f9631816de74feee85b83a6bf04db7c2091 # Parent 718837c61318bdde0279c8b54e68555d4e87bc6e Add :getfinished() method to get local TLS Finished message diff -r 718837c61318 -r 2d5a8f963181 src/ssl.c --- 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} };