1 #ifndef crypto_kx_H 2 #define crypto_kx_H 3 4 #if 0 5 #include <stddef.h> 6 #endif 7 #include "export.h" 8 9 #ifdef __cplusplus 10 # ifdef __GNUC__ 11 # pragma GCC diagnostic ignored "-Wlong-long" 12 # endif 13 extern "C" { 14 #endif 15 16 #define crypto_kx_PUBLICKEYBYTES 32 17 SODIUM_EXPORT 18 size_t crypto_kx_publickeybytes(void); 19 20 #define crypto_kx_SECRETKEYBYTES 32 21 SODIUM_EXPORT 22 size_t crypto_kx_secretkeybytes(void); 23 24 #define crypto_kx_SEEDBYTES 32 25 SODIUM_EXPORT 26 size_t crypto_kx_seedbytes(void); 27 28 #define crypto_kx_SESSIONKEYBYTES 32 29 SODIUM_EXPORT 30 size_t crypto_kx_sessionkeybytes(void); 31 32 #define crypto_kx_PRIMITIVE "x25519blake2b" 33 SODIUM_EXPORT 34 const char *crypto_kx_primitive(void); 35 36 SODIUM_EXPORT 37 int crypto_kx_seed_keypair(unsigned char pk[crypto_kx_PUBLICKEYBYTES], 38 unsigned char sk[crypto_kx_SECRETKEYBYTES], 39 const unsigned char seed[crypto_kx_SEEDBYTES]); 40 41 SODIUM_EXPORT 42 int crypto_kx_keypair(unsigned char pk[crypto_kx_PUBLICKEYBYTES], 43 unsigned char sk[crypto_kx_SECRETKEYBYTES]); 44 45 SODIUM_EXPORT 46 int crypto_kx_client_session_keys(unsigned char rx[crypto_kx_SESSIONKEYBYTES], 47 unsigned char tx[crypto_kx_SESSIONKEYBYTES], 48 const unsigned char client_pk[crypto_kx_PUBLICKEYBYTES], 49 const unsigned char client_sk[crypto_kx_SECRETKEYBYTES], 50 const unsigned char server_pk[crypto_kx_PUBLICKEYBYTES]) 51 __attribute__ ((warn_unused_result)); 52 53 SODIUM_EXPORT 54 int crypto_kx_server_session_keys(unsigned char rx[crypto_kx_SESSIONKEYBYTES], 55 unsigned char tx[crypto_kx_SESSIONKEYBYTES], 56 const unsigned char server_pk[crypto_kx_PUBLICKEYBYTES], 57 const unsigned char server_sk[crypto_kx_SECRETKEYBYTES], 58 const unsigned char client_pk[crypto_kx_PUBLICKEYBYTES]) 59 __attribute__ ((warn_unused_result)); 60 61 #ifdef __cplusplus 62 } 63 #endif 64 65 #endif 66 #ifndef crypto_kx_H 67 #define crypto_kx_H 68 69 #if 0 70 #include <stddef.h> 71 #endif 72 #include "export.h" 73 74 #ifdef __cplusplus 75 # ifdef __GNUC__ 76 # pragma GCC diagnostic ignored "-Wlong-long" 77 # endif 78 extern "C" { 79 #endif 80 81 #define crypto_kx_PUBLICKEYBYTES 32 82 SODIUM_EXPORT 83 size_t crypto_kx_publickeybytes(void); 84 85 #define crypto_kx_SECRETKEYBYTES 32 86 SODIUM_EXPORT 87 size_t crypto_kx_secretkeybytes(void); 88 89 #define crypto_kx_SEEDBYTES 32 90 SODIUM_EXPORT 91 size_t crypto_kx_seedbytes(void); 92 93 #define crypto_kx_SESSIONKEYBYTES 32 94 SODIUM_EXPORT 95 size_t crypto_kx_sessionkeybytes(void); 96 97 #define crypto_kx_PRIMITIVE "x25519blake2b" 98 SODIUM_EXPORT 99 const char *crypto_kx_primitive(void); 100 101 SODIUM_EXPORT 102 int crypto_kx_seed_keypair(unsigned char pk[crypto_kx_PUBLICKEYBYTES], 103 unsigned char sk[crypto_kx_SECRETKEYBYTES], 104 const unsigned char seed[crypto_kx_SEEDBYTES]); 105 106 SODIUM_EXPORT 107 int crypto_kx_keypair(unsigned char pk[crypto_kx_PUBLICKEYBYTES], 108 unsigned char sk[crypto_kx_SECRETKEYBYTES]); 109 110 SODIUM_EXPORT 111 int crypto_kx_client_session_keys(unsigned char rx[crypto_kx_SESSIONKEYBYTES], 112 unsigned char tx[crypto_kx_SESSIONKEYBYTES], 113 const unsigned char client_pk[crypto_kx_PUBLICKEYBYTES], 114 const unsigned char client_sk[crypto_kx_SECRETKEYBYTES], 115 const unsigned char server_pk[crypto_kx_PUBLICKEYBYTES]) 116 __attribute__ ((warn_unused_result)); 117 118 SODIUM_EXPORT 119 int crypto_kx_server_session_keys(unsigned char rx[crypto_kx_SESSIONKEYBYTES], 120 unsigned char tx[crypto_kx_SESSIONKEYBYTES], 121 const unsigned char server_pk[crypto_kx_PUBLICKEYBYTES], 122 const unsigned char server_sk[crypto_kx_SECRETKEYBYTES], 123 const unsigned char client_pk[crypto_kx_PUBLICKEYBYTES]) 124 __attribute__ ((warn_unused_result)); 125 126 #ifdef __cplusplus 127 } 128 #endif 129 130 #endif 131 #ifndef crypto_kx_H 132 #define crypto_kx_H 133 134 #if 0 135 #include <stddef.h> 136 #endif 137 #include "export.h" 138 139 #ifdef __cplusplus 140 # ifdef __GNUC__ 141 # pragma GCC diagnostic ignored "-Wlong-long" 142 # endif 143 extern "C" { 144 #endif 145 146 #define crypto_kx_PUBLICKEYBYTES 32 147 SODIUM_EXPORT 148 size_t crypto_kx_publickeybytes(void); 149 150 #define crypto_kx_SECRETKEYBYTES 32 151 SODIUM_EXPORT 152 size_t crypto_kx_secretkeybytes(void); 153 154 #define crypto_kx_SEEDBYTES 32 155 SODIUM_EXPORT 156 size_t crypto_kx_seedbytes(void); 157 158 #define crypto_kx_SESSIONKEYBYTES 32 159 SODIUM_EXPORT 160 size_t crypto_kx_sessionkeybytes(void); 161 162 #define crypto_kx_PRIMITIVE "x25519blake2b" 163 SODIUM_EXPORT 164 const char *crypto_kx_primitive(void); 165 166 SODIUM_EXPORT 167 int crypto_kx_seed_keypair(unsigned char pk[crypto_kx_PUBLICKEYBYTES], 168 unsigned char sk[crypto_kx_SECRETKEYBYTES], 169 const unsigned char seed[crypto_kx_SEEDBYTES]); 170 171 SODIUM_EXPORT 172 int crypto_kx_keypair(unsigned char pk[crypto_kx_PUBLICKEYBYTES], 173 unsigned char sk[crypto_kx_SECRETKEYBYTES]); 174 175 SODIUM_EXPORT 176 int crypto_kx_client_session_keys(unsigned char rx[crypto_kx_SESSIONKEYBYTES], 177 unsigned char tx[crypto_kx_SESSIONKEYBYTES], 178 const unsigned char client_pk[crypto_kx_PUBLICKEYBYTES], 179 const unsigned char client_sk[crypto_kx_SECRETKEYBYTES], 180 const unsigned char server_pk[crypto_kx_PUBLICKEYBYTES]) 181 __attribute__ ((warn_unused_result)); 182 183 SODIUM_EXPORT 184 int crypto_kx_server_session_keys(unsigned char rx[crypto_kx_SESSIONKEYBYTES], 185 unsigned char tx[crypto_kx_SESSIONKEYBYTES], 186 const unsigned char server_pk[crypto_kx_PUBLICKEYBYTES], 187 const unsigned char server_sk[crypto_kx_SECRETKEYBYTES], 188 const unsigned char client_pk[crypto_kx_PUBLICKEYBYTES]) 189 __attribute__ ((warn_unused_result)); 190 191 #ifdef __cplusplus 192 } 193 #endif 194 195 #endif 196 #ifndef crypto_kx_H 197 #define crypto_kx_H 198 199 #if 0 200 #include <stddef.h> 201 #endif 202 #include "export.h" 203 204 #ifdef __cplusplus 205 # ifdef __GNUC__ 206 # pragma GCC diagnostic ignored "-Wlong-long" 207 # endif 208 extern "C" { 209 #endif 210 211 #define crypto_kx_PUBLICKEYBYTES 32 212 SODIUM_EXPORT 213 size_t crypto_kx_publickeybytes(void); 214 215 #define crypto_kx_SECRETKEYBYTES 32 216 SODIUM_EXPORT 217 size_t crypto_kx_secretkeybytes(void); 218 219 #define crypto_kx_SEEDBYTES 32 220 SODIUM_EXPORT 221 size_t crypto_kx_seedbytes(void); 222 223 #define crypto_kx_SESSIONKEYBYTES 32 224 SODIUM_EXPORT 225 size_t crypto_kx_sessionkeybytes(void); 226 227 #define crypto_kx_PRIMITIVE "x25519blake2b" 228 SODIUM_EXPORT 229 const char *crypto_kx_primitive(void); 230 231 SODIUM_EXPORT 232 int crypto_kx_seed_keypair(unsigned char pk[crypto_kx_PUBLICKEYBYTES], 233 unsigned char sk[crypto_kx_SECRETKEYBYTES], 234 const unsigned char seed[crypto_kx_SEEDBYTES]); 235 236 SODIUM_EXPORT 237 int crypto_kx_keypair(unsigned char pk[crypto_kx_PUBLICKEYBYTES], 238 unsigned char sk[crypto_kx_SECRETKEYBYTES]); 239 240 SODIUM_EXPORT 241 int crypto_kx_client_session_keys(unsigned char rx[crypto_kx_SESSIONKEYBYTES], 242 unsigned char tx[crypto_kx_SESSIONKEYBYTES], 243 const unsigned char client_pk[crypto_kx_PUBLICKEYBYTES], 244 const unsigned char client_sk[crypto_kx_SECRETKEYBYTES], 245 const unsigned char server_pk[crypto_kx_PUBLICKEYBYTES]) 246 __attribute__ ((warn_unused_result)); 247 248 SODIUM_EXPORT 249 int crypto_kx_server_session_keys(unsigned char rx[crypto_kx_SESSIONKEYBYTES], 250 unsigned char tx[crypto_kx_SESSIONKEYBYTES], 251 const unsigned char server_pk[crypto_kx_PUBLICKEYBYTES], 252 const unsigned char server_sk[crypto_kx_SECRETKEYBYTES], 253 const unsigned char client_pk[crypto_kx_PUBLICKEYBYTES]) 254 __attribute__ ((warn_unused_result)); 255 256 #ifdef __cplusplus 257 } 258 #endif 259 260 #endif 261