Changeset View
Changeset View
Standalone View
Standalone View
head/sys/dev/hifn/hifn7751.c
Show First 20 Lines • Show All 1,598 Lines • ▼ Show 20 Lines | hifn_write_command(struct hifn_command *cmd, u_int8_t *buf) | ||||
if (using_mac && cmd->mac_masks & HIFN_MAC_CMD_NEW_KEY) { | if (using_mac && cmd->mac_masks & HIFN_MAC_CMD_NEW_KEY) { | ||||
bcopy(cmd->mac, buf_pos, HIFN_MAC_KEY_LENGTH); | bcopy(cmd->mac, buf_pos, HIFN_MAC_KEY_LENGTH); | ||||
buf_pos += HIFN_MAC_KEY_LENGTH; | buf_pos += HIFN_MAC_KEY_LENGTH; | ||||
} | } | ||||
if (using_crypt && cmd->cry_masks & HIFN_CRYPT_CMD_NEW_KEY) { | if (using_crypt && cmd->cry_masks & HIFN_CRYPT_CMD_NEW_KEY) { | ||||
switch (cmd->cry_masks & HIFN_CRYPT_CMD_ALG_MASK) { | switch (cmd->cry_masks & HIFN_CRYPT_CMD_ALG_MASK) { | ||||
case HIFN_CRYPT_CMD_ALG_3DES: | |||||
bcopy(cmd->ck, buf_pos, HIFN_3DES_KEY_LENGTH); | |||||
buf_pos += HIFN_3DES_KEY_LENGTH; | |||||
break; | |||||
case HIFN_CRYPT_CMD_ALG_DES: | |||||
bcopy(cmd->ck, buf_pos, HIFN_DES_KEY_LENGTH); | |||||
buf_pos += HIFN_DES_KEY_LENGTH; | |||||
break; | |||||
case HIFN_CRYPT_CMD_ALG_AES: | case HIFN_CRYPT_CMD_ALG_AES: | ||||
/* | /* | ||||
* AES keys are variable 128, 192 and | * AES keys are variable 128, 192 and | ||||
* 256 bits (16, 24 and 32 bytes). | * 256 bits (16, 24 and 32 bytes). | ||||
*/ | */ | ||||
bcopy(cmd->ck, buf_pos, cmd->cklen); | bcopy(cmd->ck, buf_pos, cmd->cklen); | ||||
buf_pos += cmd->cklen; | buf_pos += cmd->cklen; | ||||
break; | break; | ||||
▲ Show 20 Lines • Show All 700 Lines • ▼ Show 20 Lines | hifn_cipher_supported(struct hifn_softc *sc, | ||||
if (csp->csp_cipher_klen == 0) | if (csp->csp_cipher_klen == 0) | ||||
return (false); | return (false); | ||||
if (csp->csp_ivlen > HIFN_MAX_IV_LENGTH) | if (csp->csp_ivlen > HIFN_MAX_IV_LENGTH) | ||||
return (false); | return (false); | ||||
switch (sc->sc_ena) { | switch (sc->sc_ena) { | ||||
case HIFN_PUSTAT_ENA_2: | case HIFN_PUSTAT_ENA_2: | ||||
switch (csp->csp_cipher_alg) { | switch (csp->csp_cipher_alg) { | ||||
case CRYPTO_3DES_CBC: | |||||
break; | |||||
case CRYPTO_AES_CBC: | case CRYPTO_AES_CBC: | ||||
if ((sc->sc_flags & HIFN_HAS_AES) == 0) | if ((sc->sc_flags & HIFN_HAS_AES) == 0) | ||||
return (false); | return (false); | ||||
switch (csp->csp_cipher_klen) { | switch (csp->csp_cipher_klen) { | ||||
case 128: | case 128: | ||||
case 192: | case 192: | ||||
case 256: | case 256: | ||||
break; | break; | ||||
default: | default: | ||||
return (false); | return (false); | ||||
} | } | ||||
return (true); | return (true); | ||||
} | } | ||||
/*FALLTHROUGH*/ | |||||
case HIFN_PUSTAT_ENA_1: | |||||
switch (csp->csp_cipher_alg) { | |||||
case CRYPTO_DES_CBC: | |||||
return (true); | |||||
} | } | ||||
break; | |||||
} | |||||
return (false); | return (false); | ||||
} | } | ||||
static int | static int | ||||
hifn_probesession(device_t dev, const struct crypto_session_params *csp) | hifn_probesession(device_t dev, const struct crypto_session_params *csp) | ||||
{ | { | ||||
struct hifn_softc *sc; | struct hifn_softc *sc; | ||||
▲ Show 20 Lines • Show All 81 Lines • ▼ Show 20 Lines | hifn_process(device_t dev, struct cryptop *crp, int hint) | ||||
switch (csp->csp_mode) { | switch (csp->csp_mode) { | ||||
case CSP_MODE_CIPHER: | case CSP_MODE_CIPHER: | ||||
case CSP_MODE_ETA: | case CSP_MODE_ETA: | ||||
if (!CRYPTO_OP_IS_ENCRYPT(crp->crp_op)) | if (!CRYPTO_OP_IS_ENCRYPT(crp->crp_op)) | ||||
cmd->base_masks |= HIFN_BASE_CMD_DECODE; | cmd->base_masks |= HIFN_BASE_CMD_DECODE; | ||||
cmd->base_masks |= HIFN_BASE_CMD_CRYPT; | cmd->base_masks |= HIFN_BASE_CMD_CRYPT; | ||||
switch (csp->csp_cipher_alg) { | switch (csp->csp_cipher_alg) { | ||||
case CRYPTO_DES_CBC: | |||||
cmd->cry_masks |= HIFN_CRYPT_CMD_ALG_DES | | |||||
HIFN_CRYPT_CMD_MODE_CBC | | |||||
HIFN_CRYPT_CMD_NEW_IV; | |||||
break; | |||||
case CRYPTO_3DES_CBC: | |||||
cmd->cry_masks |= HIFN_CRYPT_CMD_ALG_3DES | | |||||
HIFN_CRYPT_CMD_MODE_CBC | | |||||
HIFN_CRYPT_CMD_NEW_IV; | |||||
break; | |||||
case CRYPTO_AES_CBC: | case CRYPTO_AES_CBC: | ||||
cmd->cry_masks |= HIFN_CRYPT_CMD_ALG_AES | | cmd->cry_masks |= HIFN_CRYPT_CMD_ALG_AES | | ||||
HIFN_CRYPT_CMD_MODE_CBC | | HIFN_CRYPT_CMD_MODE_CBC | | ||||
HIFN_CRYPT_CMD_NEW_IV; | HIFN_CRYPT_CMD_NEW_IV; | ||||
break; | break; | ||||
default: | default: | ||||
err = EINVAL; | err = EINVAL; | ||||
goto errout; | goto errout; | ||||
▲ Show 20 Lines • Show All 323 Lines • Show Last 20 Lines |