Changeset View
Changeset View
Standalone View
Standalone View
sys/opencrypto/cryptodev.c
Show First 20 Lines • Show All 422 Lines • ▼ Show 20 Lines | case CRYPTO_AES_NIST_GCM_16: | ||||
txform = &enc_xform_aes_nist_gcm; | txform = &enc_xform_aes_nist_gcm; | ||||
break; | break; | ||||
case CRYPTO_CHACHA20: | case CRYPTO_CHACHA20: | ||||
txform = &enc_xform_chacha20; | txform = &enc_xform_chacha20; | ||||
break; | break; | ||||
case CRYPTO_AES_CCM_16: | case CRYPTO_AES_CCM_16: | ||||
txform = &enc_xform_ccm; | txform = &enc_xform_ccm; | ||||
break; | break; | ||||
case CRYPTO_CHACHA20_POLY1305: | |||||
txform = &enc_xform_chacha20_poly1305; | |||||
break; | |||||
default: | default: | ||||
CRYPTDEB("invalid cipher"); | CRYPTDEB("invalid cipher"); | ||||
SDT_PROBE1(opencrypto, dev, ioctl, error, __LINE__); | SDT_PROBE1(opencrypto, dev, ioctl, error, __LINE__); | ||||
return (EINVAL); | return (EINVAL); | ||||
} | } | ||||
switch (sop->mac) { | switch (sop->mac) { | ||||
case 0: | case 0: | ||||
▲ Show 20 Lines • Show All 142 Lines • ▼ Show 20 Lines | |||||
#endif | #endif | ||||
case 0: | case 0: | ||||
break; | break; | ||||
default: | default: | ||||
SDT_PROBE1(opencrypto, dev, ioctl, error, __LINE__); | SDT_PROBE1(opencrypto, dev, ioctl, error, __LINE__); | ||||
return (EINVAL); | return (EINVAL); | ||||
} | } | ||||
csp.csp_mode = CSP_MODE_AEAD; | csp.csp_mode = CSP_MODE_AEAD; | ||||
} else if (sop->cipher == CRYPTO_CHACHA20_POLY1305) { | |||||
if (sop->mac != 0) { | |||||
SDT_PROBE1(opencrypto, dev, ioctl, error, __LINE__); | |||||
return (EINVAL); | |||||
} | |||||
csp.csp_mode = CSP_MODE_AEAD; | |||||
} else if (txform != NULL && thash != NULL) | } else if (txform != NULL && thash != NULL) | ||||
csp.csp_mode = CSP_MODE_ETA; | csp.csp_mode = CSP_MODE_ETA; | ||||
else if (txform != NULL) | else if (txform != NULL) | ||||
csp.csp_mode = CSP_MODE_CIPHER; | csp.csp_mode = CSP_MODE_CIPHER; | ||||
else | else | ||||
csp.csp_mode = CSP_MODE_DIGEST; | csp.csp_mode = CSP_MODE_DIGEST; | ||||
switch (csp.csp_mode) { | switch (csp.csp_mode) { | ||||
▲ Show 20 Lines • Show All 77 Lines • ▼ Show 20 Lines | #endif | ||||
cse->cses = cses; | cse->cses = cses; | ||||
cse->txform = txform; | cse->txform = txform; | ||||
if (thash != NULL) | if (thash != NULL) | ||||
cse->hashsize = thash->hashsize; | cse->hashsize = thash->hashsize; | ||||
else if (csp.csp_cipher_alg == CRYPTO_AES_NIST_GCM_16) | else if (csp.csp_cipher_alg == CRYPTO_AES_NIST_GCM_16) | ||||
cse->hashsize = AES_GMAC_HASH_LEN; | cse->hashsize = AES_GMAC_HASH_LEN; | ||||
else if (csp.csp_cipher_alg == CRYPTO_AES_CCM_16) | else if (csp.csp_cipher_alg == CRYPTO_AES_CCM_16) | ||||
cse->hashsize = AES_CBC_MAC_HASH_LEN; | cse->hashsize = AES_CBC_MAC_HASH_LEN; | ||||
else if (csp.csp_cipher_alg == CRYPTO_CHACHA20_POLY1305) | |||||
cse->hashsize = POLY1305_HASH_LEN; | |||||
cse->ivsize = csp.csp_ivlen; | cse->ivsize = csp.csp_ivlen; | ||||
mtx_lock(&fcr->lock); | mtx_lock(&fcr->lock); | ||||
TAILQ_INSERT_TAIL(&fcr->csessions, cse, next); | TAILQ_INSERT_TAIL(&fcr->csessions, cse, next); | ||||
cse->ses = fcr->sesn++; | cse->ses = fcr->sesn++; | ||||
mtx_unlock(&fcr->lock); | mtx_unlock(&fcr->lock); | ||||
sop->ses = cse->ses; | sop->ses = cse->ses; | ||||
▲ Show 20 Lines • Show All 931 Lines • Show Last 20 Lines |