Print this page
9697 Add digest tests to crypto test framework
*** 373,377 ****
--- 373,441 ----
final.df_datalen = op->outlen - encrlen;
final.df_databuf = op->out + encrlen;
return (kcf_do_ioctl(CRYPTO_DECRYPT_FINAL, (uint_t *)&final, "final"));
}
+
+ int
+ digest_init(crypto_op_t *op)
+ {
+ crypto_digest_init_t init;
+
+ bzero(&init, sizeof (init));
+
+ init.di_session = op->hsession;
+
+ init.di_mech.cm_type = op->mech;
+ init.di_mech.cm_param = NULL;
+ init.di_mech.cm_param_len = 0;
+
+ return (kcf_do_ioctl(CRYPTO_DIGEST_INIT, (uint_t *)&init, "init"));
+ }
+
+ int
+ digest_single(crypto_op_t *op)
+ {
+ crypto_digest_t digest;
+
+ bzero(&digest, sizeof (digest));
+
+ digest.cd_session = op->hsession;
+
+ digest.cd_datalen = op->inlen;
+ digest.cd_databuf = op->in;
+ digest.cd_digestlen = op->outlen;
+ digest.cd_digestbuf = op->out;
+
+ return (kcf_do_ioctl(CRYPTO_DIGEST, (uint_t *)&digest, "digest"));
+ }
+
+ int
+ digest_update(crypto_op_t *op, int offset)
+ {
+ crypto_digest_update_t update;
+
+ bzero(&update, sizeof (update));
+
+ update.du_session = op->hsession;
+
+ update.du_datalen = op->updatelen;
+ update.du_databuf = op->in + offset;
+
+ return (kcf_do_ioctl(CRYPTO_DIGEST_UPDATE, (uint_t *)&update,
+ "update"));
+ }
+
+ int
+ digest_final(crypto_op_t *op)
+ {
+ crypto_digest_final_t final;
+
+ bzero(&final, sizeof (final));
+
+ final.df_session = op->hsession;
+
+ final.df_digestlen = op->outlen;
+ final.df_digestbuf = op->out;
+
+ return (kcf_do_ioctl(CRYPTO_DIGEST_FINAL, (uint_t *)&final, "final"));
+ }