crypto_digest
STRUCT_DECL(crypto_digest, crypto_digest);
STRUCT_INIT(crypto_digest, mode);
if (copyin(arg, STRUCT_BUF(crypto_digest),
STRUCT_SIZE(crypto_digest)) != 0) {
datalen = STRUCT_FGET(crypto_digest, cd_datalen);
digestlen = STRUCT_FGET(crypto_digest, cd_digestlen);
digestbuf = STRUCT_FGETP(crypto_digest, cd_digestbuf);
session_id = STRUCT_FGET(crypto_digest, cd_session);
if (datalen != 0 && copyin(STRUCT_FGETP(crypto_digest, cd_databuf),
STRUCT_FSET(crypto_digest, cd_digestlen,
if (STRUCT_FGETP(crypto_digest, cd_digestbuf) == NULL)
STRUCT_FSET(crypto_digest, cd_digestlen,
STRUCT_FSET(crypto_digest, cd_return_value, rv);
if (copyout(STRUCT_BUF(crypto_digest), arg,
STRUCT_SIZE(crypto_digest)) != 0) {
rv = crypto_digest(&mech, &d1, &d2, NULL);
extern int crypto_digest(crypto_mechanism_t *mech, crypto_data_t *data,