# HG changeset patch # User Tobias Markmann # Date 1286568768 -3600 # Node ID d559a15eeb40d2e2f30ba13b6865f4eb9fe31f31 # Parent 2d5a8f9631816de74feee85b83a6bf04db7c2091 Add :getpeerfinished() connection method to get peer's TLS Finished message diff -r 2d5a8f963181 -r d559a15eeb40 src/ssl.c --- 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} };