Changeset View
Changeset View
Standalone View
Standalone View
sys/opencrypto/cryptosoft.c
Show First 20 Lines • Show All 1,324 Lines • ▼ Show 20 Lines | default: | ||||
return (EINVAL); | return (EINVAL); | ||||
} | } | ||||
break; | break; | ||||
case CSP_MODE_CIPHER: | case CSP_MODE_CIPHER: | ||||
switch (csp->csp_cipher_alg) { | switch (csp->csp_cipher_alg) { | ||||
case CRYPTO_AES_NIST_GCM_16: | case CRYPTO_AES_NIST_GCM_16: | ||||
case CRYPTO_AES_CCM_16: | case CRYPTO_AES_CCM_16: | ||||
case CRYPTO_CHACHA20_POLY1305: | case CRYPTO_CHACHA20_POLY1305: | ||||
case CRYPTO_XCHACHA20_POLY1305: | |||||
return (EINVAL); | return (EINVAL); | ||||
default: | default: | ||||
if (!swcr_cipher_supported(csp)) | if (!swcr_cipher_supported(csp)) | ||||
return (EINVAL); | return (EINVAL); | ||||
break; | break; | ||||
} | } | ||||
break; | break; | ||||
case CSP_MODE_DIGEST: | case CSP_MODE_DIGEST: | ||||
Show All 9 Lines | case CRYPTO_AES_CCM_16: | ||||
case 192: | case 192: | ||||
case 256: | case 256: | ||||
break; | break; | ||||
default: | default: | ||||
return (EINVAL); | return (EINVAL); | ||||
} | } | ||||
break; | break; | ||||
case CRYPTO_CHACHA20_POLY1305: | case CRYPTO_CHACHA20_POLY1305: | ||||
case CRYPTO_XCHACHA20_POLY1305: | |||||
break; | break; | ||||
default: | default: | ||||
return (EINVAL); | return (EINVAL); | ||||
} | } | ||||
break; | break; | ||||
case CSP_MODE_ETA: | case CSP_MODE_ETA: | ||||
/* AEAD algorithms cannot be used for EtA. */ | /* AEAD algorithms cannot be used for EtA. */ | ||||
switch (csp->csp_cipher_alg) { | switch (csp->csp_cipher_alg) { | ||||
case CRYPTO_AES_NIST_GCM_16: | case CRYPTO_AES_NIST_GCM_16: | ||||
case CRYPTO_AES_CCM_16: | case CRYPTO_AES_CCM_16: | ||||
case CRYPTO_CHACHA20_POLY1305: | case CRYPTO_CHACHA20_POLY1305: | ||||
case CRYPTO_XCHACHA20_POLY1305: | |||||
return (EINVAL); | return (EINVAL); | ||||
} | } | ||||
switch (csp->csp_auth_alg) { | switch (csp->csp_auth_alg) { | ||||
case CRYPTO_AES_NIST_GMAC: | case CRYPTO_AES_NIST_GMAC: | ||||
case CRYPTO_AES_CCM_CBC_MAC: | case CRYPTO_AES_CCM_CBC_MAC: | ||||
return (EINVAL); | return (EINVAL); | ||||
} | } | ||||
Show All 40 Lines | case CSP_MODE_CIPHER: | ||||
switch (csp->csp_cipher_alg) { | switch (csp->csp_cipher_alg) { | ||||
case CRYPTO_NULL_CBC: | case CRYPTO_NULL_CBC: | ||||
ses->swcr_process = swcr_null; | ses->swcr_process = swcr_null; | ||||
break; | break; | ||||
#ifdef INVARIANTS | #ifdef INVARIANTS | ||||
case CRYPTO_AES_NIST_GCM_16: | case CRYPTO_AES_NIST_GCM_16: | ||||
case CRYPTO_AES_CCM_16: | case CRYPTO_AES_CCM_16: | ||||
case CRYPTO_CHACHA20_POLY1305: | case CRYPTO_CHACHA20_POLY1305: | ||||
case CRYPTO_XCHACHA20_POLY1305: | |||||
panic("bad cipher algo"); | panic("bad cipher algo"); | ||||
#endif | #endif | ||||
default: | default: | ||||
error = swcr_setup_cipher(ses, csp); | error = swcr_setup_cipher(ses, csp); | ||||
if (error == 0) | if (error == 0) | ||||
ses->swcr_process = swcr_encdec; | ses->swcr_process = swcr_encdec; | ||||
} | } | ||||
break; | break; | ||||
case CSP_MODE_DIGEST: | case CSP_MODE_DIGEST: | ||||
error = swcr_setup_auth(ses, csp); | error = swcr_setup_auth(ses, csp); | ||||
break; | break; | ||||
case CSP_MODE_AEAD: | case CSP_MODE_AEAD: | ||||
switch (csp->csp_cipher_alg) { | switch (csp->csp_cipher_alg) { | ||||
case CRYPTO_AES_NIST_GCM_16: | case CRYPTO_AES_NIST_GCM_16: | ||||
error = swcr_setup_aead(ses, csp); | error = swcr_setup_aead(ses, csp); | ||||
if (error == 0) | if (error == 0) | ||||
ses->swcr_process = swcr_gcm; | ses->swcr_process = swcr_gcm; | ||||
break; | break; | ||||
case CRYPTO_AES_CCM_16: | case CRYPTO_AES_CCM_16: | ||||
error = swcr_setup_aead(ses, csp); | error = swcr_setup_aead(ses, csp); | ||||
if (error == 0) | if (error == 0) | ||||
ses->swcr_process = swcr_ccm; | ses->swcr_process = swcr_ccm; | ||||
break; | break; | ||||
case CRYPTO_CHACHA20_POLY1305: | case CRYPTO_CHACHA20_POLY1305: | ||||
case CRYPTO_XCHACHA20_POLY1305: | |||||
error = swcr_setup_aead(ses, csp); | error = swcr_setup_aead(ses, csp); | ||||
if (error == 0) | if (error == 0) | ||||
ses->swcr_process = swcr_chacha20_poly1305; | ses->swcr_process = swcr_chacha20_poly1305; | ||||
break; | break; | ||||
#ifdef INVARIANTS | #ifdef INVARIANTS | ||||
default: | default: | ||||
panic("bad aead algo"); | panic("bad aead algo"); | ||||
#endif | #endif | ||||
} | } | ||||
break; | break; | ||||
case CSP_MODE_ETA: | case CSP_MODE_ETA: | ||||
#ifdef INVARIANTS | #ifdef INVARIANTS | ||||
switch (csp->csp_cipher_alg) { | switch (csp->csp_cipher_alg) { | ||||
case CRYPTO_AES_NIST_GCM_16: | case CRYPTO_AES_NIST_GCM_16: | ||||
case CRYPTO_AES_CCM_16: | case CRYPTO_AES_CCM_16: | ||||
case CRYPTO_CHACHA20_POLY1305: | case CRYPTO_CHACHA20_POLY1305: | ||||
case CRYPTO_XCHACHA20_POLY1305: | |||||
panic("bad eta cipher algo"); | panic("bad eta cipher algo"); | ||||
} | } | ||||
switch (csp->csp_auth_alg) { | switch (csp->csp_auth_alg) { | ||||
case CRYPTO_AES_NIST_GMAC: | case CRYPTO_AES_NIST_GMAC: | ||||
case CRYPTO_AES_CCM_CBC_MAC: | case CRYPTO_AES_CCM_CBC_MAC: | ||||
panic("bad eta auth algo"); | panic("bad eta auth algo"); | ||||
} | } | ||||
#endif | #endif | ||||
▲ Show 20 Lines • Show All 122 Lines • Show Last 20 Lines |