Browse Source

Fix beforenm part.

tags/0.9.0
Vsevolod Stakhov 9 years ago
parent
commit
ca93090f76
2 changed files with 31 additions and 6 deletions
  1. 30
    5
      src/libcryptobox/cryptobox.c
  2. 1
    1
      src/libcryptobox/cryptobox.h

+ 30
- 5
src/libcryptobox/cryptobox.c View File

@@ -26,14 +26,11 @@
#include "chacha20/chacha.h"
#include "poly1305/poly1305-donna.h"
#include "curve25519/curve25519.h"
#include "ottery.h"

unsigned long cpu_config = 0;

static const guchar n0[16] = {0};
static const unsigned char sigma[16] = {
'e', 'x', 'p', 'a', 'n', 'd', ' ', '3', '2',
'-', 'b', 'y', 't', 'e', ' ', 'k'
};

#ifdef HAVE_WEAK_SYMBOLS
__attribute__((weak)) void
@@ -121,7 +118,7 @@ rspamd_cryptobox_keypair (rspamd_pk_t pk, rspamd_sk_t sk)
}

void
rspamd_cryptobox_nm (rspamd_nm_t nm, rspamd_pk_t pk, rspamd_sk_t sk)
rspamd_cryptobox_nm (rspamd_nm_t nm, const rspamd_pk_t pk, const rspamd_sk_t sk)
{
guchar s[rspamd_cryptobox_PKBYTES];

@@ -183,3 +180,31 @@ rspamd_cryptobox_decrypt_nm_inplace (guchar *data, gsize len,

return ret;
}

gboolean
rspamd_cryptobox_decrypt_inplace (guchar *data, gsize len,
const rspamd_nonce_t nonce,
const rspamd_pk_t pk, const rspamd_sk_t sk, const rspamd_sig_t sig)
{
guchar nm[rspamd_cryptobox_NMBYTES];
gboolean ret;

rspamd_cryptobox_nm (nm, pk, sk);
ret = rspamd_cryptobox_decrypt_nm_inplace (data, len, nonce, nm, sig);

rspamd_explicit_memzero (nm, sizeof (nm));

return ret;
}

void
rspamd_cryptobox_encrypt_inplace (guchar *data, gsize len,
const rspamd_nonce_t nonce,
const rspamd_pk_t pk, const rspamd_sk_t sk, rspamd_sig_t sig)
{
guchar nm[rspamd_cryptobox_NMBYTES];

rspamd_cryptobox_nm (nm, pk, sk);
rspamd_cryptobox_encrypt_nm_inplace (data, len, nonce, nm, sig);
rspamd_explicit_memzero (nm, sizeof (nm));
}

+ 1
- 1
src/libcryptobox/cryptobox.h View File

@@ -107,7 +107,7 @@ gboolean rspamd_cryptobox_decrypt_nm_inplace (guchar *data, gsize len,
* @param pk remote pubkey
* @param sk local privkey
*/
void rspamd_cryptobox_nm (rspamd_nm_t nm, rspamd_pk_t pk, rspamd_sk_t sk);
void rspamd_cryptobox_nm (rspamd_nm_t nm, const rspamd_pk_t pk, const rspamd_sk_t sk);

/**
* Securely clear the buffer specified

Loading…
Cancel
Save