1193323Sed/* $OpenBSD: fe25519.h,v 1.3 2013/12/09 11:03:45 markus Exp $ */ 2193323Sed 3193323Sed/* 4193323Sed * Public Domain, Authors: Daniel J. Bernstein, Niels Duif, Tanja Lange, 5193323Sed * Peter Schwabe, Bo-Yin Yang. 6193323Sed * Copied from supercop-20130419/crypto_sign/ed25519/ref/fe25519.h 7193323Sed */ 8193323Sed 9193323Sed#ifndef FE25519_H 10193323Sed#define FE25519_H 11193323Sed 12193323Sed#include "crypto_api.h" 13193323Sed 14193323Sed#define fe25519 crypto_sign_ed25519_ref_fe25519 15193323Sed#define fe25519_freeze crypto_sign_ed25519_ref_fe25519_freeze 16193323Sed#define fe25519_unpack crypto_sign_ed25519_ref_fe25519_unpack 17193323Sed#define fe25519_pack crypto_sign_ed25519_ref_fe25519_pack 18193323Sed#define fe25519_iszero crypto_sign_ed25519_ref_fe25519_iszero 19276479Sdim#define fe25519_iseq_vartime crypto_sign_ed25519_ref_fe25519_iseq_vartime 20193323Sed#define fe25519_cmov crypto_sign_ed25519_ref_fe25519_cmov 21193323Sed#define fe25519_setone crypto_sign_ed25519_ref_fe25519_setone 22193323Sed#define fe25519_setzero crypto_sign_ed25519_ref_fe25519_setzero 23193323Sed#define fe25519_neg crypto_sign_ed25519_ref_fe25519_neg 24276479Sdim#define fe25519_getparity crypto_sign_ed25519_ref_fe25519_getparity 25276479Sdim#define fe25519_add crypto_sign_ed25519_ref_fe25519_add 26193323Sed#define fe25519_sub crypto_sign_ed25519_ref_fe25519_sub 27193323Sed#define fe25519_mul crypto_sign_ed25519_ref_fe25519_mul 28218893Sdim#define fe25519_square crypto_sign_ed25519_ref_fe25519_square 29218893Sdim#define fe25519_invert crypto_sign_ed25519_ref_fe25519_invert 30218893Sdim#define fe25519_pow2523 crypto_sign_ed25519_ref_fe25519_pow2523 31218893Sdim 32198090Srdivackytypedef struct 33198090Srdivacky{ 34226633Sdim crypto_uint32 v[32]; 35198090Srdivacky} 36198090Srdivackyfe25519; 37288943Sdim 38288943Sdimvoid fe25519_freeze(fe25519 *r); 39288943Sdim 40198090Srdivackyvoid fe25519_unpack(fe25519 *r, const unsigned char x[32]); 41212904Sdim 42212904Sdimvoid fe25519_pack(unsigned char r[32], const fe25519 *x); 43212904Sdim 44212904Sdimint fe25519_iszero(const fe25519 *x); 45212904Sdim 46198090Srdivackyint fe25519_iseq_vartime(const fe25519 *x, const fe25519 *y); 47249423Sdim 48212904Sdimvoid fe25519_cmov(fe25519 *r, const fe25519 *x, unsigned char b); 49198090Srdivacky 50198090Srdivackyvoid fe25519_setone(fe25519 *r); 51198090Srdivacky 52198090Srdivackyvoid fe25519_setzero(fe25519 *r); 53198090Srdivacky 54198090Srdivackyvoid fe25519_neg(fe25519 *r, const fe25519 *x); 55198090Srdivacky 56198090Srdivackyunsigned char fe25519_getparity(const fe25519 *x); 57198090Srdivacky 58198090Srdivackyvoid fe25519_add(fe25519 *r, const fe25519 *x, const fe25519 *y); 59198090Srdivacky 60198090Srdivackyvoid fe25519_sub(fe25519 *r, const fe25519 *x, const fe25519 *y); 61198090Srdivacky 62198090Srdivackyvoid fe25519_mul(fe25519 *r, const fe25519 *x, const fe25519 *y); 63249423Sdim 64198090Srdivackyvoid fe25519_square(fe25519 *r, const fe25519 *x); 65212904Sdim 66198090Srdivackyvoid fe25519_invert(fe25519 *r, const fe25519 *x); 67198090Srdivacky 68198090Srdivackyvoid fe25519_pow2523(fe25519 *r, const fe25519 *x); 69198090Srdivacky 70198090Srdivacky#endif 71198090Srdivacky