Changeset View
Changeset View
Standalone View
Standalone View
sys/dev/sec/sec.c
Show First 20 Lines • Show All 564 Lines • ▼ Show 20 Lines | while (SEC_QUEUED_DESC_CNT(sc) > 0) { | ||||
SEC_DESC_SYNC_POINTERS(desc, BUS_DMASYNC_PREREAD | | SEC_DESC_SYNC_POINTERS(desc, BUS_DMASYNC_PREREAD | | ||||
BUS_DMASYNC_PREWRITE); | BUS_DMASYNC_PREWRITE); | ||||
crp = desc->sd_crp; | crp = desc->sd_crp; | ||||
crp->crp_etype = desc->sd_error; | crp->crp_etype = desc->sd_error; | ||||
if (crp->crp_etype == 0) { | if (crp->crp_etype == 0) { | ||||
ses = crypto_get_driver_session(crp->crp_session); | ses = crypto_get_driver_session(crp->crp_session); | ||||
if (ses->ss_mlen != 0) { | if (ses->ss_mlen != 0 && | ||||
(crp->crp_op & CRYPTO_OP_SKIP_DIGEST) == 0) { | |||||
if (crp->crp_op & CRYPTO_OP_VERIFY_DIGEST) { | if (crp->crp_op & CRYPTO_OP_VERIFY_DIGEST) { | ||||
crypto_copydata(crp, | crypto_copydata(crp, | ||||
crp->crp_digest_start, | crp->crp_digest_start, | ||||
ses->ss_mlen, hash); | ses->ss_mlen, hash); | ||||
if (timingsafe_bcmp( | if (timingsafe_bcmp( | ||||
desc->sd_desc->shd_digest, | desc->sd_desc->shd_digest, | ||||
hash, ses->ss_mlen) != 0) | hash, ses->ss_mlen) != 0) | ||||
crp->crp_etype = EBADMSG; | crp->crp_etype = EBADMSG; | ||||
▲ Show 20 Lines • Show All 1,008 Lines • Show Last 20 Lines |