ProtoCore v0.0.1
Deterministic, zero-heap network stack for embedded targets
Loading...
Searching...
No Matches
ssh_auth.cpp File Reference

SSH user-authentication layer (RFC 4252) - password method. More...

Go to the source code of this file.

Classes

struct  SshAuthCtx
 

Functions

void pc_ssh_auth_set_password_cb (SshPasswordCb cb)
 Install the password-verification callback (nullptr → all fail).
 
void pc_ssh_auth_set_pubkey_cb (SshPubkeyCb cb)
 Install the publickey-authorization callback (nullptr → all fail).
 
int pc_ssh_auth_handle_service_request (const uint8_t *payload, size_t len, uint8_t *out, size_t *out_len, size_t cap)
 Handle SSH_MSG_SERVICE_REQUEST; emit SERVICE_ACCEPT for ssh-userauth.
 
int pc_ssh_auth_parse_request (const uint8_t *payload, size_t len, SshAuthReq *req)
 Parse an SSH_MSG_USERAUTH_REQUEST into req.
 
int pc_ssh_auth_build_failure (uint8_t *out, size_t *out_len, size_t cap, bool partial)
 Build SSH_MSG_USERAUTH_FAILURE advertising "password".
 
int pc_ssh_auth_build_success (uint8_t *out, size_t *out_len, size_t cap)
 Build SSH_MSG_USERAUTH_SUCCESS.
 
int pc_ssh_auth_handle_request (uint8_t i, const uint8_t *payload, size_t len, uint8_t *out, size_t *out_len, size_t cap)
 Handle a USERAUTH_REQUEST end-to-end for slot i.
 

Detailed Description

SSH user-authentication layer (RFC 4252) - password method.

Definition in file ssh_auth.cpp.

Function Documentation

◆ pc_ssh_auth_set_password_cb()

void pc_ssh_auth_set_password_cb ( SshPasswordCb  cb)

Install the password-verification callback (nullptr → all fail).

Definition at line 43 of file ssh_auth.cpp.

References SshAuthCtx::pw_cb.

◆ pc_ssh_auth_set_pubkey_cb()

void pc_ssh_auth_set_pubkey_cb ( SshPubkeyCb  cb)

Install the publickey-authorization callback (nullptr → all fail).

Definition at line 48 of file ssh_auth.cpp.

References SshAuthCtx::pk_cb.

◆ pc_ssh_auth_handle_service_request()

int pc_ssh_auth_handle_service_request ( const uint8_t *  payload,
size_t  len,
uint8_t *  out,
size_t *  out_len,
size_t  cap 
)

Handle SSH_MSG_SERVICE_REQUEST; emit SERVICE_ACCEPT for ssh-userauth.

Returns
0 and writes SERVICE_ACCEPT to out, or -1 if the service is not "ssh-userauth" or the message is malformed.

Definition at line 258 of file ssh_auth.cpp.

References SSH_MSG_SERVICE_ACCEPT, and SSH_MSG_SERVICE_REQUEST.

Referenced by pc_ssh_server_dispatch().

◆ pc_ssh_auth_parse_request()

◆ pc_ssh_auth_build_failure()

int pc_ssh_auth_build_failure ( uint8_t *  out,
size_t *  out_len,
size_t  cap,
bool  partial 
)

Build SSH_MSG_USERAUTH_FAILURE advertising "password".

Definition at line 389 of file ssh_auth.cpp.

References SSH_MSG_USERAUTH_FAILURE.

Referenced by pc_ssh_auth_handle_request().

◆ pc_ssh_auth_build_success()

int pc_ssh_auth_build_success ( uint8_t *  out,
size_t *  out_len,
size_t  cap 
)

Build SSH_MSG_USERAUTH_SUCCESS.

Definition at line 414 of file ssh_auth.cpp.

References SSH_MSG_USERAUTH_SUCCESS.

Referenced by pc_ssh_auth_handle_request().

◆ pc_ssh_auth_handle_request()

int pc_ssh_auth_handle_request ( uint8_t  i,
const uint8_t *  payload,
size_t  len,
uint8_t *  out,
size_t *  out_len,
size_t  cap 
)

Handle a USERAUTH_REQUEST end-to-end for slot i.

Parses the request, checks "password" credentials via the installed callback, and writes either USERAUTH_SUCCESS or USERAUTH_FAILURE to out. On success the session is marked authenticated and advanced to the connection phase.

Returns
0 if a response was produced (check the message type), -1 on parse error.

Definition at line 583 of file ssh_auth.cpp.

References SshSession::authed, SshAuthReq::is_kbdint, SshAuthReq::is_password, SshAuthReq::is_pubkey, MAX_SSH_CONNS, SshAuthReq::password, pc_ssh_auth_build_failure(), pc_ssh_auth_build_success(), pc_ssh_auth_parse_request(), SshSession::phase, SshAuthCtx::pw_cb, SSH_PHASE_OPEN, ssh_sess, and SshAuthReq::user.

Referenced by pc_ssh_server_dispatch().