@@ -88,6 +88,39 @@ static int is_mceliece(const char *method_name) {
88
88
|| !strcmp (method_name , OQS_KEM_alg_classic_mceliece_8192128f ) );
89
89
}
90
90
91
+ /* HQC-specific functions */
92
+ static inline bool is_hqc (const char * method_name ) {
93
+ return (0 == strcmp (method_name , OQS_KEM_alg_hqc_128 ))
94
+ || (0 == strcmp (method_name , OQS_KEM_alg_hqc_192 ))
95
+ || (0 == strcmp (method_name , OQS_KEM_alg_hqc_256 ));
96
+ }
97
+
98
+ static void HQC_randombytes_init (const uint8_t * entropy_input , const uint8_t * personalization_string ) {
99
+ uint8_t domain = HQC_PRNG_DOMAIN ;
100
+ if (shake_prng_state .ctx != NULL ) {
101
+ OQS_SHA3_shake256_inc_ctx_reset (& shake_prng_state );
102
+ } else {
103
+ OQS_SHA3_shake256_inc_init (& shake_prng_state );
104
+ }
105
+ OQS_SHA3_shake256_inc_absorb (& shake_prng_state , entropy_input , 48 );
106
+ if (personalization_string != NULL ) {
107
+ OQS_SHA3_shake256_inc_absorb (& shake_prng_state , personalization_string , 48 );
108
+ }
109
+ OQS_SHA3_shake256_inc_absorb (& shake_prng_state , & domain , 1 );
110
+ OQS_SHA3_shake256_inc_finalize (& shake_prng_state );
111
+ }
112
+
113
+ static void HQC_randombytes (uint8_t * random_array , size_t bytes_to_read ) {
114
+ OQS_SHA3_shake256_inc_squeeze (random_array , bytes_to_read , & shake_prng_state );
115
+ }
116
+
117
+ static void HQC_randombytes_free (void ) {
118
+ if (shake_prng_state .ctx != NULL ) {
119
+ OQS_SHA3_shake256_inc_ctx_release (& shake_prng_state );
120
+ shake_prng_state .ctx = NULL ;
121
+ }
122
+ }
123
+
91
124
static OQS_STATUS kem_kat (const char * method_name , bool all ) {
92
125
93
126
uint8_t entropy_input [48 ];
@@ -105,6 +138,8 @@ static OQS_STATUS kem_kat(const char *method_name, bool all) {
105
138
void (* randombytes_free )(void ) = NULL ;
106
139
int max_count ;
107
140
int max_count ;
141
+ void (* randombytes_init )(const uint8_t * , const uint8_t * ) = NULL ;
142
+ void (* randombytes_free )(void ) = NULL ;
108
143
109
144
kem = OQS_KEM_new (method_name );
110
145
if (kem == NULL ) {
0 commit comments