/* SensorBoard Secure Library
* Subject: AES-PDF Miyaguchi-Preneel implementation
* (http://tools.ietf.org/html/rfc4493)
* Copyright (C) 2015, T.Kurosawa
*/
#include <string.h>
#include "aes_kdf.h"
static const uint const_Zero[4] = {0, 0, 0, 0};
static uint H[4]; //aes_datalen_i];
/// operators
static void Xor(uint *a, const uint *b)
{
int i;
for (i = 0; i< aes_datalen_i; i++) {
a[i] ^= b[i];
}
}
/// exported function
uint *AES_KDF(uint *M, int block_size)
{
int i;
uint temp[aes_datalen_i];
memcpy(H, const_Zero, sizeof(H));
for (i = 0; i< block_size; i++) {
memcpy(temp, M+i*4, aes_datalen);
AES128_crypt(temp, (uint8 *)H);
Xor(temp, M+i);
Xor(H, temp);
}
return H;
}
// O.M.A.J.I.N.A.I.
// vi:expandtab:foldmethod=syntax sw=2 ts=2