Let us walk on the 3-isogeny graph
Loading...
Searching...
No Matches
cgl_hash.c
Go to the documentation of this file.
1//
2// // Charles-Goren-Lauter Hash function
3//
4
5#include "cgl_hash.h"
6
7
8// Using 2-isogenies
9void cgl_hash_digest_2(fp2_t *output, const cgl_hash_2_ctx *ctx, const uint8_t *input_bitstring) {
10 fp2_set_to_zero(output);
11
12 isogeny_walks_2(output, ctx->j_, ctx->j0, input_bitstring, BIT_LENGTH_PATH);
13}
14
15
20
21
22// Using 3-isogenies
23void cgl_hash_digest_3(fp2_t *output, const cgl_hash_3_ctx *ctx, const uint8_t *input_trit_string) {
24 fp2_t a1, a3;
25 fp2_set_to_zero(output);
26
27 isogeny_walks_3(&a1, &a3, ctx->a1, ctx->a3, input_trit_string, TRITLENGTH_PATH);
29}
30
31
32void cgl_hash_init_3(cgl_hash_3_ctx *ctx, fp2_t input_A, uint8_t choice) {
33 fp2_t xP[4];
34 isogeny_walks_get_points_3(xP, input_A);
35 isogeny_walks_from_montgomery_model_3(&ctx->a1, &ctx->a3, input_A, xP[choice % 4]);
36}
void fp2_set_to_zero(fp2_t *output)
Definition fp2.c:54
void isogeny_walks_from_montgomery_model_3(fp2_t *output_a1, fp2_t *output_a3, fp2_t input_A, fp2_t input_xP)
void isogeny_walks_3(fp2_t *output_a1, fp2_t *output_a3, fp2_t input_a1, fp2_t input_a3, const uint8_t *input_path, size_t input_length)
void isogeny_walks_get_points_3(fp2_t *output, fp2_t input_A)
void isogeny_walks_switch_from_model_3(fp2_t *output_j, fp2_t input_a1, fp2_t input_a3)
void isogeny_walks_2(fp2_t *output, fp2_t input_prev, fp2_t input, const uint8_t *input_path, size_t input_length)
void isogeny_walks_get_previous_step_2(fp2_t *output_j, fp2_t input_A)
void isogeny_walks_from_montgomery_model_2(fp2_t *output_j, fp2_t input_A)
void cgl_hash_digest_3(fp2_t *output, const cgl_hash_3_ctx *ctx, const uint8_t *input_trit_string)
Definition cgl_hash.c:23
void cgl_hash_digest_2(fp2_t *output, const cgl_hash_2_ctx *ctx, const uint8_t *input_bitstring)
Definition cgl_hash.c:9
void cgl_hash_init_2(cgl_hash_2_ctx *ctx, fp2_t input_A)
Definition cgl_hash.c:16
void cgl_hash_init_3(cgl_hash_3_ctx *ctx, fp2_t input_A, uint8_t choice)
Definition cgl_hash.c:32
den a3
#define TRITLENGTH_PATH
Definition p254.h:15
#define BIT_LENGTH_PATH
Definition p254.h:14
Definition fp2.h:10
g a1
Definition to_model.m:15