src/ssl.c

changeset 5
2d5a8f963181
parent 4
718837c61318
child 6
d559a15eeb40
equal deleted inserted replaced
4:718837c61318 5:2d5a8f963181
407 free(buffer); 407 free(buffer);
408 BIO_free(bp); 408 BIO_free(bp);
409 return 1; 409 return 1;
410 } 410 }
411 } 411 }
412
413 static int meth_getfinished(lua_State *L)
414 {
415 p_ssl ssl = (p_ssl)luaL_checkudata(L, 1, "SSL:Connection");
416 SSL *conn = ssl->ssl;
417 char *buffer = NULL;
418 size_t len = 0;
419 if ((len = SSL_get_finished(conn, NULL, 0)) != 0) {
420 buffer = malloc(len);
421 if (buffer == NULL) return 0;
422 len = SSL_get_finished(conn, buffer, len);
423 lua_pushlstring(L, buffer, len);
424 free(buffer);
425 return 1;
426 } else {
427 return 0;
428 }
429 }
412 /*---------------------------------------------------------------------------*/ 430 /*---------------------------------------------------------------------------*/
413 431
414 432
415 /** 433 /**
416 * SSL metamethods 434 * SSL metamethods
424 {"send", meth_send}, 442 {"send", meth_send},
425 {"settimeout", meth_settimeout}, 443 {"settimeout", meth_settimeout},
426 {"want", meth_want}, 444 {"want", meth_want},
427 {"compression", meth_compression}, 445 {"compression", meth_compression},
428 {"getpeercertificate",meth_getpeercertificate}, 446 {"getpeercertificate",meth_getpeercertificate},
447 {"getfinished", meth_getfinished},
429 {NULL, NULL} 448 {NULL, NULL}
430 }; 449 };
431 450
432 /** 451 /**
433 * SSL functions 452 * SSL functions

mercurial