summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/lilliput-ae-ii.c56
1 files changed, 56 insertions, 0 deletions
diff --git a/src/lilliput-ae-ii.c b/src/lilliput-ae-ii.c
index 9b156c7..23ff27e 100644
--- a/src/lilliput-ae-ii.c
+++ b/src/lilliput-ae-ii.c
@@ -6,6 +6,49 @@
#include "lilliput-ae.h"
+static void _process_associated_data(
+ const uint8_t key[KEY_BYTES],
+ size_t A_len,
+ const uint8_t A[A_len],
+ uint8_t Auth[BLOCK_BYTES]
+)
+{
+}
+
+static void _generate_tag(
+ const uint8_t key[KEY_BYTES],
+ size_t M_len,
+ const uint8_t M[M_len],
+ const uint8_t N[NONCE_BYTES],
+ const uint8_t Auth[BLOCK_BYTES],
+ uint8_t tag[TAG_BYTES]
+)
+{
+}
+
+static void _encrypt_message(
+ const uint8_t key[KEY_BYTES],
+ size_t M_len,
+ const uint8_t M[M_len],
+ const uint8_t N[NONCE_BYTES],
+ const uint8_t tag[TAG_BYTES],
+ uint8_t C[M_len]
+)
+{
+}
+
+static void _decrypt_message(
+ const uint8_t key[KEY_BYTES],
+ size_t C_len,
+ const uint8_t C[C_len],
+ const uint8_t N[NONCE_BYTES],
+ const uint8_t tag[TAG_BYTES],
+ uint8_t M[C_len]
+)
+{
+}
+
+
void lilliput_ae_encrypt(
size_t message_len,
const uint8_t message[message_len],
@@ -17,6 +60,12 @@ void lilliput_ae_encrypt(
uint8_t tag[TAG_BYTES]
)
{
+ uint8_t auth[BLOCK_BYTES];
+ _process_associated_data(key, auth_data_len, auth_data, auth);
+
+ _generate_tag(key, message_len, message, nonce, auth, tag);
+
+ _encrypt_message(key, message_len, message, nonce, tag, ciphertext);
}
bool lilliput_ae_decrypt(
@@ -30,6 +79,13 @@ bool lilliput_ae_decrypt(
uint8_t message[ciphertext_len]
)
{
+ _decrypt_message(key, ciphertext_len, ciphertext, nonce, tag, message);
+
+ uint8_t auth[BLOCK_BYTES];
+ _process_associated_data(key, auth_data_len, auth_data, auth);
+
uint8_t effective_tag[TAG_BYTES];
+ _generate_tag(key, ciphertext_len, message, nonce, auth, effective_tag);
+
return memcmp(tag, effective_tag, TAG_BYTES) == 0;
}