Print this page
9697 Add digest tests to crypto test framework
*** 9,18 ****
--- 9,19 ----
* http://www.illumos.org/license/CDDL.
*/
/*
* Copyright 2016 Nexenta Systems, Inc. All rights reserved.
+ * Copyright 2018, Joyent, Inc.
*/
#define __EXTENSIONS__
#include <strings.h>
#include <stdlib.h>
*** 22,31 ****
--- 23,33 ----
test_fg_t cryptotest_decr_fg = {test_decrypt_single, test_decrypt};
test_fg_t cryptotest_encr_fg = {test_encrypt_single, test_encrypt};
test_fg_t cryptotest_mac_fg = {test_mac_single, test_mac};
+ test_fg_t cryptotest_digest_fg = {test_digest_single, test_digest};
/*
* Utils
*/
*** 263,268 ****
--- 265,323 ----
int
test_decrypt(cryptotest_t *args)
{
return (test_decrypt_common(args, B_FALSE));
+ }
+
+ static int
+ test_digest_common(cryptotest_t *args, boolean_t AIO)
+ {
+ int ret, i;
+ crypto_op_t *crypto_op;
+
+ if ((crypto_op = cryptotest_init(args, CRYPTO_FG_DIGEST)) == NULL) {
+ (void) fprintf(stderr, "Error occured during initalization\n");
+ (void) cryptotest_close(NULL);
+ return (CTEST_INIT_FAILED);
+ }
+
+ if ((ret = get_mech_info(crypto_op)) != CRYPTO_SUCCESS)
+ goto out;
+
+ if ((ret = get_hsession_by_mech(crypto_op)) != CRYPTO_SUCCESS)
+ goto out;
+
+ if ((ret = digest_init(crypto_op)) != CRYPTO_SUCCESS)
+ goto out;
+
+ if (AIO) {
+ if ((ret = digest_single(crypto_op)) != CRYPTO_SUCCESS)
+ goto out;
+ } else {
+ for (i = 0; i < args->inlen; i += args->updatelen) {
+
+ if ((ret = digest_update(crypto_op, i)) !=
+ CRYPTO_SUCCESS)
+ goto out;
+ }
+
+ if ((ret = digest_final(crypto_op)) != CRYPTO_SUCCESS)
+ goto out;
+ }
+
+ out:
+ (void) cryptotest_close(crypto_op);
+ return (ret);
+ }
+
+ int
+ test_digest_single(cryptotest_t *args)
+ {
+ return (test_digest_common(args, B_TRUE));
+ }
+
+ int
+ test_digest(cryptotest_t *args)
+ {
+ return (test_digest_common(args, B_FALSE));
}