gnunet-android

GNUnet for Android
Log | Files | Refs | README

crypto_core_ed25519.h (2927B)


      1 #ifndef crypto_core_ed25519_H
      2 #define crypto_core_ed25519_H
      3 
      4 #include <stddef.h>
      5 #include "export.h"
      6 
      7 #ifdef __cplusplus
      8 extern "C" {
      9 #endif
     10 
     11 #define crypto_core_ed25519_BYTES 32
     12 SODIUM_EXPORT
     13 size_t crypto_core_ed25519_bytes(void);
     14 
     15 #define crypto_core_ed25519_UNIFORMBYTES 32
     16 SODIUM_EXPORT
     17 size_t crypto_core_ed25519_uniformbytes(void);
     18 
     19 #define crypto_core_ed25519_HASHBYTES 64
     20 SODIUM_EXPORT
     21 size_t crypto_core_ed25519_hashbytes(void);
     22 
     23 #define crypto_core_ed25519_SCALARBYTES 32
     24 SODIUM_EXPORT
     25 size_t crypto_core_ed25519_scalarbytes(void);
     26 
     27 #define crypto_core_ed25519_NONREDUCEDSCALARBYTES 64
     28 SODIUM_EXPORT
     29 size_t crypto_core_ed25519_nonreducedscalarbytes(void);
     30 
     31 SODIUM_EXPORT
     32 int crypto_core_ed25519_is_valid_point(const unsigned char *p)
     33             __attribute__ ((nonnull));
     34 
     35 SODIUM_EXPORT
     36 int crypto_core_ed25519_add(unsigned char *r,
     37                             const unsigned char *p, const unsigned char *q)
     38             __attribute__ ((nonnull));
     39 
     40 SODIUM_EXPORT
     41 int crypto_core_ed25519_sub(unsigned char *r,
     42                             const unsigned char *p, const unsigned char *q)
     43             __attribute__ ((nonnull));
     44 
     45 SODIUM_EXPORT
     46 int crypto_core_ed25519_from_uniform(unsigned char *p, const unsigned char *r)
     47             __attribute__ ((nonnull));
     48 
     49 SODIUM_EXPORT
     50 int crypto_core_ed25519_from_hash(unsigned char *p, const unsigned char *h)
     51             __attribute__ ((nonnull)) __attribute__ ((deprecated));
     52 
     53 SODIUM_EXPORT
     54 void crypto_core_ed25519_random(unsigned char *p)
     55             __attribute__ ((nonnull));
     56 
     57 SODIUM_EXPORT
     58 void crypto_core_ed25519_scalar_random(unsigned char *r)
     59             __attribute__ ((nonnull));
     60 
     61 SODIUM_EXPORT
     62 int crypto_core_ed25519_scalar_invert(unsigned char *recip, const unsigned char *s)
     63             __attribute__ ((nonnull));
     64 
     65 SODIUM_EXPORT
     66 void crypto_core_ed25519_scalar_negate(unsigned char *neg, const unsigned char *s)
     67             __attribute__ ((nonnull));
     68 
     69 SODIUM_EXPORT
     70 void crypto_core_ed25519_scalar_complement(unsigned char *comp, const unsigned char *s)
     71             __attribute__ ((nonnull));
     72 
     73 SODIUM_EXPORT
     74 void crypto_core_ed25519_scalar_add(unsigned char *z, const unsigned char *x,
     75                                     const unsigned char *y)
     76             __attribute__ ((nonnull));
     77 
     78 SODIUM_EXPORT
     79 void crypto_core_ed25519_scalar_sub(unsigned char *z, const unsigned char *x,
     80                                     const unsigned char *y)
     81             __attribute__ ((nonnull));
     82 
     83 SODIUM_EXPORT
     84 void crypto_core_ed25519_scalar_mul(unsigned char *z, const unsigned char *x,
     85                                     const unsigned char *y)
     86             __attribute__ ((nonnull));
     87 
     88 /*
     89  * The interval `s` is sampled from should be at least 317 bits to ensure almost
     90  * uniformity of `r` over `L`.
     91  */
     92 SODIUM_EXPORT
     93 void crypto_core_ed25519_scalar_reduce(unsigned char *r, const unsigned char *s)
     94             __attribute__ ((nonnull));
     95 
     96 #ifdef __cplusplus
     97 }
     98 #endif
     99 
    100 #endif