summaryrefslogtreecommitdiff
path: root/nist/encrypt.c
diff options
context:
space:
mode:
authorKévin Le Gouguec <kevin.legouguec@airbus.com>2018-11-29 14:48:22 +0100
committerKévin Le Gouguec <kevin.legouguec@airbus.com>2018-11-29 14:49:27 +0100
commitffd17baa2f156d90f854e72eee374f0bc5abc99e (patch)
tree61d3cd9c94520be4c34261f11912fcf805a05d84 /nist/encrypt.c
parent65a052061b6621ef77b90b3e1ed7f85356f1d0bb (diff)
downloadlilliput-ae-implem-ffd17baa2f156d90f854e72eee374f0bc5abc99e.tar.xz
Ajout d'un script de génération de livraison pour le NIST
Diffstat (limited to 'nist/encrypt.c')
-rw-r--r--nist/encrypt.c48
1 files changed, 48 insertions, 0 deletions
diff --git a/nist/encrypt.c b/nist/encrypt.c
new file mode 100644
index 0000000..a33a2f5
--- /dev/null
+++ b/nist/encrypt.c
@@ -0,0 +1,48 @@
+#include <stdbool.h>
+
+#include "crypto_aead.h"
+#include "lilliput-ae.h"
+
+
+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;
+
+ lilliput_ae_encrypt(mlen, m, adlen, ad, k, npub, c, c+mlen);
+ *clen = mlen + TAG_BYTES;
+
+ return 0;
+}
+
+
+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;
+
+ size_t tagless_len = clen-TAG_BYTES;
+
+ bool valid = lilliput_ae_decrypt(
+ tagless_len, c, adlen, ad, k, npub, c+tagless_len, m
+ );
+
+ if (!valid)
+ return 1;
+
+ *mlen = tagless_len;
+
+ return 0;
+}