コード例 #1
0
ファイル: twofish_test.c プロジェクト: hkerem/dcrypt
int test_twofish256()
{
	twofish256_key skey;
	unsigned char  tmp[16];	
	int            i;
	
	for (i = 0; i < _countof(twofish_vectors); i++) 
	{
		twofish256_set_key(twofish_vectors[i].key, &skey);
		
		twofish256_encrypt(twofish_vectors[i].plaintext, tmp, &skey);
		if (memcmp(twofish_vectors[i].ciphertext, tmp, sizeof(tmp)) != 0) return 0;

		twofish256_decrypt(twofish_vectors[i].ciphertext, tmp, &skey);
		if (memcmp(twofish_vectors[i].plaintext, tmp, sizeof(tmp)) != 0) return 0;
	}	
	return 1;
}
コード例 #2
0
int test_twofish256()
{
	twofish256_key skey;
	char           tmp[16];	
	int            i;
	
	for (i = 0; i < array_num(twofish_vectors); i++) 
	{
		twofish256_set_key(twofish_vectors[i].key, &skey);

		twofish256_encrypt(twofish_vectors[i].plaintext, tmp, &skey);

		if (memcmp(twofish_vectors[i].ciphertext, tmp, sizeof(tmp)) != 0) {
			return 0;
		}

		twofish256_decrypt(twofish_vectors[i].ciphertext, tmp, &skey);

		if (memcmp(twofish_vectors[i].plaintext, tmp, sizeof(tmp)) != 0) {
			return 0;
		}
	}	
	return 1;
}
コード例 #3
0
ファイル: xts_fast.c プロジェクト: hkerem/dcrypt
void _stdcall xts_set_key(const unsigned char *key, int alg, xts_key *skey)
{
	switch (alg) 
	{
		case CF_AES:
			aes256_asm_set_key(key, &skey->crypt_k.aes);
			aes256_asm_set_key(key + XTS_KEY_SIZE, &skey->tweak_k.aes);

			skey->encrypt = xts_aes_encrypt;
			skey->decrypt = xts_aes_decrypt;
		break;
		case CF_TWOFISH:
			twofish256_set_key(key, &skey->crypt_k.twofish);
			twofish256_set_key(key + XTS_KEY_SIZE, &skey->tweak_k.twofish);

			skey->encrypt = xts_twofish_encrypt;
			skey->decrypt = xts_twofish_decrypt;
		break;
		case CF_SERPENT:
			serpent256_set_key(key, &skey->crypt_k.serpent);
			serpent256_set_key(key + XTS_KEY_SIZE, &skey->tweak_k.serpent);

			skey->encrypt = xts_serpent_encrypt;
			skey->decrypt = xts_serpent_decrypt;
		break;
		case CF_AES_TWOFISH:
			twofish256_set_key(key, &skey->crypt_k.twofish);
			aes256_asm_set_key(key + XTS_KEY_SIZE, &skey->crypt_k.aes);			
			twofish256_set_key(key + XTS_KEY_SIZE*2, &skey->tweak_k.twofish);
			aes256_asm_set_key(key + XTS_KEY_SIZE*3, &skey->tweak_k.aes);

			skey->encrypt = xts_aes_twofish_encrypt;
			skey->decrypt = xts_aes_twofish_decrypt;
		break;
		case CF_TWOFISH_SERPENT:
			serpent256_set_key(key, &skey->crypt_k.serpent);
			twofish256_set_key(key + XTS_KEY_SIZE, &skey->crypt_k.twofish);			
			serpent256_set_key(key + XTS_KEY_SIZE*2, &skey->tweak_k.serpent);
			twofish256_set_key(key + XTS_KEY_SIZE*3, &skey->tweak_k.twofish);

			skey->encrypt = xts_twofish_serpent_encrypt;
			skey->decrypt = xts_twofish_serpent_decrypt;
		break;
		case CF_SERPENT_AES:
			aes256_asm_set_key(key, &skey->crypt_k.aes);
			serpent256_set_key(key + XTS_KEY_SIZE, &skey->crypt_k.serpent);			
			aes256_asm_set_key(key + XTS_KEY_SIZE*2, &skey->tweak_k.aes);
			serpent256_set_key(key + XTS_KEY_SIZE*3, &skey->tweak_k.serpent);

			skey->encrypt = xts_serpent_aes_encrypt;
			skey->decrypt = xts_serpent_aes_decrypt;
		break;
		case CF_AES_TWOFISH_SERPENT:
			serpent256_set_key(key, &skey->crypt_k.serpent);
			twofish256_set_key(key + XTS_KEY_SIZE, &skey->crypt_k.twofish);
			aes256_asm_set_key(key + XTS_KEY_SIZE*2, &skey->crypt_k.aes);
			serpent256_set_key(key + XTS_KEY_SIZE*3, &skey->tweak_k.serpent);
			twofish256_set_key(key + XTS_KEY_SIZE*4, &skey->tweak_k.twofish);
			aes256_asm_set_key(key + XTS_KEY_SIZE*5, &skey->tweak_k.aes);

			skey->encrypt = xts_aes_twofish_serpent_encrypt;
			skey->decrypt = xts_aes_twofish_serpent_decrypt;
		break;
	}
}