Skip to content
Snippets Groups Projects
Commit 84fe02d6 authored by ivan.fedorov's avatar ivan.fedorov
Browse files

t3

parent 31e12a54
No related branches found
No related tags found
1 merge request!24Rct2
#ifndef INDCPA_H
#define INDCPA_H
void cpapke_keypair(unsigned char *pk,
unsigned char *sk);
void cpapke_enc(unsigned char *c,
const unsigned char *m,
const unsigned char *pk,
const unsigned char *coins);
void cpapke_dec(unsigned char *m,
const unsigned char *c,
const unsigned char *sk);
#endif
#ifndef FIPS202_H
#define FIPS202_H
#include <stdint.h>
#define SHAKE128_RATE 168
#define SHAKE256_RATE 136
void shake128_absorb(uint64_t *s, const unsigned char *input, unsigned long long inputByteLen);
void shake128_squeezeblocks(unsigned char *output, unsigned long long nblocks, uint64_t *s);
void shake256(unsigned char *output, unsigned long long outputByteLen, const unsigned char *input, unsigned long long inputByteLen);
#endif
#ifndef NTT_H
#define NTT_H
#include "inttypes.h"
extern uint16_t omegas_bitrev_montgomery[];
extern uint16_t omegas_inv_bitrev_montgomery[];
extern uint16_t psis_bitrev_montgomery[];
extern uint16_t psis_inv_montgomery[];
void bitrev_vector(uint16_t *poly_ringct20);
void mul_coefficients(uint16_t *poly_ringct20, const uint16_t *factors);
void ntt_ringct20(uint16_t *poly_ringct20, const uint16_t *omegas);
#endif
#ifndef PARAMS_H
#define PARAMS_H
#define NEWHOPE_Q 12289
#define NEWHOPE_K 8 /* used in noise sampling */
#define NEWHOPE_N 512/**/
#define NEWHOPE_SYMBYTES 32 /* size of shared key, seeds/coins, and hashes */
#define NEWHOPE_POLYBYTES ((14 * NEWHOPE_N) / 8)
#define NEWHOPE_POLYCOMPRESSEDBYTES ((3 * NEWHOPE_N) / 8)
#define NEWHOPE_CPAPKE_PUBLICKEYBYTES (NEWHOPE_POLYBYTES + NEWHOPE_SYMBYTES)
#define NEWHOPE_CPAPKE_SECRETKEYBYTES (NEWHOPE_POLYBYTES)
#define NEWHOPE_CPAPKE_CIPHERTEXTBYTES (NEWHOPE_POLYBYTES + NEWHOPE_POLYCOMPRESSEDBYTES)
#define NEWHOPE_CPAKEM_PUBLICKEYBYTES NEWHOPE_CPAPKE_PUBLICKEYBYTES
#define NEWHOPE_CPAKEM_SECRETKEYBYTES NEWHOPE_CPAPKE_SECRETKEYBYTES
#define NEWHOPE_CPAKEM_CIPHERTEXTBYTES NEWHOPE_CPAPKE_CIPHERTEXTBYTES
#define NEWHOPE_CCAKEM_PUBLICKEYBYTES NEWHOPE_CPAPKE_PUBLICKEYBYTES
#define NEWHOPE_CCAKEM_SECRETKEYBYTES (NEWHOPE_CPAPKE_SECRETKEYBYTES + NEWHOPE_CPAPKE_PUBLICKEYBYTES + 2 * NEWHOPE_SYMBYTES)
#define NEWHOPE_CCAKEM_CIPHERTEXTBYTES (NEWHOPE_CPAPKE_CIPHERTEXTBYTES + NEWHOPE_SYMBYTES) /* Second part is for Targhi-Unruh */
#endif
#ifndef POLY_H
#define POLY_H
#include <stdint.h>
#include "params.h"
/*
* Elements of R_q = Z_q[X]/(X^n + 1). Represents polynomial
* coeffs[0] + X*coeffs[1] + X^2*xoeffs[2] + ... + X^{n-1}*coeffs[n-1]
*/
typedef struct {
uint16_t coeffs[NEWHOPE_N];
} poly_ringct20
#if !defined(_WIN32)
__attribute__((aligned(32)));
#else
;
#endif
void poly_uniform_ringct20(poly_ringct20 *a, const unsigned char *seed);
void poly_sample(poly_ringct20 *r, const unsigned char *seed, unsigned char nonce);
void poly_add_ringct20(poly_ringct20 *r, const poly_ringct20 *a, const poly_ringct20 *b);
void poly_ntt_ringct20(poly_ringct20 *r);
void poly_invntt(poly_ringct20 *r);
void poly_mul_pointwise(poly_ringct20 *r, const poly_ringct20 *a, const poly_ringct20 *b);
void poly_frombytes(poly_ringct20 *r, const unsigned char *a);
void poly_tobytes(unsigned char *r, const poly_ringct20 *p);
void poly_compress(unsigned char *r, const poly_ringct20 *p);
void poly_decompress(poly_ringct20 *r, const unsigned char *a);
void poly_frommsg(poly_ringct20 *r, const unsigned char *msg);
void poly_tomsg(unsigned char *msg, const poly_ringct20 *x);
void poly_sub_ringct20(poly_ringct20 *r, const poly_ringct20 *a, const poly_ringct20 *b);
#endif
#ifndef REDUCE_H
#define REDUCE_H
#include <stdint.h>
uint16_t montgomery_reduce_32_16(uint32_t a);
#endif
#ifndef VERIFY_H
#define VERIFY_H
#include <stdio.h>
/* returns 0 for equal strings, 1 for non-equal strings */
int verify_ringct20(const unsigned char *a, const unsigned char *b, size_t len);
/* b = 1 means mov, b = 0 means don't mov*/
void cmov(unsigned char *r, const unsigned char *x, size_t len, unsigned char b);
#endif
...@@ -18,7 +18,7 @@ ...@@ -18,7 +18,7 @@
int main(void) int main(void)
{ {
//test //test
//test2 //test3
// switch off debug info from library // switch off debug info from library
dap_log_level_set(L_CRITICAL); dap_log_level_set(L_CRITICAL);
//LRCT_Setup_Test(); //LRCT_Setup_Test();
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment