mirror of
https://github.com/cathugger/mkp224o.git
synced 2025-12-05 21:27:13 -06:00
fix amd64 asm stuff calling on windows
This commit is contained in:
10
ed25519/amd64-51-30k/compat.h
Normal file
10
ed25519/amd64-51-30k/compat.h
Normal file
@@ -0,0 +1,10 @@
|
||||
#ifndef COMPAT_H
|
||||
#define COMPAT_H
|
||||
|
||||
#if defined(_WIN32) && defined(__GNUC__)
|
||||
#define SYSVABI __attribute__((sysv_abi))
|
||||
#else
|
||||
#define SYSVABI
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@@ -2,6 +2,7 @@
|
||||
#define FE25519_H
|
||||
|
||||
#include <stddef.h>
|
||||
#include "compat.h"
|
||||
|
||||
#define fe25519 CRYPTO_NAMESPACE(batch_fe25519)
|
||||
#define fe25519_freeze CRYPTO_NAMESPACE(batch_fe25519_freeze)
|
||||
@@ -29,7 +30,7 @@ typedef struct
|
||||
}
|
||||
fe25519;
|
||||
|
||||
void fe25519_freeze(fe25519 *r);
|
||||
void fe25519_freeze(fe25519 *r) SYSVABI;
|
||||
|
||||
void fe25519_unpack(fe25519 *r, const unsigned char x[32]);
|
||||
|
||||
@@ -53,13 +54,13 @@ void fe25519_add(fe25519 *r, const fe25519 *x, const fe25519 *y);
|
||||
|
||||
void fe25519_sub(fe25519 *r, const fe25519 *x, const fe25519 *y);
|
||||
|
||||
void fe25519_mul(fe25519 *r, const fe25519 *x, const fe25519 *y);
|
||||
void fe25519_mul(fe25519 *r, const fe25519 *x, const fe25519 *y) SYSVABI;
|
||||
|
||||
void fe25519_mul121666(fe25519 *r, const fe25519 *x);
|
||||
|
||||
void fe25519_square(fe25519 *r, const fe25519 *x);
|
||||
void fe25519_square(fe25519 *r, const fe25519 *x) SYSVABI;
|
||||
|
||||
void fe25519_nsquare(fe25519 *r, unsigned long long n);
|
||||
void fe25519_nsquare(fe25519 *r, unsigned long long n) SYSVABI;
|
||||
|
||||
void fe25519_invert(fe25519 *r, const fe25519 *x);
|
||||
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
|
||||
#include "fe25519.h"
|
||||
#include "sc25519.h"
|
||||
#include "compat.h"
|
||||
|
||||
#define ge25519 CRYPTO_NAMESPACE(batch_ge25519)
|
||||
#define ge25519_base CRYPTO_NAMESPACE(batch_ge25519_base)
|
||||
@@ -28,7 +29,6 @@
|
||||
#define ge25519_add_p1p1 CRYPTO_NAMESPACE(batch_ge25519_add_p1p1)
|
||||
#define ge25519_dbl_p1p1 CRYPTO_NAMESPACE(batch_ge25519_dbl_p1p1)
|
||||
#define choose_t CRYPTO_NAMESPACE(batch_choose_t)
|
||||
#define choose_t_smultq CRYPTO_NAMESPACE(batch_choose_t_smultq)
|
||||
#define ge25519_nielsadd2 CRYPTO_NAMESPACE(batch_ge25519_nielsadd2)
|
||||
#define ge25519_nielsadd_p1p1 CRYPTO_NAMESPACE(batch_ge25519_nielsadd_p1p1)
|
||||
#define ge25519_pnielsadd_p1p1 CRYPTO_NAMESPACE(batch_ge25519_pnielsadd_p1p1)
|
||||
@@ -75,16 +75,15 @@ typedef struct
|
||||
|
||||
typedef unsigned char bytes32[32];
|
||||
|
||||
extern void ge25519_p1p1_to_p2(ge25519_p2 *r, const ge25519_p1p1 *p);
|
||||
extern void ge25519_p1p1_to_p3(ge25519_p3 *r, const ge25519_p1p1 *p);
|
||||
extern void ge25519_p1p1_to_pniels(ge25519_pniels *r, const ge25519_p1p1 *p);
|
||||
extern void ge25519_add_p1p1(ge25519_p1p1 *r, const ge25519_p3 *p, const ge25519_p3 *q);
|
||||
extern void ge25519_dbl_p1p1(ge25519_p1p1 *r, const ge25519_p2 *p);
|
||||
extern void choose_t(ge25519_niels *t, unsigned long long pos, signed long long b, const ge25519_niels *base_multiples);
|
||||
extern void choose_t_smultq(ge25519_pniels *t, signed long long b, const ge25519_pniels *pre);
|
||||
extern void ge25519_nielsadd2(ge25519_p3 *r, const ge25519_niels *q);
|
||||
extern void ge25519_nielsadd_p1p1(ge25519_p1p1 *r, const ge25519_p3 *p, const ge25519_niels *q);
|
||||
extern void ge25519_pnielsadd_p1p1(ge25519_p1p1 *r, const ge25519_p3 *p, const ge25519_pniels *q);
|
||||
extern void ge25519_p1p1_to_p2(ge25519_p2 *r, const ge25519_p1p1 *p) SYSVABI;
|
||||
extern void ge25519_p1p1_to_p3(ge25519_p3 *r, const ge25519_p1p1 *p) SYSVABI;
|
||||
extern void ge25519_p1p1_to_pniels(ge25519_pniels *r, const ge25519_p1p1 *p) SYSVABI;
|
||||
extern void ge25519_add_p1p1(ge25519_p1p1 *r, const ge25519_p3 *p, const ge25519_p3 *q) SYSVABI;
|
||||
extern void ge25519_dbl_p1p1(ge25519_p1p1 *r, const ge25519_p2 *p) SYSVABI;
|
||||
extern void choose_t(ge25519_niels *t, unsigned long long pos, signed long long b, const ge25519_niels *base_multiples) SYSVABI;
|
||||
extern void ge25519_nielsadd2(ge25519_p3 *r, const ge25519_niels *q) SYSVABI;
|
||||
extern void ge25519_nielsadd_p1p1(ge25519_p1p1 *r, const ge25519_p3 *p, const ge25519_niels *q) SYSVABI;
|
||||
extern void ge25519_pnielsadd_p1p1(ge25519_p1p1 *r, const ge25519_p3 *p, const ge25519_pniels *q) SYSVABI;
|
||||
|
||||
extern const ge25519 ge25519_base;
|
||||
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
#define INDEX_HEAP_H
|
||||
|
||||
#include "sc25519.h"
|
||||
#include "compat.h"
|
||||
|
||||
#define heap_init CRYPTO_NAMESPACE(batch_heap_init)
|
||||
#define heap_extend CRYPTO_NAMESPACE(batch_heap_extend)
|
||||
@@ -23,9 +24,9 @@ void heap_push(unsigned long long *h, unsigned long long *hlen, unsigned long lo
|
||||
|
||||
void heap_get2max(unsigned long long *h, unsigned long long *max1, unsigned long long *max2, sc25519 *scalars);
|
||||
|
||||
void heap_rootreplaced(unsigned long long *h, unsigned long long hlen, sc25519 *scalars);
|
||||
void heap_rootreplaced_3limbs(unsigned long long *h, unsigned long long hlen, sc25519 *scalars);
|
||||
void heap_rootreplaced_2limbs(unsigned long long *h, unsigned long long hlen, sc25519 *scalars);
|
||||
void heap_rootreplaced_1limb(unsigned long long *h, unsigned long long hlen, sc25519 *scalars);
|
||||
void heap_rootreplaced(unsigned long long *h, unsigned long long hlen, sc25519 *scalars) SYSVABI;
|
||||
void heap_rootreplaced_3limbs(unsigned long long *h, unsigned long long hlen, sc25519 *scalars) SYSVABI;
|
||||
void heap_rootreplaced_2limbs(unsigned long long *h, unsigned long long hlen, sc25519 *scalars) SYSVABI;
|
||||
void heap_rootreplaced_1limb(unsigned long long *h, unsigned long long hlen, sc25519 *scalars) SYSVABI;
|
||||
|
||||
#endif
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
#ifndef SC25519_H
|
||||
#define SC25519_H
|
||||
|
||||
#include "compat.h"
|
||||
|
||||
#define sc25519 CRYPTO_NAMESPACE(batch_sc25519)
|
||||
#define shortsc25519 CRYPTO_NAMESPACE(batch_shortsc25519)
|
||||
#define sc25519_from32bytes CRYPTO_NAMESPACE(batch_sc25519_from32bytes)
|
||||
@@ -21,15 +23,15 @@
|
||||
#define sc25519_2interleave2 CRYPTO_NAMESPACE(batch_sc25519_2interleave2)
|
||||
#define sc25519_barrett CRYPTO_NAMESPACE(batch_sc25519_barrett)
|
||||
|
||||
typedef struct
|
||||
typedef struct
|
||||
{
|
||||
unsigned long long v[4];
|
||||
unsigned long long v[4];
|
||||
}
|
||||
sc25519;
|
||||
|
||||
typedef struct
|
||||
typedef struct
|
||||
{
|
||||
unsigned long long v[2];
|
||||
unsigned long long v[2];
|
||||
}
|
||||
shortsc25519;
|
||||
|
||||
@@ -43,11 +45,11 @@ void sc25519_to32bytes(unsigned char r[32], const sc25519 *x);
|
||||
|
||||
int sc25519_iszero_vartime(const sc25519 *x);
|
||||
|
||||
int sc25519_lt(const sc25519 *x, const sc25519 *y);
|
||||
int sc25519_lt(const sc25519 *x, const sc25519 *y) SYSVABI;
|
||||
|
||||
void sc25519_add(sc25519 *r, const sc25519 *x, const sc25519 *y);
|
||||
void sc25519_add(sc25519 *r, const sc25519 *x, const sc25519 *y) SYSVABI;
|
||||
|
||||
void sc25519_sub_nored(sc25519 *r, const sc25519 *x, const sc25519 *y);
|
||||
void sc25519_sub_nored(sc25519 *r, const sc25519 *x, const sc25519 *y) SYSVABI;
|
||||
|
||||
void sc25519_mul(sc25519 *r, const sc25519 *x, const sc25519 *y);
|
||||
|
||||
@@ -64,6 +66,6 @@ void sc25519_slide(signed char r[256], const sc25519 *s, int swindowsize);
|
||||
|
||||
void sc25519_2interleave2(unsigned char r[127], const sc25519 *s1, const sc25519 *s2);
|
||||
|
||||
void sc25519_barrett(sc25519 *r, unsigned long long x[8]);
|
||||
void sc25519_barrett(sc25519 *r, unsigned long long x[8]) SYSVABI;
|
||||
|
||||
#endif
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
#include "sc25519.h"
|
||||
#include "compat.h"
|
||||
|
||||
#define ull4_mul CRYPTO_NAMESPACE(batch_ull4_mul)
|
||||
|
||||
extern void ull4_mul(unsigned long long r[8], const unsigned long long x[4], const unsigned long long y[4]);
|
||||
extern void ull4_mul(unsigned long long r[8], const unsigned long long x[4], const unsigned long long y[4]) SYSVABI;
|
||||
|
||||
void sc25519_mul(sc25519 *r, const sc25519 *x, const sc25519 *y)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user