예제 #1
0
void hh10d_init(void *cfg) {
    // Read calibrate paremeter with TWI
    int rc;
    char buf[6];
    twi_init();
    rc = ee24xx_read_bytes(10,4,buf);
    if (rc != 4) {
        sens = 0;
        offset = 0;
        return;
    }
#ifdef DEBUG
    uart_hexdump(buf,4);
    uart_putc ('\r');
    uart_putc ('\n');
#endif
    sens = buf[0] * 256 + buf[1];
    offset = buf[2] * 256 + buf[3];
#ifdef DEBUG
    itoa(sens,buf,10);
    uart_putstr(buf);
    uart_putstr_P(PSTR("\r\n"));
    itoa(offset,buf,10);
    uart_putstr(buf);
    uart_putstr_P(PSTR("\r\n"));
#endif

    // rising edge
    EICRA |= (1 << ISC10) | (1 << ISC11);
    // enable INT1
    EIMSK |= (1 << INT1);
}
예제 #2
0
void testrun_stdtest_rundirect(void* data, void* key){
	uart_putstr_P(PSTR("\r\n                     "));
	uart_putstr_P(PSTR("k = "));
	uart_hexdump(key,16);
	
	uart_putstr_P(PSTR("\r\n                     "));
	uart_putstr_P(PSTR("a = "));
	uart_hexdump(data,16);
	
	noekeon_enc(data, key);
	uart_putstr_P(PSTR("\r\nafter NESSIEencrypt, b = "));
	uart_hexdump(data,16);
	
	noekeon_dec(data, key);
	uart_putstr_P(PSTR("\r\nafter NESSIEdecrypt, a?= "));
	uart_hexdump(data,16);
	uart_putstr_P(PSTR("\r\n"));
}
예제 #3
0
void testrun_twister512(void){
	twister512_hash_t hash;
	char* testv[]={
		"", 
		"a", 
		"abc", 
		"message digest", 
		"abcdefghijklmnopqrstuvwxyz", 
		"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789", 
		"12345678901234567890123456789012345678901234567890123456789012345678901234567890"};
	uint32_t i;
	
	uart_putstr_P(PSTR("\r\n=== TWISTER-512 test suit (MD5 test values) ==="));
	for(i=0; i<7; ++i){
		uart_putstr_P(PSTR("\r\n TWISTER-512 (\""));
		uart_putstr(testv[i]);
		uart_putstr_P(PSTR("\") = \r\n\t"));
		twister512(&hash, testv[i], strlen(testv[i])*8);
		print_hash(hash);
	//	return;
	}
	
	uart_putstr_P(PSTR("\r\n\r\n=== TWISTER-512 test suit (short test values) ==="));
	uint8_t stestv[]= {0x00, 0x00, 0xC0, 0xC0, 0x80, 0x48, 0x50};
	uint8_t stestl[]= {   0,    1,    2,    3,    4,    5,    6};	
	for(i=0; i<7; ++i){
		uart_putstr_P(PSTR("\r\n TWISTER-512 (\""));
		uart_hexdump(&(stestv[i]), 1);
		uart_putstr_P(PSTR("\") = \r\n\t"));
		twister512(hash, &(stestv[i]), stestl[i]);
		print_hash(hash);
	}
	
#ifdef TWISTER_LONGTEST
	uart_putstr_P(PSTR("\r\n\r\n=== TWISTER-512 test suit (long test) ==="));
	char* ltest= "abcdefghbcdefghicdefghijdefghijk"
                           "efghijklfghijklmghijklmnhijklmno";	
	twister512_ctx_t ctx;
	twister512_init(&ctx);	
	uart_putstr_P(PSTR("\r\n TWISTER-512 ( 16777216 x \""));
	uart_putstr(ltest);	
	uart_putstr_P(PSTR("\") = \r\n\t"));
	for(i=0; i<16777216; ++i){
		twister512_nextBlock(&ctx, ltest);
	}
	twister512_ctx2hash(hash, &ctx);
	print_hash(hash);
#endif
}
예제 #4
0
int main ( void )
{
  uint8_t *bufcontents;
  uint8_t i;
  uint8_t tv[] = "foobar1";
  uint16_t ticker = 0;
  uint8_t rc;
  aes128_ctx_t ctx;

  uint8_t key[] = "0123456789ABCDEF";
  uint8_t IV[] = "FEDCBA9876543210";
  uint8_t text[] = "Hello rfm12 world. I've gonna cipher you       ";
	
  drive(LED1);
  drive(LED2);

  toggle_output(LED1);
	
  uart_init();

  _delay_ms(250);
  _delay_ms(250);

  sei();

  toggle_output(LED2);
  uart_putstr ("AVR Boot Ok\r\n");
  _delay_ms(250);
  toggle_output(LED2);

  aes128_init(key,&ctx);

  while (1) {
    uart_putstr("key = ");
    uart_putstr(key);
    uart_putstr("\r\n");

    uart_putstr("text = ");
    uart_putstr(text);
    uart_putstr("\r\n");

    /* Ciphering in CBC mode */
    memxor(text,IV,16);
    aes128_enc(text,&ctx);
    memxor(text+16,text,16);
    aes128_enc(text+16,&ctx);
    memxor(text+32,text+16,16);
    aes128_enc(text+32,&ctx);

    uart_putstr("text ciphered = \r\n");
    uart_hexdump(text,sizeof(text));

    /* Deciphering in CBC mode */
    aes128_dec(text+32,&ctx);
    memxor(text+32,text+16,16);
    aes128_dec(text+16,&ctx);
    memxor(text+16,text,16);
    aes128_dec(text,&ctx);
    memxor(text,IV,16);

    uart_putstr("text unciphered = ");
    uart_putstr(text);
    uart_putstr("\r\n");

    /* Let change the IV */
    IV[0]++;

    _delay_ms(250);
    _delay_ms(250);
    _delay_ms(250);
    _delay_ms(250);
  }
}
예제 #5
0
void print_hash(void* hash){
	uart_hexdump(hash, 256/8);
	uart_putstr_P(PSTR("\r\n\t"));
	uart_hexdump((uint8_t*)hash+256/8, 256/8);
	
}
예제 #6
0
void uart_putptr(void* p){
	uart_hexdump((void*) &p,2);
}