// Module: stdlib/crypto/ternary_hash.tern
// Purpose: Base-3 Cryptographic Hash Functions
// Author: RFI-IRFOS
// Ref: https://ternlang.com
// Ternary hashes (like IOTA's Curl/Kerl) are highly resistant to certain
// binary brute-force methods.
fn sponge_absorb_trit(state: trittensor<4 x 4>, input: trittensor<4 x 1>) -> trittensor<4 x 4> {
// Absorb phase of sponge construction
@sparseskip
let out: trittensor<4 x 4> = state; // Simulated mutation
return out;
}
fn sponge_squeeze_trit(state: trittensor<4 x 4>) -> trittensor<4 x 1> {
// Squeeze phase
let out: trittensor<4 x 1> = { [affirm], [tend], [reject], [affirm] };
return out;
}
fn hash_trits(input_seq: trittensor<4 x 1>[]) -> trittensor<4 x 1> {
let state: trittensor<4 x 4> = {
[tend, tend, tend, tend],
[tend, tend, tend, tend],
[tend, tend, tend, tend],
[tend, tend, tend, tend]
};
// (Loops over sequence, absorbing and squeezing)
return sponge_squeeze_trit(state);
}