This commit is contained in:
Frank DENIS
2016-12-24 02:24:24 +01:00
parent 6abad20323
commit 24fd77ded3
2 changed files with 55 additions and 55 deletions
@@ -23,14 +23,15 @@ crypto_aead_xchacha20poly1305_encrypt_detached(unsigned char *c,
const unsigned char *npub,
const unsigned char *k)
{
int ret;
unsigned char k2[crypto_core_hchacha20_OUTPUTBYTES];
int ret;
crypto_core_hchacha20(k2, npub, k, NULL);
ret = crypto_aead_chacha20poly1305_encrypt_detached(c,
mac, maclen_p, m, mlen, ad, adlen, nsec,
npub + crypto_core_hchacha20_INPUTBYTES, k2);
ret = crypto_aead_chacha20poly1305_encrypt_detached
(c, mac, maclen_p, m, mlen, ad, adlen, nsec,
npub + crypto_core_hchacha20_INPUTBYTES, k2);
sodium_memzero(k2, crypto_core_hchacha20_OUTPUTBYTES);
return ret;
}
@@ -76,14 +77,15 @@ crypto_aead_xchacha20poly1305_decrypt_detached(unsigned char *m,
const unsigned char *npub,
const unsigned char *k)
{
int ret;
unsigned char k2[crypto_core_hchacha20_OUTPUTBYTES];
int ret;
crypto_core_hchacha20(k2, npub, k, NULL);
ret = crypto_aead_chacha20poly1305_decrypt_detached(m,
nsec, c, clen, mac, ad, adlen,
npub + crypto_core_hchacha20_INPUTBYTES, k2);
ret = crypto_aead_chacha20poly1305_decrypt_detached
(m, nsec, c, clen, mac, ad, adlen,
npub + crypto_core_hchacha20_INPUTBYTES, k2);
sodium_memzero(k2, crypto_core_hchacha20_OUTPUTBYTES);
return ret;
}
@@ -130,16 +132,16 @@ crypto_aead_xchacha20poly1305_ietf_encrypt_detached(unsigned char *c,
const unsigned char *npub,
const unsigned char *k)
{
int ret;
unsigned char k2[crypto_core_hchacha20_OUTPUTBYTES];
unsigned char npub2[crypto_aead_chacha20poly1305_ietf_NPUBBYTES] = { 0 };
int ret;
crypto_core_hchacha20(k2, npub, k, NULL);
memcpy(npub2 + 4, npub + crypto_core_hchacha20_INPUTBYTES, crypto_aead_chacha20poly1305_ietf_NPUBBYTES - 4);
ret = crypto_aead_chacha20poly1305_ietf_encrypt_detached(c,
mac, maclen_p, m, mlen, ad, adlen, nsec,
npub2, k2);
ret = crypto_aead_chacha20poly1305_ietf_encrypt_detached
(c, mac, maclen_p, m, mlen, ad, adlen, nsec, npub2, k2);
sodium_memzero(k2, crypto_core_hchacha20_OUTPUTBYTES);
return ret;
}
@@ -160,11 +162,8 @@ crypto_aead_xchacha20poly1305_ietf_encrypt(unsigned char *c,
if (mlen > UINT64_MAX - crypto_aead_xchacha20poly1305_ietf_ABYTES) {
abort(); /* LCOV_EXCL_LINE */
}
ret = crypto_aead_xchacha20poly1305_ietf_encrypt_detached(c,
c + mlen, NULL,
m, mlen,
ad, adlen,
nsec, npub, k);
ret = crypto_aead_xchacha20poly1305_ietf_encrypt_detached
(c, c + mlen, NULL, m, mlen, ad, adlen, nsec, npub, k);
if (clen_p != NULL) {
if (ret == 0) {
clen = mlen + crypto_aead_xchacha20poly1305_ietf_ABYTES;
@@ -185,16 +184,17 @@ crypto_aead_xchacha20poly1305_ietf_decrypt_detached(unsigned char *m,
const unsigned char *npub,
const unsigned char *k)
{
int ret;
unsigned char k2[crypto_core_hchacha20_OUTPUTBYTES];
unsigned char npub2[crypto_aead_chacha20poly1305_ietf_NPUBBYTES] = { 0 };
int ret;
crypto_core_hchacha20(k2, npub, k, NULL);
memcpy(npub2 + 4, npub + crypto_core_hchacha20_INPUTBYTES, crypto_aead_chacha20poly1305_ietf_NPUBBYTES - 4);
ret = crypto_aead_chacha20poly1305_ietf_decrypt_detached(m,
nsec, c, clen, mac, ad, adlen,
npub2, k2);
memcpy(npub2 + 4, npub + crypto_core_hchacha20_INPUTBYTES,
crypto_aead_chacha20poly1305_ietf_NPUBBYTES - 4);
ret = crypto_aead_chacha20poly1305_ietf_decrypt_detached
(m, nsec, c, clen, mac, ad, adlen, npub2, k2);
sodium_memzero(k2, crypto_core_hchacha20_OUTPUTBYTES);
return ret;
}
@@ -92,49 +92,49 @@ int crypto_aead_xchacha20poly1305_decrypt_detached(unsigned char *m,
SODIUM_EXPORT
int crypto_aead_xchacha20poly1305_ietf_encrypt(unsigned char *c,
unsigned long long *clen_p,
const unsigned char *m,
unsigned long long mlen,
const unsigned char *ad,
unsigned long long adlen,
const unsigned char *nsec,
const unsigned char *npub,
const unsigned char *k);
unsigned long long *clen_p,
const unsigned char *m,
unsigned long long mlen,
const unsigned char *ad,
unsigned long long adlen,
const unsigned char *nsec,
const unsigned char *npub,
const unsigned char *k);
SODIUM_EXPORT
int crypto_aead_xchacha20poly1305_ietf_decrypt(unsigned char *m,
unsigned long long *mlen_p,
unsigned char *nsec,
const unsigned char *c,
unsigned long long clen,
const unsigned char *ad,
unsigned long long adlen,
const unsigned char *npub,
const unsigned char *k)
unsigned long long *mlen_p,
unsigned char *nsec,
const unsigned char *c,
unsigned long long clen,
const unsigned char *ad,
unsigned long long adlen,
const unsigned char *npub,
const unsigned char *k)
__attribute__ ((warn_unused_result));
SODIUM_EXPORT
int crypto_aead_xchacha20poly1305_ietf_encrypt_detached(unsigned char *c,
unsigned char *mac,
unsigned long long *maclen_p,
const unsigned char *m,
unsigned long long mlen,
const unsigned char *ad,
unsigned long long adlen,
const unsigned char *nsec,
const unsigned char *npub,
const unsigned char *k);
unsigned char *mac,
unsigned long long *maclen_p,
const unsigned char *m,
unsigned long long mlen,
const unsigned char *ad,
unsigned long long adlen,
const unsigned char *nsec,
const unsigned char *npub,
const unsigned char *k);
SODIUM_EXPORT
int crypto_aead_xchacha20poly1305_ietf_decrypt_detached(unsigned char *m,
unsigned char *nsec,
const unsigned char *c,
unsigned long long clen,
const unsigned char *mac,
const unsigned char *ad,
unsigned long long adlen,
const unsigned char *npub,
const unsigned char *k)
unsigned char *nsec,
const unsigned char *c,
unsigned long long clen,
const unsigned char *mac,
const unsigned char *ad,
unsigned long long adlen,
const unsigned char *npub,
const unsigned char *k)
__attribute__ ((warn_unused_result));
/* Aliases */