ProtoCore v1.0.16
Deterministic, zero-heap network stack for embedded targets
Loading...
Searching...
No Matches
ssh_kexhash.h File Reference

One key-exchange digest that dispatches SHA-256 or SHA-512 by the negotiated method. More...

#include "protocore_config.h"

Go to the source code of this file.

Classes

struct  SshKexHashInitArgs
 Which of the two KEX hashes the negotiated method binds a digest to. More...
 
struct  SshKexHashUpdateArgs
 The bytes absorbed. More...
 
struct  SshKexHashFinalArgs
 Where the digest lands. More...
 
struct  SshKexHashVars
 
struct  SshKexHashNs
 The entries. More...
 

Macros

#define SSH_KEXHASH_MAX_LEN   64
 Longest exchange hash / session_id the two KEX hashes produce (SHA-512).
 

Functions

void protocore_ssh_kex_hash_init (uint8_t *work)
 
void protocore_ssh_kex_hash_update (uint8_t *work)
 
void protocore_ssh_kex_hash_final (uint8_t *work)
 

Variables

SshKexHashVars SshKexHashV
 The operands and the outcome.
 

Detailed Description

One key-exchange digest that dispatches SHA-256 or SHA-512 by the negotiated method.

RFC 4253 sec 8 ties the exchange hash H (and the sec 7.2 key derivation) to the KEX method's hash: the -sha256 methods (curve25519-sha256, ecdh-sha2-nistp256, dh-group14-sha256, mlkem768x25519-sha256) use SHA-256; -sha512 methods (sntru.nosp@m.p761.nosp@m.x2551.nosp@m.9-sh.nosp@m.a512@.nosp@m.open.nosp@m.ssh.c.nosp@m.om) use SHA-512. Rather than fork every hash site, the exchange hash and the KDF run through this one namespace, so adding a KEX with a different hash is a one-line change and not a new code path.

Author
Douglas Quigg (dstroy0)
Date
2026

Definition in file ssh_kexhash.h.

Macro Definition Documentation

◆ SSH_KEXHASH_MAX_LEN

#define SSH_KEXHASH_MAX_LEN   64

Longest exchange hash / session_id the two KEX hashes produce (SHA-512).

Definition at line 26 of file ssh_kexhash.h.

Function Documentation

◆ protocore_ssh_kex_hash_init()

void protocore_ssh_kex_hash_init ( uint8_t *  work)

◆ protocore_ssh_kex_hash_update()

void protocore_ssh_kex_hash_update ( uint8_t *  work)

◆ protocore_ssh_kex_hash_final()

void protocore_ssh_kex_hash_final ( uint8_t *  work)

Variable Documentation

◆ SshKexHashV

SshKexHashVars SshKexHashV
extern

The operands and the outcome.