lilliput-ae-reference-implementation

Implementations of Lilliput-AE submitted to the NIST LWC standardization process
git clone https://git.kevinlegouguec.net/lilliput-ae-reference-implementation
Log | Files | Refs | README

encrypt.c (991B)


      1 #include <stdbool.h>
      2 
      3 #include "crypto_aead.h"
      4 #include "lilliput-ae.h"
      5 
      6 
      7 int crypto_aead_encrypt(
      8     unsigned char *c, unsigned long long *clen,
      9     const unsigned char *m, unsigned long long mlen,
     10     const unsigned char *ad, unsigned long long adlen,
     11     const unsigned char *nsec,
     12     const unsigned char *npub,
     13     const unsigned char *k
     14 )
     15 {
     16     (void)nsec;
     17 
     18     lilliput_ae_encrypt(mlen, m, adlen, ad, k, npub, c, c+mlen);
     19     *clen = mlen + TAG_BYTES;
     20 
     21     return 0;
     22 }
     23 
     24 
     25 int crypto_aead_decrypt(
     26     unsigned char *m, unsigned long long *mlen,
     27     unsigned char *nsec,
     28     const unsigned char *c, unsigned long long clen,
     29     const unsigned char *ad, unsigned long long adlen,
     30     const unsigned char *npub,
     31     const unsigned char *k
     32 )
     33 {
     34     (void)nsec;
     35 
     36     size_t tagless_len = clen-TAG_BYTES;
     37 
     38     bool valid = lilliput_ae_decrypt(
     39         tagless_len, c, adlen, ad, k, npub, c+tagless_len, m
     40     );
     41 
     42     if (!valid)
     43         return -1;
     44 
     45     *mlen = tagless_len;
     46 
     47     return 0;
     48 }