Changeset View
Changeset View
Standalone View
Standalone View
sys/opencrypto/crypto.c
Show First 20 Lines • Show All 1,279 Lines • ▼ Show 20 Lines | case CSP_MODE_COMPRESS: | ||||
break; | break; | ||||
case CSP_MODE_CIPHER: | case CSP_MODE_CIPHER: | ||||
KASSERT(crp->crp_op == CRYPTO_OP_ENCRYPT || | KASSERT(crp->crp_op == CRYPTO_OP_ENCRYPT || | ||||
crp->crp_op == CRYPTO_OP_DECRYPT, | crp->crp_op == CRYPTO_OP_DECRYPT, | ||||
("invalid cipher op %x", crp->crp_op)); | ("invalid cipher op %x", crp->crp_op)); | ||||
break; | break; | ||||
case CSP_MODE_DIGEST: | case CSP_MODE_DIGEST: | ||||
KASSERT(crp->crp_op == CRYPTO_OP_COMPUTE_DIGEST || | KASSERT(crp->crp_op == CRYPTO_OP_COMPUTE_DIGEST || | ||||
crp->crp_op == CRYPTO_OP_VERIFY_DIGEST, | crp->crp_op == CRYPTO_OP_VERIFY_DIGEST || | ||||
crp->crp_op == CRYPTO_OP_SKIP_DIGEST, | |||||
("invalid digest op %x", crp->crp_op)); | ("invalid digest op %x", crp->crp_op)); | ||||
break; | break; | ||||
case CSP_MODE_AEAD: | case CSP_MODE_AEAD: | ||||
KASSERT(crp->crp_op == | KASSERT(crp->crp_op == | ||||
(CRYPTO_OP_ENCRYPT | CRYPTO_OP_COMPUTE_DIGEST) || | (CRYPTO_OP_ENCRYPT | CRYPTO_OP_COMPUTE_DIGEST) || | ||||
crp->crp_op == | crp->crp_op == | ||||
(CRYPTO_OP_DECRYPT | CRYPTO_OP_VERIFY_DIGEST), | (CRYPTO_OP_DECRYPT | CRYPTO_OP_VERIFY_DIGEST) || | ||||
crp->crp_op == | |||||
(CRYPTO_OP_DECRYPT | CRYPTO_OP_SKIP_DIGEST), | |||||
("invalid AEAD op %x", crp->crp_op)); | ("invalid AEAD op %x", crp->crp_op)); | ||||
KASSERT(crp->crp_flags & CRYPTO_F_IV_SEPARATE, | KASSERT(crp->crp_flags & CRYPTO_F_IV_SEPARATE, | ||||
("AEAD without a separate IV")); | ("AEAD without a separate IV")); | ||||
break; | break; | ||||
case CSP_MODE_ETA: | case CSP_MODE_ETA: | ||||
KASSERT(crp->crp_op == | KASSERT(crp->crp_op == | ||||
(CRYPTO_OP_ENCRYPT | CRYPTO_OP_COMPUTE_DIGEST) || | (CRYPTO_OP_ENCRYPT | CRYPTO_OP_COMPUTE_DIGEST) || | ||||
crp->crp_op == | crp->crp_op == | ||||
(CRYPTO_OP_DECRYPT | CRYPTO_OP_VERIFY_DIGEST), | (CRYPTO_OP_DECRYPT | CRYPTO_OP_VERIFY_DIGEST) || | ||||
crp->crp_op == | |||||
(CRYPTO_OP_DECRYPT | CRYPTO_OP_SKIP_DIGEST), | |||||
("invalid ETA op %x", crp->crp_op)); | ("invalid ETA op %x", crp->crp_op)); | ||||
break; | break; | ||||
} | } | ||||
if (csp->csp_mode == CSP_MODE_AEAD || csp->csp_mode == CSP_MODE_ETA) { | if (csp->csp_mode == CSP_MODE_AEAD || csp->csp_mode == CSP_MODE_ETA) { | ||||
if (crp->crp_aad == NULL) { | if (crp->crp_aad == NULL) { | ||||
KASSERT(crp->crp_aad_start == 0 || | KASSERT(crp->crp_aad_start == 0 || | ||||
crp->crp_aad_start < ilen, | crp->crp_aad_start < ilen, | ||||
("invalid AAD start")); | ("invalid AAD start")); | ||||
▲ Show 20 Lines • Show All 41 Lines • ▼ Show 20 Lines | KASSERT(crp->crp_payload_output_start == 0, | ||||
("payload output start non-zero without output buffer")); | ("payload output start non-zero without output buffer")); | ||||
} else { | } else { | ||||
KASSERT(crp->crp_payload_output_start < olen, | KASSERT(crp->crp_payload_output_start < olen, | ||||
("invalid payload output start")); | ("invalid payload output start")); | ||||
KASSERT(crp->crp_payload_output_start + | KASSERT(crp->crp_payload_output_start + | ||||
crp->crp_payload_length <= olen, | crp->crp_payload_length <= olen, | ||||
("payload outside output buffer")); | ("payload outside output buffer")); | ||||
} | } | ||||
if (csp->csp_mode == CSP_MODE_DIGEST || | |||||
if (crp->crp_op & CRYPTO_OP_SKIP_DIGEST) | |||||
/* NOP */; | |||||
else if (csp->csp_mode == CSP_MODE_DIGEST || | |||||
csp->csp_mode == CSP_MODE_AEAD || csp->csp_mode == CSP_MODE_ETA) { | csp->csp_mode == CSP_MODE_AEAD || csp->csp_mode == CSP_MODE_ETA) { | ||||
if (crp->crp_op & CRYPTO_OP_VERIFY_DIGEST) | if (crp->crp_op & CRYPTO_OP_VERIFY_DIGEST) | ||||
len = ilen; | len = ilen; | ||||
else | else | ||||
len = olen; | len = olen; | ||||
KASSERT(crp->crp_digest_start == 0 || | KASSERT(crp->crp_digest_start == 0 || | ||||
crp->crp_digest_start < len, | crp->crp_digest_start < len, | ||||
("invalid digest start")); | ("invalid digest start")); | ||||
▲ Show 20 Lines • Show All 595 Lines • Show Last 20 Lines |