Newer
Older
AESLearning / aes_kdf.c
@Takayuki Kurosawa Takayuki Kurosawa on 17 Mar 2015 790 bytes maintainance release
/* 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