Skip to content
B. Poettering's 2474 cycles per block AES implementation exposed as C/C++ functions
Assembly C
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
README.md
aes-avr.h
rijndaelfast.S

README.md

FAST AES AVR

C bindings for Poettering's AES128 ASM implementation for AVR processors. The original version takes 2474 cycles to encrypt a single block of data and assembles to a binary of 3098 bytes.

Parameter passing is awkward since I wanted simple assembly code.

Example usage:

#define KEY_MATERIAL {0xc1, 0xe5, 0xec, 0x7b, 0x1a, 0x30, 0xe0, 0xda, 0x98, 0xd3, 0x4f, 0xf0, 0x70, 0x30, 0xfe, 0x65}

struct data{
	  unsigned char data[16];
};

char expanded_key[176];

void function()
{
  struct data key_material = {KEY_MATERIAL};
  expand_key(key_material, expanded_key);
  
  struct data pt;
  struct data ct;
  ...
  ct = encrypt_data(pt, expanded_key);
  pt = decrypt_data(ct, expanded_key);
}
You can’t perform that action at this time.