Changeset View
Changeset View
Standalone View
Standalone View
head/sys/opencrypto/xform_des1.c
Show First 20 Lines • Show All 69 Lines • ▼ Show 20 Lines | |||||
}; | }; | ||||
/* | /* | ||||
* Encryption wrapper routines. | * Encryption wrapper routines. | ||||
*/ | */ | ||||
static void | static void | ||||
des1_encrypt(caddr_t key, u_int8_t *blk) | des1_encrypt(caddr_t key, u_int8_t *blk) | ||||
{ | { | ||||
des_cblock *cb = (des_cblock *) blk; | |||||
des_key_schedule *p = (des_key_schedule *) key; | des_key_schedule *p = (des_key_schedule *) key; | ||||
des_ecb_encrypt(cb, cb, p[0], DES_ENCRYPT); | des_ecb_encrypt(blk, blk, p[0], DES_ENCRYPT); | ||||
} | } | ||||
static void | static void | ||||
des1_decrypt(caddr_t key, u_int8_t *blk) | des1_decrypt(caddr_t key, u_int8_t *blk) | ||||
{ | { | ||||
des_cblock *cb = (des_cblock *) blk; | |||||
des_key_schedule *p = (des_key_schedule *) key; | des_key_schedule *p = (des_key_schedule *) key; | ||||
des_ecb_encrypt(cb, cb, p[0], DES_DECRYPT); | des_ecb_encrypt(blk, blk, p[0], DES_DECRYPT); | ||||
} | } | ||||
static int | static int | ||||
des1_setkey(u_int8_t **sched, const u_int8_t *key, int len) | des1_setkey(u_int8_t **sched, const u_int8_t *key, int len) | ||||
{ | { | ||||
des_key_schedule *p; | des_key_schedule *p; | ||||
int err; | int err; | ||||
p = KMALLOC(sizeof (des_key_schedule), | p = KMALLOC(sizeof (des_key_schedule), | ||||
M_CRYPTO_DATA, M_NOWAIT|M_ZERO); | M_CRYPTO_DATA, M_NOWAIT|M_ZERO); | ||||
if (p != NULL) { | if (p != NULL) { | ||||
des_set_key((const des_cblock *) key, p[0]); | des_set_key(key, p[0]); | ||||
err = 0; | err = 0; | ||||
} else | } else | ||||
err = ENOMEM; | err = ENOMEM; | ||||
*sched = (u_int8_t *) p; | *sched = (u_int8_t *) p; | ||||
return err; | return err; | ||||
} | } | ||||
static void | static void | ||||
des1_zerokey(u_int8_t **sched) | des1_zerokey(u_int8_t **sched) | ||||
{ | { | ||||
bzero(*sched, sizeof (des_key_schedule)); | bzero(*sched, sizeof (des_key_schedule)); | ||||
KFREE(*sched, M_CRYPTO_DATA); | KFREE(*sched, M_CRYPTO_DATA); | ||||
*sched = NULL; | *sched = NULL; | ||||
} | } |