60 static int GetHasshServerString(
lua_State *luastate,
const Flow *f)
62 void *state = FlowGetAppState(f);
64 return LuaCallbackError(luastate,
"error: no app layer state");
66 const uint8_t *hassh_server_string = NULL;
69 void *tx = rs_ssh_state_get_tx(state, 0);
70 if (rs_ssh_tx_get_hassh_string(tx, &hassh_server_string, &b_len, STREAM_TOCLIENT) != 1)
71 return LuaCallbackError(luastate,
"error: no server hassh string");
72 if (hassh_server_string == NULL || b_len == 0) {
73 return LuaCallbackError(luastate,
"error: no server hassh string");
76 return LuaPushStringBuffer(luastate, hassh_server_string, b_len);
79 static int HasshServerGetString(
lua_State *luastate)
84 return LuaCallbackError(luastate,
"error: protocol is not ssh");
86 Flow *f = LuaStateGetFlow(luastate);
88 return LuaCallbackError(luastate,
"internal error: no ssh flow");
90 r = GetHasshServerString(luastate, f);
97 void *state = FlowGetAppState(f);
99 return LuaCallbackError(luastate,
"error: no ssh app layer state");
101 const uint8_t *hassh_server = NULL;
104 void *tx = rs_ssh_state_get_tx(state, 0);
105 if (rs_ssh_tx_get_hassh(tx, &hassh_server, &b_len, STREAM_TOCLIENT) != 1)
106 return LuaCallbackError(luastate,
"error: no server hassh");
107 if (hassh_server == NULL || b_len == 0) {
108 return LuaCallbackError(luastate,
"error: no server hassh");
111 return LuaPushStringBuffer(luastate, hassh_server, b_len);
114 static int HasshServerGet(
lua_State *luastate)
119 return LuaCallbackError(luastate,
"error: protocol is not ssh");
121 Flow *f = LuaStateGetFlow(luastate);
123 return LuaCallbackError(luastate,
"internal error: no ssh flow");
125 r = GetHasshServer(luastate, f);
130 static int GetHasshString(
lua_State *luastate,
const Flow *f)
132 void *state = FlowGetAppState(f);
134 return LuaCallbackError(luastate,
"error: no app layer state");
136 const uint8_t *hassh_string = NULL;
139 void *tx = rs_ssh_state_get_tx(state, 0);
140 if (rs_ssh_tx_get_hassh_string(tx, &hassh_string, &b_len, STREAM_TOSERVER) != 1)
141 return LuaCallbackError(luastate,
"error: no client hassh_string");
142 if (hassh_string == NULL || b_len == 0) {
143 return LuaCallbackError(luastate,
"error: no client hassh_string");
146 return LuaPushStringBuffer(luastate, hassh_string, b_len);
149 static int HasshGetString(
lua_State *luastate)
154 return LuaCallbackError(luastate,
"error: protocol is not ssh");
156 Flow *f = LuaStateGetFlow(luastate);
158 return LuaCallbackError(luastate,
"internal error: no ssh flow");
160 r = GetHasshString(luastate, f);
167 void *state = FlowGetAppState(f);
169 return LuaCallbackError(luastate,
"error: no app layer state");
171 const uint8_t *hassh = NULL;
174 void *tx = rs_ssh_state_get_tx(state, 0);
175 if (rs_ssh_tx_get_hassh(tx, &hassh, &b_len, STREAM_TOSERVER) != 1)
176 return LuaCallbackError(luastate,
"error: no client hassh");
177 if (hassh == NULL || b_len == 0) {
178 return LuaCallbackError(luastate,
"error: no client hassh");
181 return LuaPushStringBuffer(luastate, hassh, b_len);
189 return LuaCallbackError(luastate,
"error: protocol is not ssh");
191 Flow *f = LuaStateGetFlow(luastate);
193 return LuaCallbackError(luastate,
"internal error: no sshflow");
195 r = GetHassh(luastate, f);
201 int LuaRegisterHasshFunctions(
lua_State *luastate)
204 lua_pushcfunction(luastate, HasshGet);
205 lua_setglobal(luastate,
"HasshGet");
207 lua_pushcfunction(luastate, HasshGetString);
208 lua_setglobal(luastate,
"HasshGetString");
210 lua_pushcfunction(luastate, HasshServerGet);
211 lua_setglobal(luastate,
"HasshServerGet");
213 lua_pushcfunction(luastate, HasshServerGetString);
214 lua_setglobal(luastate,
"HasshServerGetString");