@@ -41,6 +41,8 @@ local ngx_lua_ffi_free_cert
4141local ngx_lua_ffi_free_priv_key
4242local ngx_lua_ffi_ssl_verify_client
4343local ngx_lua_ffi_ssl_client_random
44+ local ngx_lua_ffi_ssl_server_random
45+ local ngx_lua_ffi_ssl_session_master_key
4446local ngx_lua_ffi_ssl_export_keying_material
4547local ngx_lua_ffi_ssl_export_keying_material_early
4648local ngx_lua_ffi_get_req_ssl_pointer
@@ -117,6 +119,12 @@ if subsystem == 'http' then
117119 int ngx_http_lua_ffi_ssl_client_random (ngx_http_request_t * r ,
118120 const unsigned char * out , size_t * outlen , char ** err );
119121
122+ int ngx_http_lua_ffi_ssl_server_random (ngx_http_request_t * r ,
123+ const unsigned char * out , size_t * outlen , char ** err );
124+
125+ int ngx_http_lua_ffi_ssl_session_master_key (ngx_http_request_t * r ,
126+ const unsigned char * out , size_t * outlen , char ** err );
127+
120128 int ngx_http_lua_ffi_ssl_export_keying_material (void * r ,
121129 unsigned char * out , size_t out_size ,
122130 const char * label , size_t llen ,
@@ -154,6 +162,8 @@ if subsystem == 'http' then
154162 ngx_lua_ffi_free_priv_key = C .ngx_http_lua_ffi_free_priv_key
155163 ngx_lua_ffi_ssl_verify_client = C .ngx_http_lua_ffi_ssl_verify_client
156164 ngx_lua_ffi_ssl_client_random = C .ngx_http_lua_ffi_ssl_client_random
165+ ngx_lua_ffi_ssl_server_random = C .ngx_http_lua_ffi_ssl_server_random
166+ ngx_lua_ffi_ssl_session_master_key = C .ngx_http_lua_ffi_ssl_session_master_key
157167 ngx_lua_ffi_ssl_export_keying_material =
158168 C .ngx_http_lua_ffi_ssl_export_keying_material
159169 ngx_lua_ffi_ssl_export_keying_material_early =
@@ -716,4 +726,58 @@ function _M.get_client_random(outlen)
716726end
717727
718728
729+ function _M .get_server_random (outlen )
730+ local r = get_request ()
731+ if not r then
732+ error (" no request found" )
733+ end
734+
735+ if outlen == nil then
736+ outlen = 32
737+ end
738+
739+ local out = get_string_buf (outlen )
740+ local sizep = get_size_ptr ()
741+ sizep [0 ] = outlen
742+
743+ local rc = ngx_lua_ffi_ssl_server_random (r , out , sizep , errmsg )
744+ if rc == FFI_OK then
745+ if outlen == 0 then
746+ return tonumber (sizep [0 ])
747+ end
748+
749+ return ffi_str (out , sizep [0 ])
750+ end
751+
752+ return nil , ffi_str (errmsg [0 ])
753+ end
754+
755+
756+ function _M .get_session_master_key (outlen )
757+ local r = get_request ()
758+ if not r then
759+ error (" no request found" )
760+ end
761+
762+ if outlen == nil then
763+ outlen = 48
764+ end
765+
766+ local out = get_string_buf (outlen )
767+ local sizep = get_size_ptr ()
768+ sizep [0 ] = outlen
769+
770+ local rc = ngx_lua_ffi_ssl_session_master_key (r , out , sizep , errmsg )
771+ if rc == FFI_OK then
772+ if outlen == 0 then
773+ return tonumber (sizep [0 ])
774+ end
775+
776+ return ffi_str (out , sizep [0 ])
777+ end
778+
779+ return nil , ffi_str (errmsg [0 ])
780+ end
781+
782+
719783return _M
0 commit comments