374 return 1; |
374 return 1; |
375 } |
375 } |
376 } |
376 } |
377 |
377 |
378 /** |
378 /** |
|
379 * Return the validation state of the peer chain |
|
380 */ |
|
381 static int meth_getpeerchainvalid(lua_State *L) |
|
382 { |
|
383 p_ssl ssl = (p_ssl)luaL_checkudata(L, 1, "SSL:Connection"); |
|
384 long result = SSL_get_verify_result(ssl->ssl); |
|
385 |
|
386 if (result == X509_V_OK) { |
|
387 lua_pushboolean(L, 1); |
|
388 return 1; |
|
389 } |
|
390 |
|
391 lua_pushboolean(L, 0); |
|
392 lua_pushstring(L, X509_verify_cert_error_string(result)); |
|
393 return 2; |
|
394 } |
|
395 |
|
396 /** |
379 * Return the peer certificate. |
397 * Return the peer certificate. |
380 */ |
398 */ |
381 static int meth_getpeercertificate(lua_State *L) |
399 static int meth_getpeercertificate(lua_State *L) |
382 { |
400 { |
383 X509 *peer; |
401 X509 *peer; |
446 {"send", meth_send}, |
464 {"send", meth_send}, |
447 {"settimeout", meth_settimeout}, |
465 {"settimeout", meth_settimeout}, |
448 {"want", meth_want}, |
466 {"want", meth_want}, |
449 {"compression", meth_compression}, |
467 {"compression", meth_compression}, |
450 {"getpeercertificate",meth_getpeercertificate}, |
468 {"getpeercertificate",meth_getpeercertificate}, |
|
469 {"getpeerchainvalid", meth_getpeerchainvalid}, |
451 {"getfinished", meth_getfinished}, |
470 {"getfinished", meth_getfinished}, |
452 {"getpeerfinished", meth_getpeerfinished}, |
471 {"getpeerfinished", meth_getpeerfinished}, |
453 {NULL, NULL} |
472 {NULL, NULL} |
454 }; |
473 }; |
455 |
474 |