Changeset View
Changeset View
Standalone View
Standalone View
sys/opencrypto/cryptodev.c
Show First 20 Lines • Show All 848 Lines • ▼ Show 20 Lines | if (crde == NULL) { | ||||
goto bail; | goto bail; | ||||
} | } | ||||
if (cse->cipher == CRYPTO_ARC4) { /* XXX use flag? */ | if (cse->cipher == CRYPTO_ARC4) { /* XXX use flag? */ | ||||
SDT_PROBE1(opencrypto, dev, ioctl, error, __LINE__); | SDT_PROBE1(opencrypto, dev, ioctl, error, __LINE__); | ||||
error = EINVAL; | error = EINVAL; | ||||
goto bail; | goto bail; | ||||
} | } | ||||
if ((error = copyin(cop->iv, crde->crd_iv, | if ((error = copyin(cop->iv, crde->crd_iv, | ||||
cse->txform->blocksize))) { | cse->txform->ivsize))) { | ||||
SDT_PROBE1(opencrypto, dev, ioctl, error, __LINE__); | SDT_PROBE1(opencrypto, dev, ioctl, error, __LINE__); | ||||
goto bail; | goto bail; | ||||
} | } | ||||
crde->crd_flags |= CRD_F_IV_EXPLICIT | CRD_F_IV_PRESENT; | crde->crd_flags |= CRD_F_IV_EXPLICIT | CRD_F_IV_PRESENT; | ||||
crde->crd_skip = 0; | crde->crd_skip = 0; | ||||
} else if (cse->cipher == CRYPTO_ARC4) { /* XXX use flag? */ | } else if (cse->cipher == CRYPTO_ARC4) { /* XXX use flag? */ | ||||
crde->crd_skip = 0; | crde->crd_skip = 0; | ||||
} else if (crde) { | } else if (crde) { | ||||
crde->crd_flags |= CRD_F_IV_PRESENT; | crde->crd_flags |= CRD_F_IV_PRESENT; | ||||
crde->crd_skip = cse->txform->blocksize; | crde->crd_skip = cse->txform->ivsize; | ||||
crde->crd_len -= cse->txform->blocksize; | crde->crd_len -= cse->txform->ivsize; | ||||
} | } | ||||
if (cop->mac && crda == NULL) { | if (cop->mac && crda == NULL) { | ||||
SDT_PROBE1(opencrypto, dev, ioctl, error, __LINE__); | SDT_PROBE1(opencrypto, dev, ioctl, error, __LINE__); | ||||
error = EINVAL; | error = EINVAL; | ||||
goto bail; | goto bail; | ||||
} | } | ||||
▲ Show 20 Lines • Show All 150 Lines • ▼ Show 20 Lines | if (caead->iv) { | ||||
if ((error = copyin(caead->iv, crde->crd_iv, caead->ivlen))) { | if ((error = copyin(caead->iv, crde->crd_iv, caead->ivlen))) { | ||||
SDT_PROBE1(opencrypto, dev, ioctl, error, __LINE__); | SDT_PROBE1(opencrypto, dev, ioctl, error, __LINE__); | ||||
goto bail; | goto bail; | ||||
} | } | ||||
crde->crd_flags |= CRD_F_IV_EXPLICIT | CRD_F_IV_PRESENT; | crde->crd_flags |= CRD_F_IV_EXPLICIT | CRD_F_IV_PRESENT; | ||||
} else { | } else { | ||||
crde->crd_flags |= CRD_F_IV_PRESENT; | crde->crd_flags |= CRD_F_IV_PRESENT; | ||||
crde->crd_skip += cse->txform->blocksize; | crde->crd_skip += cse->txform->ivsize; | ||||
crde->crd_len -= cse->txform->blocksize; | crde->crd_len -= cse->txform->ivsize; | ||||
} | } | ||||
if ((error = copyin(caead->tag, (caddr_t)cod->uio.uio_iov[0].iov_base + | if ((error = copyin(caead->tag, (caddr_t)cod->uio.uio_iov[0].iov_base + | ||||
caead->len + caead->aadlen, cse->thash->hashsize))) { | caead->len + caead->aadlen, cse->thash->hashsize))) { | ||||
SDT_PROBE1(opencrypto, dev, ioctl, error, __LINE__); | SDT_PROBE1(opencrypto, dev, ioctl, error, __LINE__); | ||||
goto bail; | goto bail; | ||||
} | } | ||||
again: | again: | ||||
▲ Show 20 Lines • Show All 426 Lines • Show Last 20 Lines |