Changeset View
Changeset View
Standalone View
Standalone View
sys/mips/nlm/dev/sec/nlmsec.c
Show First 20 Lines • Show All 278 Lines • ▼ Show 20 Lines | nlm_xlpsec_msgring_handler(int vc, int size, int code, int src_id, | ||||
*/ | */ | ||||
if (sc->sc_needwakeup) { | if (sc->sc_needwakeup) { | ||||
atomic_add_int(&creditleft, sc->sec_msgsz); | atomic_add_int(&creditleft, sc->sec_msgsz); | ||||
if (creditleft >= (NLM_CRYPTO_LEFT_REQS)) { | if (creditleft >= (NLM_CRYPTO_LEFT_REQS)) { | ||||
crypto_unblock(sc->sc_cid, sc->sc_needwakeup); | crypto_unblock(sc->sc_cid, sc->sc_needwakeup); | ||||
sc->sc_needwakeup &= ~CRYPTO_SYMQ; | sc->sc_needwakeup &= ~CRYPTO_SYMQ; | ||||
} | } | ||||
} | } | ||||
if (cmd->hash_dst_len != 0) { | if (cmd->hash_dst_len != 0 && | ||||
(crp->crp_op & CRYPTO_OP_SKIP_DIGEST) == 0) { | |||||
if (cmd->crp->crp_op & CRYPTO_OP_VERIFY_DIGEST) { | if (cmd->crp->crp_op & CRYPTO_OP_VERIFY_DIGEST) { | ||||
crypto_copydata(cmd->crp, cmd->crp->crp_digest_start, | crypto_copydata(cmd->crp, cmd->crp->crp_digest_start, | ||||
cmd->hash_dst_len, hash); | cmd->hash_dst_len, hash); | ||||
if (timingsafe_bcmp(cmd->hashdest, hash, | if (timingsafe_bcmp(cmd->hashdest, hash, | ||||
cmd->hash_dst_len) != 0) | cmd->hash_dst_len) != 0) | ||||
cmd->crp->crp_etype = EBADMSG; | cmd->crp->crp_etype = EBADMSG; | ||||
} else | } else | ||||
crypto_copyback(cmd->crp, cmd->crp->crp_digest_start, | crypto_copyback(cmd->crp, cmd->crp->crp_digest_start, | ||||
▲ Show 20 Lines • Show All 397 Lines • Show Last 20 Lines |