797
#if defined(POLARSSL_CIPHER_MODE_CTR)
799
* Camellia-CTR test vectors from:
801
* http://www.faqs.org/rfcs/rfc5528.html
804
static const unsigned char camellia_test_ctr_key[3][16] =
806
{ 0xAE, 0x68, 0x52, 0xF8, 0x12, 0x10, 0x67, 0xCC,
807
0x4B, 0xF7, 0xA5, 0x76, 0x55, 0x77, 0xF3, 0x9E },
808
{ 0x7E, 0x24, 0x06, 0x78, 0x17, 0xFA, 0xE0, 0xD7,
809
0x43, 0xD6, 0xCE, 0x1F, 0x32, 0x53, 0x91, 0x63 },
810
{ 0x76, 0x91, 0xBE, 0x03, 0x5E, 0x50, 0x20, 0xA8,
811
0xAC, 0x6E, 0x61, 0x85, 0x29, 0xF9, 0xA0, 0xDC }
814
static const unsigned char camellia_test_ctr_nonce_counter[3][16] =
816
{ 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00,
817
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 },
818
{ 0x00, 0x6C, 0xB6, 0xDB, 0xC0, 0x54, 0x3B, 0x59,
819
0xDA, 0x48, 0xD9, 0x0B, 0x00, 0x00, 0x00, 0x01 },
820
{ 0x00, 0xE0, 0x01, 0x7B, 0x27, 0x77, 0x7F, 0x3F,
821
0x4A, 0x17, 0x86, 0xF0, 0x00, 0x00, 0x00, 0x01 }
824
static const unsigned char camellia_test_ctr_pt[3][48] =
826
{ 0x53, 0x69, 0x6E, 0x67, 0x6C, 0x65, 0x20, 0x62,
827
0x6C, 0x6F, 0x63, 0x6B, 0x20, 0x6D, 0x73, 0x67 },
829
{ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
830
0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
831
0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
832
0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F },
834
{ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
835
0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
836
0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
837
0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F,
838
0x20, 0x21, 0x22, 0x23 }
841
static const unsigned char camellia_test_ctr_ct[3][48] =
843
{ 0xD0, 0x9D, 0xC2, 0x9A, 0x82, 0x14, 0x61, 0x9A,
844
0x20, 0x87, 0x7C, 0x76, 0xDB, 0x1F, 0x0B, 0x3F },
845
{ 0xDB, 0xF3, 0xC7, 0x8D, 0xC0, 0x83, 0x96, 0xD4,
846
0xDA, 0x7C, 0x90, 0x77, 0x65, 0xBB, 0xCB, 0x44,
847
0x2B, 0x8E, 0x8E, 0x0F, 0x31, 0xF0, 0xDC, 0xA7,
848
0x2C, 0x74, 0x17, 0xE3, 0x53, 0x60, 0xE0, 0x48 },
849
{ 0xB1, 0x9D, 0x1F, 0xCD, 0xCB, 0x75, 0xEB, 0x88,
850
0x2F, 0x84, 0x9C, 0xE2, 0x4D, 0x85, 0xCF, 0x73,
851
0x9C, 0xE6, 0x4B, 0x2B, 0x5C, 0x9D, 0x73, 0xF1,
852
0x4F, 0x2D, 0x5D, 0x9D, 0xCE, 0x98, 0x89, 0xCD,
853
0xDF, 0x50, 0x86, 0x96 }
856
static const int camellia_test_ctr_len[3] =
858
#endif /* POLARSSL_CIPHER_MODE_CTR */
757
861
* Checkup routine
859
969
if( verbose != 0 )
972
#if defined(POLARSSL_CIPHER_MODE_CTR)
976
for( i = 0; i < 6; i++ )
982
printf( " CAMELLIA-CTR-128 (%s): ",
983
( v == CAMELLIA_DECRYPT ) ? "dec" : "enc" );
985
memcpy( nonce_counter, camellia_test_ctr_nonce_counter[u], 16 );
986
memcpy( key, camellia_test_ctr_key[u], 16 );
989
camellia_setkey_enc( &ctx, key, 128 );
991
if( v == CAMELLIA_DECRYPT )
993
len = camellia_test_ctr_len[u];
994
memcpy( buf, camellia_test_ctr_ct[u], len );
996
camellia_crypt_ctr( &ctx, len, &offset, nonce_counter, stream_block, buf, buf );
998
if( memcmp( buf, camellia_test_ctr_pt[u], len ) != 0 )
1001
printf( "failed\n" );
1008
len = camellia_test_ctr_len[u];
1009
memcpy( buf, camellia_test_ctr_pt[u], len );
1011
camellia_crypt_ctr( &ctx, len, &offset, nonce_counter, stream_block, buf, buf );
1013
if( memcmp( buf, camellia_test_ctr_ct[u], len ) != 0 )
1016
printf( "failed\n" );
1023
printf( "passed\n" );
1028
#endif /* POLARSSL_CIPHER_MODE_CTR */