encrypt.c 1.78 KB
Newer Older
lwc-tester committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
/**
 * The implementation of the CAESAR encrypt/decrypt interface
 */

#include "saef.h"
#include "api.h"
#include "crypto_aead.h"


/**
 * The CAESAR encrypt interface
 * @param c A pointer to buffer for CT
 * @param clen Ciphertext length in Bytes
 * @param k The secret key
 * @param m A pointer to the PT
 * @param mlen Plaintext length in Bytes
 * @param ad A pointer to associated data
 * @param adlen Length of associated data in Bytes
 * @param npub A pointer to the nonce
 * @param nsec A pointer to secret message number (ignored)
 */

int crypto_aead_encrypt(
			unsigned char *c,unsigned long long *clen,
			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
			) {
   (void)nsec;

   int res = saef_encrypt(c, m, mlen, ad, adlen, npub, k);
    *clen = mlen + CRYPTO_ABYTES;

   if (res != -1)
      *clen = mlen + CRYPTO_ABYTES;

   return res;
}

/**
 * The CAESAR decrypt interface
 * @param c A pointer to buffer for CT
 * @param clen Ciphertext length in Bytes
 * @param k The secret key
 * @param m A pointer to the PT
 * @param mlen Plaintext length in Bytes
 * @param ad A pointer to associated data
 * @param adlen Length of associated data  in Bytes
 * @param npub A pointer to the nonce
 * @param nsec A pointer to secret message number (ignored)
 */
int crypto_aead_decrypt(
			unsigned char *m,unsigned long long *mlen,
			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
			) {
   (void)nsec;

   int res = saef_decrypt(m, c, clen, ad, adlen, npub, k);

   if (res != -1)
      *mlen = clen - CRYPTO_ABYTES;

   return res;
}