61 static int GetHasshServerString(
lua_State *luastate,
const Flow *f)
65 return LuaCallbackError(luastate,
"error: no app layer state");
67 const uint8_t *hassh_server_string = NULL;
70 void *tx = rs_ssh_state_get_tx(state, 0);
71 if (rs_ssh_tx_get_hassh_string(tx, &hassh_server_string, &b_len, STREAM_TOCLIENT) != 1)
72 return LuaCallbackError(luastate,
"error: no server hassh string");
73 if (hassh_server_string == NULL || b_len == 0) {
74 return LuaCallbackError(luastate,
"error: no server hassh string");
77 return LuaPushStringBuffer(luastate, hassh_server_string, b_len);
80 static int HasshServerGetString(
lua_State *luastate)
85 return LuaCallbackError(luastate,
"error: protocol is not ssh");
87 Flow *f = LuaStateGetFlow(luastate);
89 return LuaCallbackError(luastate,
"internal error: no ssh flow");
91 r = GetHasshServerString(luastate, f);
100 return LuaCallbackError(luastate,
"error: no ssh app layer state");
102 const uint8_t *hassh_server = NULL;
105 void *tx = rs_ssh_state_get_tx(state, 0);
106 if (rs_ssh_tx_get_hassh(tx, &hassh_server, &b_len, STREAM_TOCLIENT) != 1)
107 return LuaCallbackError(luastate,
"error: no server hassh");
108 if (hassh_server == NULL || b_len == 0) {
109 return LuaCallbackError(luastate,
"error: no server hassh");
112 return LuaPushStringBuffer(luastate, hassh_server, b_len);
115 static int HasshServerGet(
lua_State *luastate)
120 return LuaCallbackError(luastate,
"error: protocol is not ssh");
122 Flow *f = LuaStateGetFlow(luastate);
124 return LuaCallbackError(luastate,
"internal error: no ssh flow");
126 r = GetHasshServer(luastate, f);
131 static int GetHasshString(
lua_State *luastate,
const Flow *f)
135 return LuaCallbackError(luastate,
"error: no app layer state");
137 const uint8_t *hassh_string = NULL;
140 void *tx = rs_ssh_state_get_tx(state, 0);
141 if (rs_ssh_tx_get_hassh_string(tx, &hassh_string, &b_len, STREAM_TOSERVER) != 1)
142 return LuaCallbackError(luastate,
"error: no client hassh_string");
143 if (hassh_string == NULL || b_len == 0) {
144 return LuaCallbackError(luastate,
"error: no client hassh_string");
147 return LuaPushStringBuffer(luastate, hassh_string, b_len);
150 static int HasshGetString(
lua_State *luastate)
155 return LuaCallbackError(luastate,
"error: protocol is not ssh");
157 Flow *f = LuaStateGetFlow(luastate);
159 return LuaCallbackError(luastate,
"internal error: no ssh flow");
161 r = GetHasshString(luastate, f);
170 return LuaCallbackError(luastate,
"error: no app layer state");
172 const uint8_t *hassh = NULL;
175 void *tx = rs_ssh_state_get_tx(state, 0);
176 if (rs_ssh_tx_get_hassh(tx, &hassh, &b_len, STREAM_TOSERVER) != 1)
177 return LuaCallbackError(luastate,
"error: no client hassh");
178 if (hassh == NULL || b_len == 0) {
179 return LuaCallbackError(luastate,
"error: no client hassh");
182 return LuaPushStringBuffer(luastate, hassh, b_len);
190 return LuaCallbackError(luastate,
"error: protocol is not ssh");
192 Flow *f = LuaStateGetFlow(luastate);
194 return LuaCallbackError(luastate,
"internal error: no sshflow");
196 r = GetHassh(luastate, f);
202 int LuaRegisterHasshFunctions(
lua_State *luastate)
205 lua_pushcfunction(luastate, HasshGet);
206 lua_setglobal(luastate,
"HasshGet");
208 lua_pushcfunction(luastate, HasshGetString);
209 lua_setglobal(luastate,
"HasshGetString");
211 lua_pushcfunction(luastate, HasshServerGet);
212 lua_setglobal(luastate,
"HasshServerGet");
214 lua_pushcfunction(luastate, HasshServerGetString);
215 lua_setglobal(luastate,
"HasshServerGetString");