Public Access
- uname in the console and /uname in IRC: the firmware, its version and the chip - scp: one file between the card and a trusted server, over SSH, with the device's key or a password asked (masked) in the Shell - shared libssh helpers in src/platform/libssh_util - README, user guide, command reference and a how-to updated Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0162FokPdvY2KsS4NBfwyWPk
30 lines
790 B
C++
30 lines
790 B
C++
#include "platform/libssh_util.h"
|
|
|
|
#include <libssh_esp32.h>
|
|
|
|
namespace roro::sshutil {
|
|
|
|
std::string fingerprintOf(ssh_session s) {
|
|
ssh_key key = nullptr;
|
|
unsigned char* hash = nullptr;
|
|
size_t len = 0;
|
|
std::string out;
|
|
if (ssh_get_server_publickey(s, &key) == SSH_OK && ssh_get_publickey_hash(key, SSH_PUBLICKEY_HASH_SHA256, &hash, &len) == SSH_OK) {
|
|
if (char* text = ssh_get_fingerprint_hash(SSH_PUBLICKEY_HASH_SHA256, hash, len)) {
|
|
out = text; // "SHA256:..."
|
|
ssh_string_free_char(text);
|
|
}
|
|
ssh_clean_pubkey_hash(&hash);
|
|
}
|
|
if (key) ssh_key_free(key);
|
|
return out;
|
|
}
|
|
|
|
void startLibrary() {
|
|
static bool started = false;
|
|
if (!started) libssh_begin();
|
|
started = true;
|
|
}
|
|
|
|
} // namespace roro::sshutil
|