Example #1
0
static int tnepres_setkey(struct crypto_tfm *tfm, const u8 *key,
			  unsigned int keylen)
{
	u8 rev_key[SERPENT_MAX_KEY_SIZE];
	int i;

	for (i = 0; i < keylen; ++i)
		rev_key[keylen - i - 1] = key[i];

	return serpent_setkey(tfm, rev_key, keylen);
}
Example #2
0
static int tnepres_setkey(void *ctx, const u8 *key, unsigned int keylen, u32 *flags)
{
	u8 rev_key[SERPENT_MAX_KEY_SIZE];
	int i;

	if ((keylen < SERPENT_MIN_KEY_SIZE)
	    || (keylen > SERPENT_MAX_KEY_SIZE)) {
		*flags |= CRYPTO_TFM_RES_BAD_KEY_LEN;
		return -EINVAL;
	} 

	for (i = 0; i < keylen; ++i)
		rev_key[keylen - i - 1] = key[i];
 
	return serpent_setkey(ctx, rev_key, keylen, flags);
}
Example #3
0
int main()
{
	uint32_t expkey[SERPENT_EXPKEY_WORDS];
	uint8_t check[16];
	int i, j;

	/* test serpent with 128key key */
	for (i = 0; i < table128_num; i++) {
		serpent_setkey(expkey, table128[i].key, 16);

		/* encryption test */
		serpent_encrypt(check, table128[i].plain, expkey);
		if (memcmp(check, table128[i].enc, 16) != 0) {
			fprintf(stderr, "serpent-128 encrypt test %d failed\n", i+1);
			return 1;
		}

		/* encrypt 99 times more */
		for (j = 0; j < 99; j++)
			serpent_encrypt(check, check, expkey);

		if (memcmp(check, table128[i].enc100, 16) != 0) {
			fprintf(stderr, "serpent-128 100x encrypt test %d failed\n", i+1);
			return 1;
		}

		/* encrypt 900 times more */
		for (j = 0; j < 900; j++)
			serpent_encrypt(check, check, expkey);

		if (memcmp(check, table128[i].enc1000, 16) != 0) {
			fprintf(stderr, "serpent-128 1000x encrypt test %d failed\n", i+1);
			return 1;
		}
	}

	/* test serpent with 256bit key */
	for (i = 0; i < table256_num; i++) {

		serpent_setkey(expkey, table256[i].key, 32);

		/* encrypt test */
		serpent_encrypt(check, table256[i].plain, expkey);
		if (memcmp(check, table256[i].enc, 16) != 0) {
			fprintf(stderr, "serpent-256 encrypt test %d failed\n", i+1);
			return 1;
		}

		/* 100x encrypt test */
		for (j = 0; j < 99; j++)
			serpent_encrypt(check, check, expkey);
		if (memcmp(check, table256[i].enc100, 16) != 0) {
			fprintf(stderr, "serpent-256 100x encrypt test %d failed\n", i+1);
			return 1;
		}

		/* 1000x encrypt test */
		for (j = 0; j < 900; j++)
			serpent_encrypt(check, check, expkey);
		if (memcmp(check, table256[i].enc1000, 16) != 0) {
			fprintf(stderr, "serpent-256 1000x encrypt test %d failed\n", i+1);
			return 1;
		}
	}

	return 0;
}