Changeset View
Changeset View
Standalone View
Standalone View
sys/kgssapi/krb5/kcrypto_aes.c
Show First 20 Lines • Show All 116 Lines • ▼ Show 20 Lines | |||||
} | } | ||||
static int | static int | ||||
aes_crypto_cb(struct cryptop *crp) | aes_crypto_cb(struct cryptop *crp) | ||||
{ | { | ||||
int error; | int error; | ||||
struct aes_state *as = (struct aes_state *) crp->crp_opaque; | struct aes_state *as = (struct aes_state *) crp->crp_opaque; | ||||
if (crypto_ses2caps(crp->crp_session) & CRYPTOCAP_F_SYNC) | if (CRYPTO_SESS_SYNC(crp->crp_session)) | ||||
return (0); | return (0); | ||||
error = crp->crp_etype; | error = crp->crp_etype; | ||||
if (error == EAGAIN) | if (error == EAGAIN) | ||||
error = crypto_dispatch(crp); | error = crypto_dispatch(crp); | ||||
mtx_lock(&as->as_lock); | mtx_lock(&as->as_lock); | ||||
if (error || (crp->crp_flags & CRYPTO_F_DONE)) | if (error || (crp->crp_flags & CRYPTO_F_DONE)) | ||||
wakeup(crp); | wakeup(crp); | ||||
Show All 26 Lines | if (buftype == CRYPTO_BUF_MBUF) | ||||
crypto_use_mbuf(crp, buf); | crypto_use_mbuf(crp, buf); | ||||
else | else | ||||
crypto_use_buf(crp, buf, skip + len); | crypto_use_buf(crp, buf, skip + len); | ||||
crp->crp_opaque = as; | crp->crp_opaque = as; | ||||
crp->crp_callback = aes_crypto_cb; | crp->crp_callback = aes_crypto_cb; | ||||
error = crypto_dispatch(crp); | error = crypto_dispatch(crp); | ||||
if ((crypto_ses2caps(as->as_session_aes) & CRYPTOCAP_F_SYNC) == 0) { | if (!CRYPTO_SESS_SYNC(as->as_session_aes)) { | ||||
mtx_lock(&as->as_lock); | mtx_lock(&as->as_lock); | ||||
if (!error && !(crp->crp_flags & CRYPTO_F_DONE)) | if (!error && !(crp->crp_flags & CRYPTO_F_DONE)) | ||||
error = msleep(crp, &as->as_lock, 0, "gssaes", 0); | error = msleep(crp, &as->as_lock, 0, "gssaes", 0); | ||||
mtx_unlock(&as->as_lock); | mtx_unlock(&as->as_lock); | ||||
} | } | ||||
crypto_freereq(crp); | crypto_freereq(crp); | ||||
} | } | ||||
▲ Show 20 Lines • Show All 153 Lines • ▼ Show 20 Lines | aes_checksum(const struct krb5_key_state *ks, int usage, | ||||
crp->crp_digest_start = skip + inlen; | crp->crp_digest_start = skip + inlen; | ||||
crp->crp_flags = CRYPTO_F_CBIFSYNC; | crp->crp_flags = CRYPTO_F_CBIFSYNC; | ||||
crypto_use_mbuf(crp, inout); | crypto_use_mbuf(crp, inout); | ||||
crp->crp_opaque = as; | crp->crp_opaque = as; | ||||
crp->crp_callback = aes_crypto_cb; | crp->crp_callback = aes_crypto_cb; | ||||
error = crypto_dispatch(crp); | error = crypto_dispatch(crp); | ||||
if ((crypto_ses2caps(as->as_session_sha1) & CRYPTOCAP_F_SYNC) == 0) { | if (!CRYPTO_SESS_SYNC(as->as_session_sha1)) { | ||||
mtx_lock(&as->as_lock); | mtx_lock(&as->as_lock); | ||||
if (!error && !(crp->crp_flags & CRYPTO_F_DONE)) | if (!error && !(crp->crp_flags & CRYPTO_F_DONE)) | ||||
error = msleep(crp, &as->as_lock, 0, "gssaes", 0); | error = msleep(crp, &as->as_lock, 0, "gssaes", 0); | ||||
mtx_unlock(&as->as_lock); | mtx_unlock(&as->as_lock); | ||||
} | } | ||||
crypto_freereq(crp); | crypto_freereq(crp); | ||||
} | } | ||||
Show All 36 Lines |