diff options
| author | Aris Adamantiadis <aris@0xbadc0de.be> | 2014-08-07 09:01:27 +0200 |
|---|---|---|
| committer | Andreas Schneider <asn@cryptomilk.org> | 2014-09-07 21:35:20 +0200 |
| commit | 93e82fa0c0f930609cb6f352b3e5d7c45945bac7 (patch) | |
| tree | 68c2662a04335db58095cb819800e48bc15968a7 /include/libssh/ge25519.h | |
| parent | e9b2d164e0f9c597f55f546b8d62e0c04423fec5 (diff) | |
| download | libssh-93e82fa0c0f930609cb6f352b3e5d7c45945bac7.tar.gz libssh-93e82fa0c0f930609cb6f352b3e5d7c45945bac7.tar.xz libssh-93e82fa0c0f930609cb6f352b3e5d7c45945bac7.zip | |
crypto: Add ed25519 implementation from OpenSSH.
Reviewed-by: Andreas Schneider <asn@cryptomilk.org>
Diffstat (limited to 'include/libssh/ge25519.h')
| -rw-r--r-- | include/libssh/ge25519.h | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/include/libssh/ge25519.h b/include/libssh/ge25519.h new file mode 100644 index 00000000..64f63c6f --- /dev/null +++ b/include/libssh/ge25519.h @@ -0,0 +1,43 @@ +/* $OpenBSD: ge25519.h,v 1.3 2013/12/09 11:03:45 markus Exp $ */ + +/* + * Public Domain, Authors: Daniel J. Bernstein, Niels Duif, Tanja Lange, + * Peter Schwabe, Bo-Yin Yang. + * Copied from supercop-20130419/crypto_sign/ed25519/ref/ge25519.h + */ + +#ifndef GE25519_H +#define GE25519_H + +#include "fe25519.h" +#include "sc25519.h" + +#define ge25519 crypto_sign_ed25519_ref_ge25519 +#define ge25519_base crypto_sign_ed25519_ref_ge25519_base +#define ge25519_unpackneg_vartime crypto_sign_ed25519_ref_unpackneg_vartime +#define ge25519_pack crypto_sign_ed25519_ref_pack +#define ge25519_isneutral_vartime crypto_sign_ed25519_ref_isneutral_vartime +#define ge25519_double_scalarmult_vartime crypto_sign_ed25519_ref_double_scalarmult_vartime +#define ge25519_scalarmult_base crypto_sign_ed25519_ref_scalarmult_base + +typedef struct +{ + fe25519 x; + fe25519 y; + fe25519 z; + fe25519 t; +} ge25519; + +const ge25519 ge25519_base; + +int ge25519_unpackneg_vartime(ge25519 *r, const unsigned char p[32]); + +void ge25519_pack(unsigned char r[32], const ge25519 *p); + +int ge25519_isneutral_vartime(const ge25519 *p); + +void ge25519_double_scalarmult_vartime(ge25519 *r, const ge25519 *p1, const sc25519 *s1, const ge25519 *p2, const sc25519 *s2); + +void ge25519_scalarmult_base(ge25519 *r, const sc25519 *s); + +#endif |
