Skip to content

Commit 7980716

Browse files
author
mengxiangwei
committed
feat: add server random and master key fetch api
1 parent 5a8c479 commit 7980716

1 file changed

Lines changed: 64 additions & 0 deletions

File tree

lib/ngx/ssl.lua

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,8 @@ local ngx_lua_ffi_free_cert
4141
local ngx_lua_ffi_free_priv_key
4242
local ngx_lua_ffi_ssl_verify_client
4343
local ngx_lua_ffi_ssl_client_random
44+
local ngx_lua_ffi_ssl_server_random
45+
local ngx_lua_ffi_ssl_session_master_key
4446
local ngx_lua_ffi_ssl_export_keying_material
4547
local ngx_lua_ffi_ssl_export_keying_material_early
4648
local 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)
716726
end
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+
719783
return _M

0 commit comments

Comments
 (0)