mirror of
https://github.com/brunoos/luasec.git
synced 2024-09-06 21:04:43 +02:00
Add identity hint to PSK
This commit is contained in:
parent
c3f12b8c4d
commit
0e669f6c82
@ -19,7 +19,15 @@ local params = {
|
|||||||
mode = "server",
|
mode = "server",
|
||||||
protocol = "any",
|
protocol = "any",
|
||||||
options = "all",
|
options = "all",
|
||||||
|
|
||||||
|
-- PSK with just a callback
|
||||||
psk = pskcb,
|
psk = pskcb,
|
||||||
|
|
||||||
|
-- PSK with identity hint
|
||||||
|
-- psk = {
|
||||||
|
-- hint = "hintpsksample",
|
||||||
|
-- callback = pskcb,
|
||||||
|
-- },
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -764,6 +764,18 @@ static int set_server_psk_cb(lua_State *L)
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Set the PSK indentity hint.
|
||||||
|
*/
|
||||||
|
static int set_psk_identity_hint(lua_State *L)
|
||||||
|
{
|
||||||
|
p_context ctx = checkctx(L, 1);
|
||||||
|
const char *hint = luaL_checkstring(L, 2);
|
||||||
|
int ret = SSL_CTX_use_psk_identity_hint(ctx->context, hint);
|
||||||
|
lua_pushboolean(L, ret);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Client callback to PSK.
|
* Client callback to PSK.
|
||||||
*/
|
*/
|
||||||
@ -882,6 +894,7 @@ static luaL_Reg funcs[] = {
|
|||||||
{"setdhparam", set_dhparam},
|
{"setdhparam", set_dhparam},
|
||||||
{"setverify", set_verify},
|
{"setverify", set_verify},
|
||||||
{"setoptions", set_options},
|
{"setoptions", set_options},
|
||||||
|
{"setpskhint", set_psk_identity_hint},
|
||||||
{"setserverpskcb", set_server_psk_cb},
|
{"setserverpskcb", set_server_psk_cb},
|
||||||
{"setclientpskcb", set_client_psk_cb},
|
{"setclientpskcb", set_client_psk_cb},
|
||||||
{"setmode", set_mode},
|
{"setmode", set_mode},
|
||||||
|
22
src/ssl.lua
22
src/ssl.lua
@ -203,16 +203,28 @@ local function newcontext(cfg)
|
|||||||
|
|
||||||
-- PSK
|
-- PSK
|
||||||
if cfg.psk then
|
if cfg.psk then
|
||||||
if type(cfg.psk) ~= "function" then
|
|
||||||
return nil, "invalid PSK callback parameter"
|
|
||||||
end
|
|
||||||
|
|
||||||
if cfg.mode == "client" then
|
if cfg.mode == "client" then
|
||||||
succ, msg = context.setclientpskcb(ctx, cfg.psk)
|
if type(cfg.psk) ~= "function" then
|
||||||
|
return nil, "invalid PSK configuration"
|
||||||
|
end
|
||||||
|
succ = context.setclientpskcb(ctx, cfg.psk)
|
||||||
if not succ then return nil, msg end
|
if not succ then return nil, msg end
|
||||||
elseif cfg.mode == "server" then
|
elseif cfg.mode == "server" then
|
||||||
|
if type(cfg.psk) == "function" then
|
||||||
succ, msg = context.setserverpskcb(ctx, cfg.psk)
|
succ, msg = context.setserverpskcb(ctx, cfg.psk)
|
||||||
if not succ then return nil, msg end
|
if not succ then return nil, msg end
|
||||||
|
elseif type(cfg.psk) == "table" then
|
||||||
|
if type(cfg.psk.hint) == "string" and type(cfg.psk.callback) == "function" then
|
||||||
|
succ, msg = context.setpskhint(ctx, cfg.psk.hint)
|
||||||
|
if not succ then return succ, msg end
|
||||||
|
succ = context.setserverpskcb(ctx, cfg.psk.callback)
|
||||||
|
if not succ then return succ, msg end
|
||||||
|
else
|
||||||
|
return nil, "invalid PSK configuration"
|
||||||
|
end
|
||||||
|
else
|
||||||
|
return nil, "invalid PSK configuration"
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user