blob: ae6e621e6362c33bd5117264431bdc718df03f46 [file] [log] [blame]
#include "../../defs.h"
#include "../../stub.c"
#include "printio.h"
void main() {
unsigned int s = 0;
for(int i = 0; i < 10000; i++) s += i;
printstr("test\n");
printstr((char*)0x30000050);
printstr("\n");
// Load key as 114849718896073566083416993308083054187
*((volatile uint32_t*) 0x30000040) = 1449607251;
*((volatile uint32_t*) 0x30000040) = 1734159223;
*((volatile uint32_t*) 0x30000040) = 1713582630;
*((volatile uint32_t*) 0x30000040) = 908945003;
// Update key
*((volatile uint32_t*) 0x3000000C) = 1;
printstr("key\n");
while((*((volatile uint32_t*) 0x30000000) & 0x3) != 0x3);
// Set IV to 94605682877008349257125771496548550738
*((volatile uint32_t*) 0x30000000) = 0;
*((volatile uint32_t*) 0x30000010) = 1194091594;
*((volatile uint32_t*) 0x30000010) = 577847158;
*((volatile uint32_t*) 0x30000010) = 1245724226;
*((volatile uint32_t*) 0x30000010) = 1512654930;
*((volatile uint32_t*) 0x30000008) = 1;
printstr("iv\n");
while((*((volatile uint32_t*) 0x30000000) & 0x4) != 0x4);
*((volatile uint32_t*) 0x30000000) = 8;
// Encrypt 54758945827980741386470298169332301409
*((volatile uint32_t*) 0x30000010) = 691155065;
*((volatile uint32_t*) 0x30000010) = 845884219;
*((volatile uint32_t*) 0x30000010) = 1382968177;
*((volatile uint32_t*) 0x30000010) = 1333362273;
*((volatile uint32_t*) 0x30000004) = 1;
printstr("enc\n");
while((*((volatile uint32_t*) 0x30000000) & 0x4) != 0x4);
// Read back result
printhex(*((volatile uint32_t*) 0x30000030), true); // should be 2f93dcae
printhex(*((volatile uint32_t*) 0x30000034), true); // should be dbcedead
printhex(*((volatile uint32_t*) 0x30000038), true); // should be 545145d7
printhex(*((volatile uint32_t*) 0x3000003C), true); // should be aeb28360
endtest();
}