Skip to content

Commit

Permalink
test: add test for ssl.get_client_random.
Browse files Browse the repository at this point in the history
Signed-off-by: xuruidong <xuruidong@gmail.com>
  • Loading branch information
xuruidong committed Mar 6, 2024
1 parent 3ec80e3 commit 58e672c
Show file tree
Hide file tree
Showing 2 changed files with 185 additions and 0 deletions.
106 changes: 106 additions & 0 deletions t/ssl.t
Original file line number Diff line number Diff line change
Expand Up @@ -2970,3 +2970,109 @@ lua ssl server name: "test.com"
[error]
[alert]
[emerg]



=== TEST 30: read client-random via ssl.get_client_random()
--- http_config
lua_package_path "$TEST_NGINX_LUA_PACKAGE_PATH";

server {
listen unix:$TEST_NGINX_HTML_DIR/nginx.sock ssl;
server_name test.com;
ssl_certificate_by_lua_block {
local ssl = require "ngx.ssl"
local client_random_len = ssl.get_client_random(0)
print("client-random length: ", client_random_len)

local init_v = "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
local client_random = ssl.get_client_random()
if client_random == init_v then
print("maybe the client random value is incorrect")
end
}
ssl_certificate ../../cert/test.crt;
ssl_certificate_key ../../cert/test.key;

server_tokens off;
location /foo {
default_type 'text/plain';
content_by_lua_block {ngx.status = 201 ngx.say("foo") ngx.exit(201)}
more_clear_headers Date;
}
}
--- config
server_tokens off;
lua_ssl_trusted_certificate ../../cert/test.crt;

location /t {
content_by_lua_block {
do
local sock = ngx.socket.tcp()

sock:settimeout(3000)

local ok, err = sock:connect("unix:$TEST_NGINX_HTML_DIR/nginx.sock")
if not ok then
ngx.say("failed to connect: ", err)
return
end

ngx.say("connected: ", ok)

local sess, err = sock:sslhandshake(nil, "test.com", true)
if not sess then
ngx.say("failed to do SSL handshake: ", err)
return
end

ngx.say("ssl handshake: ", type(sess))

local req = "GET /foo HTTP/1.0\r\nHost: test.com\r\nConnection: close\r\n\r\n"
local bytes, err = sock:send(req)
if not bytes then
ngx.say("failed to send http request: ", err)
return
end

ngx.say("sent http request: ", bytes, " bytes.")

while true do
local line, err = sock:receive()
if not line then
-- ngx.say("failed to receive response status line: ", err)
break
end

ngx.say("received: ", line)
end

local ok, err = sock:close()
ngx.say("close: ", ok, " ", err)
end -- do
-- collectgarbage()
}
}

--- request
GET /t
--- response_body
connected: 1
ssl handshake: cdata
sent http request: 56 bytes.
received: HTTP/1.1 201 Created
received: Server: nginx
received: Content-Type: text/plain
received: Content-Length: 4
received: Connection: close
received:
received: foo
close: 1 nil

--- error_log
client-random length: 32

--- no_error_log
[error]
[alert]
[emerg]
79 changes: 79 additions & 0 deletions t/stream/ssl.t
Original file line number Diff line number Diff line change
Expand Up @@ -2245,3 +2245,82 @@ lua ssl server name: "test.com"
[error]
[alert]
[emerg]



=== TEST 28: read client random via ssl.get_client_random()
--- stream_config
lua_package_path "$TEST_NGINX_LUA_PACKAGE_PATH";

server {
listen 127.0.0.1:$TEST_NGINX_RAND_PORT_1 ssl;
ssl_certificate_by_lua_block {
local ssl = require "ngx.ssl"
local client_random_len = ssl.get_client_random(0)
print("client-random length: ", client_random_len)

local init_v = "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
local client_random = ssl.get_client_random()
if client_random == init_v then
print("maybe the client random value is incorrect")
end
}
ssl_certificate ../../cert/test.crt;
ssl_certificate_key ../../cert/test.key;

return 'it works!\n';
}
--- stream_server_config
lua_ssl_trusted_certificate ../../cert/test.crt;

content_by_lua_block {
do
local sock = ngx.socket.tcp()

sock:settimeout(3000)

local ok, err = sock:connect("127.0.0.1", $TEST_NGINX_RAND_PORT_1)
if not ok then
ngx.say("failed to connect: ", err)
return
end

ngx.say("connected: ", ok)

local sess, err = sock:sslhandshake(nil, nil, true)
if not sess then
ngx.say("failed to do SSL handshake: ", err)
return
end

ngx.say("ssl handshake: ", type(sess))

while true do
local line, err = sock:receive()
if not line then
-- ngx.say("failed to receive response status line: ", err)
break
end

ngx.say("received: ", line)
end

local ok, err = sock:close()
ngx.say("close: ", ok, " ", err)
end -- do
-- collectgarbage()
}

--- stream_response
connected: 1
ssl handshake: userdata
received: it works!
close: 1 nil

--- error_log
client-random length: 32

--- no_error_log
[error]
[alert]
[emerg]

0 comments on commit 58e672c

Please sign in to comment.