+ precomputed interface for crypto_box()
This commit is contained in:
parent
fab8a0b55f
commit
aaf5fbf2e5
@ -7,7 +7,7 @@
|
||||
#define SODIUM_VERSION_STRING "1.0.1"
|
||||
|
||||
#define SODIUM_LIBRARY_VERSION_MAJOR 7
|
||||
#define SODIUM_LIBRARY_VERSION_MINOR 3
|
||||
#define SODIUM_LIBRARY_VERSION_MINOR 4
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
|
@ -17,9 +17,9 @@ ISODATE=`date +%Y-%m-%d`
|
||||
AC_SUBST(ISODATE)
|
||||
|
||||
SODIUM_LIBRARY_VERSION_MAJOR=7
|
||||
SODIUM_LIBRARY_VERSION_MINOR=3
|
||||
SODIUM_LIBRARY_VERSION_MINOR=4
|
||||
DLL_VERSION=6
|
||||
SODIUM_LIBRARY_VERSION=13:3:0
|
||||
SODIUM_LIBRARY_VERSION=14:0:1
|
||||
# | | |
|
||||
# +------+ | +---+
|
||||
# | | |
|
||||
|
@ -7,6 +7,14 @@
|
||||
#include "crypto_secretbox.h"
|
||||
#include "utils.h"
|
||||
|
||||
int
|
||||
crypto_box_detached_afternm(unsigned char *c, unsigned char *mac,
|
||||
const unsigned char *m, unsigned long long mlen,
|
||||
const unsigned char *n, const unsigned char *k)
|
||||
{
|
||||
return crypto_secretbox_detached(c, mac, m, mlen, n, k);
|
||||
}
|
||||
|
||||
int
|
||||
crypto_box_detached(unsigned char *c, unsigned char *mac,
|
||||
const unsigned char *m, unsigned long long mlen,
|
||||
@ -19,12 +27,24 @@ crypto_box_detached(unsigned char *c, unsigned char *mac,
|
||||
(void) sizeof(int[crypto_box_BEFORENMBYTES >=
|
||||
crypto_secretbox_KEYBYTES ? 1 : -1]);
|
||||
crypto_box_beforenm(k, pk, sk);
|
||||
ret = crypto_secretbox_detached(c, mac, m, mlen, n, k);
|
||||
ret = crypto_box_detached_afternm(c, mac, m, mlen, n, k);
|
||||
sodium_memzero(k, sizeof k);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
int
|
||||
crypto_box_easy_afternm(unsigned char *c, const unsigned char *m,
|
||||
unsigned long long mlen, const unsigned char *n,
|
||||
const unsigned char *k)
|
||||
{
|
||||
if (mlen > SIZE_MAX - crypto_box_MACBYTES) {
|
||||
return -1;
|
||||
}
|
||||
return crypto_box_detached_afternm(c + crypto_box_MACBYTES, c, m, mlen, n,
|
||||
k);
|
||||
}
|
||||
|
||||
int
|
||||
crypto_box_easy(unsigned char *c, const unsigned char *m,
|
||||
unsigned long long mlen, const unsigned char *n,
|
||||
@ -37,6 +57,15 @@ crypto_box_easy(unsigned char *c, const unsigned char *m,
|
||||
pk, sk);
|
||||
}
|
||||
|
||||
int
|
||||
crypto_box_open_detached_afternm(unsigned char *m, const unsigned char *c,
|
||||
const unsigned char *mac,
|
||||
unsigned long long clen, const unsigned char *n,
|
||||
const unsigned char *k)
|
||||
{
|
||||
return crypto_secretbox_open_detached(m, c, mac, clen, n, k);
|
||||
}
|
||||
|
||||
int
|
||||
crypto_box_open_detached(unsigned char *m, const unsigned char *c,
|
||||
const unsigned char *mac,
|
||||
@ -47,12 +76,25 @@ crypto_box_open_detached(unsigned char *m, const unsigned char *c,
|
||||
int ret;
|
||||
|
||||
crypto_box_beforenm(k, pk, sk);
|
||||
ret = crypto_secretbox_open_detached(m, c, mac, clen, n, k);
|
||||
ret = crypto_box_open_detached_afternm(m, c, mac, clen, n, k);
|
||||
sodium_memzero(k, sizeof k);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
int
|
||||
crypto_box_open_easy_afternm(unsigned char *m, const unsigned char *c,
|
||||
unsigned long long clen, const unsigned char *n,
|
||||
const unsigned char *k)
|
||||
{
|
||||
if (clen < crypto_box_MACBYTES) {
|
||||
return -1;
|
||||
}
|
||||
return crypto_box_open_detached_afternm(m, c + crypto_box_MACBYTES, c,
|
||||
clen - crypto_box_MACBYTES,
|
||||
n, k);
|
||||
}
|
||||
|
||||
int
|
||||
crypto_box_open_easy(unsigned char *m, const unsigned char *c,
|
||||
unsigned long long clen, const unsigned char *n,
|
||||
|
@ -32,22 +32,10 @@ size_t crypto_box_publickeybytes(void);
|
||||
SODIUM_EXPORT
|
||||
size_t crypto_box_secretkeybytes(void);
|
||||
|
||||
#define crypto_box_BEFORENMBYTES crypto_box_curve25519xsalsa20poly1305_BEFORENMBYTES
|
||||
SODIUM_EXPORT
|
||||
size_t crypto_box_beforenmbytes(void);
|
||||
|
||||
#define crypto_box_NONCEBYTES crypto_box_curve25519xsalsa20poly1305_NONCEBYTES
|
||||
SODIUM_EXPORT
|
||||
size_t crypto_box_noncebytes(void);
|
||||
|
||||
#define crypto_box_ZEROBYTES crypto_box_curve25519xsalsa20poly1305_ZEROBYTES
|
||||
SODIUM_EXPORT
|
||||
size_t crypto_box_zerobytes(void);
|
||||
|
||||
#define crypto_box_BOXZEROBYTES crypto_box_curve25519xsalsa20poly1305_BOXZEROBYTES
|
||||
SODIUM_EXPORT
|
||||
size_t crypto_box_boxzerobytes(void);
|
||||
|
||||
#define crypto_box_MACBYTES crypto_box_curve25519xsalsa20poly1305_MACBYTES
|
||||
SODIUM_EXPORT
|
||||
size_t crypto_box_macbytes(void);
|
||||
@ -63,30 +51,6 @@ int crypto_box_seed_keypair(unsigned char *pk, unsigned char *sk,
|
||||
SODIUM_EXPORT
|
||||
int crypto_box_keypair(unsigned char *pk, unsigned char *sk);
|
||||
|
||||
SODIUM_EXPORT
|
||||
int crypto_box_beforenm(unsigned char *k, const unsigned char *pk,
|
||||
const unsigned char *sk);
|
||||
|
||||
SODIUM_EXPORT
|
||||
int crypto_box_afternm(unsigned char *c, const unsigned char *m,
|
||||
unsigned long long mlen, const unsigned char *n,
|
||||
const unsigned char *k);
|
||||
|
||||
SODIUM_EXPORT
|
||||
int crypto_box_open_afternm(unsigned char *m, const unsigned char *c,
|
||||
unsigned long long clen, const unsigned char *n,
|
||||
const unsigned char *k);
|
||||
|
||||
SODIUM_EXPORT
|
||||
int crypto_box(unsigned char *c, const unsigned char *m,
|
||||
unsigned long long mlen, const unsigned char *n,
|
||||
const unsigned char *pk, const unsigned char *sk);
|
||||
|
||||
SODIUM_EXPORT
|
||||
int crypto_box_open(unsigned char *m, const unsigned char *c,
|
||||
unsigned long long clen, const unsigned char *n,
|
||||
const unsigned char *pk, const unsigned char *sk);
|
||||
|
||||
SODIUM_EXPORT
|
||||
int crypto_box_easy(unsigned char *c, const unsigned char *m,
|
||||
unsigned long long mlen, const unsigned char *n,
|
||||
@ -110,6 +74,67 @@ int crypto_box_open_detached(unsigned char *m, const unsigned char *c,
|
||||
const unsigned char *n,
|
||||
const unsigned char *pk,
|
||||
const unsigned char *sk);
|
||||
|
||||
/* -- Precomputation interface -- */
|
||||
|
||||
#define crypto_box_BEFORENMBYTES crypto_box_curve25519xsalsa20poly1305_BEFORENMBYTES
|
||||
SODIUM_EXPORT
|
||||
size_t crypto_box_beforenmbytes(void);
|
||||
|
||||
SODIUM_EXPORT
|
||||
int crypto_box_beforenm(unsigned char *k, const unsigned char *pk,
|
||||
const unsigned char *sk);
|
||||
|
||||
SODIUM_EXPORT
|
||||
int crypto_box_easy_afternm(unsigned char *c, const unsigned char *m,
|
||||
unsigned long long mlen, const unsigned char *n,
|
||||
const unsigned char *k);
|
||||
|
||||
SODIUM_EXPORT
|
||||
int crypto_box_open_easy_afternm(unsigned char *m, const unsigned char *c,
|
||||
unsigned long long clen, const unsigned char *n,
|
||||
const unsigned char *k);
|
||||
|
||||
SODIUM_EXPORT
|
||||
int crypto_box_detached_afternm(unsigned char *c, unsigned char *mac,
|
||||
const unsigned char *m, unsigned long long mlen,
|
||||
const unsigned char *n, const unsigned char *k);
|
||||
|
||||
SODIUM_EXPORT
|
||||
int crypto_box_open_detached_afternm(unsigned char *m, const unsigned char *c,
|
||||
const unsigned char *mac,
|
||||
unsigned long long clen, const unsigned char *n,
|
||||
const unsigned char *k);
|
||||
|
||||
/* -- Compatibility layer with NaCl -- */
|
||||
|
||||
#define crypto_box_ZEROBYTES crypto_box_curve25519xsalsa20poly1305_ZEROBYTES
|
||||
SODIUM_EXPORT
|
||||
size_t crypto_box_zerobytes(void);
|
||||
|
||||
#define crypto_box_BOXZEROBYTES crypto_box_curve25519xsalsa20poly1305_BOXZEROBYTES
|
||||
SODIUM_EXPORT
|
||||
size_t crypto_box_boxzerobytes(void);
|
||||
|
||||
SODIUM_EXPORT
|
||||
int crypto_box(unsigned char *c, const unsigned char *m,
|
||||
unsigned long long mlen, const unsigned char *n,
|
||||
const unsigned char *pk, const unsigned char *sk);
|
||||
|
||||
SODIUM_EXPORT
|
||||
int crypto_box_open(unsigned char *m, const unsigned char *c,
|
||||
unsigned long long clen, const unsigned char *n,
|
||||
const unsigned char *pk, const unsigned char *sk);
|
||||
|
||||
SODIUM_EXPORT
|
||||
int crypto_box_afternm(unsigned char *c, const unsigned char *m,
|
||||
unsigned long long mlen, const unsigned char *n,
|
||||
const unsigned char *k);
|
||||
|
||||
SODIUM_EXPORT
|
||||
int crypto_box_open_afternm(unsigned char *m, const unsigned char *c,
|
||||
unsigned long long clen, const unsigned char *n,
|
||||
const unsigned char *k);
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
Loading…
Reference in New Issue
Block a user