Changeset View
Changeset View
Standalone View
Standalone View
head/sys/dev/safe/safe.c
Show First 20 Lines • Show All 688 Lines • ▼ Show 20 Lines | |||||
} | } | ||||
static bool | static bool | ||||
safe_cipher_supported(struct safe_softc *sc, | safe_cipher_supported(struct safe_softc *sc, | ||||
const struct crypto_session_params *csp) | const struct crypto_session_params *csp) | ||||
{ | { | ||||
switch (csp->csp_cipher_alg) { | switch (csp->csp_cipher_alg) { | ||||
case CRYPTO_DES_CBC: | |||||
case CRYPTO_3DES_CBC: | |||||
if ((sc->sc_devinfo & SAFE_DEVINFO_DES) == 0) | |||||
return (false); | |||||
if (csp->csp_ivlen != 8) | |||||
return (false); | |||||
if (csp->csp_cipher_alg == CRYPTO_DES_CBC) { | |||||
if (csp->csp_cipher_klen != 8) | |||||
return (false); | |||||
} else { | |||||
if (csp->csp_cipher_klen != 24) | |||||
return (false); | |||||
} | |||||
break; | |||||
case CRYPTO_AES_CBC: | case CRYPTO_AES_CBC: | ||||
if ((sc->sc_devinfo & SAFE_DEVINFO_AES) == 0) | if ((sc->sc_devinfo & SAFE_DEVINFO_AES) == 0) | ||||
return (false); | return (false); | ||||
if (csp->csp_ivlen != 16) | if (csp->csp_ivlen != 16) | ||||
return (false); | return (false); | ||||
if (csp->csp_cipher_klen != 16 && | if (csp->csp_cipher_klen != 16 && | ||||
csp->csp_cipher_klen != 24 && | csp->csp_cipher_klen != 24 && | ||||
csp->csp_cipher_klen != 32) | csp->csp_cipher_klen != 32) | ||||
▲ Show 20 Lines • Show All 142 Lines • ▼ Show 20 Lines | case CSP_MODE_ETA: | ||||
break; | break; | ||||
} | } | ||||
if (csp->csp_cipher_alg != 0) { | if (csp->csp_cipher_alg != 0) { | ||||
if (crp->crp_cipher_key != NULL) | if (crp->crp_cipher_key != NULL) | ||||
safe_setup_enckey(ses, crp->crp_cipher_key); | safe_setup_enckey(ses, crp->crp_cipher_key); | ||||
switch (csp->csp_cipher_alg) { | switch (csp->csp_cipher_alg) { | ||||
case CRYPTO_DES_CBC: | |||||
cmd0 |= SAFE_SA_CMD0_DES; | |||||
cmd1 |= SAFE_SA_CMD1_CBC; | |||||
break; | |||||
case CRYPTO_3DES_CBC: | |||||
cmd0 |= SAFE_SA_CMD0_3DES; | |||||
cmd1 |= SAFE_SA_CMD1_CBC; | |||||
break; | |||||
case CRYPTO_AES_CBC: | case CRYPTO_AES_CBC: | ||||
cmd0 |= SAFE_SA_CMD0_AES; | cmd0 |= SAFE_SA_CMD0_AES; | ||||
cmd1 |= SAFE_SA_CMD1_CBC; | cmd1 |= SAFE_SA_CMD1_CBC; | ||||
if (ses->ses_klen * 8 == 128) | if (ses->ses_klen * 8 == 128) | ||||
cmd1 |= SAFE_SA_CMD1_AES128; | cmd1 |= SAFE_SA_CMD1_AES128; | ||||
else if (ses->ses_klen * 8 == 192) | else if (ses->ses_klen * 8 == 192) | ||||
cmd1 |= SAFE_SA_CMD1_AES192; | cmd1 |= SAFE_SA_CMD1_AES192; | ||||
else | else | ||||
▲ Show 20 Lines • Show All 1,153 Lines • Show Last 20 Lines |