16df3ef80SGreg Tucker /**********************************************************************
26df3ef80SGreg Tucker Copyright(c) 2011-2016 Intel Corporation All rights reserved.
36df3ef80SGreg Tucker
46df3ef80SGreg Tucker Redistribution and use in source and binary forms, with or without
56df3ef80SGreg Tucker modification, are permitted provided that the following conditions
66df3ef80SGreg Tucker are met:
76df3ef80SGreg Tucker * Redistributions of source code must retain the above copyright
86df3ef80SGreg Tucker notice, this list of conditions and the following disclaimer.
96df3ef80SGreg Tucker * Redistributions in binary form must reproduce the above copyright
106df3ef80SGreg Tucker notice, this list of conditions and the following disclaimer in
116df3ef80SGreg Tucker the documentation and/or other materials provided with the
126df3ef80SGreg Tucker distribution.
136df3ef80SGreg Tucker * Neither the name of Intel Corporation nor the names of its
146df3ef80SGreg Tucker contributors may be used to endorse or promote products derived
156df3ef80SGreg Tucker from this software without specific prior written permission.
166df3ef80SGreg Tucker
176df3ef80SGreg Tucker THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
186df3ef80SGreg Tucker "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
196df3ef80SGreg Tucker LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
206df3ef80SGreg Tucker A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
216df3ef80SGreg Tucker OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
226df3ef80SGreg Tucker SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
236df3ef80SGreg Tucker LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
246df3ef80SGreg Tucker DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
256df3ef80SGreg Tucker THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
266df3ef80SGreg Tucker (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
276df3ef80SGreg Tucker OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
286df3ef80SGreg Tucker **********************************************************************/
296df3ef80SGreg Tucker
306df3ef80SGreg Tucker #include <stdio.h>
316df3ef80SGreg Tucker #include <stdlib.h>
326df3ef80SGreg Tucker #include <string.h>
336df3ef80SGreg Tucker #include "sha256_mb.h"
346df3ef80SGreg Tucker
350a437795SPablo de Lara typedef uint32_t DigestSHA256[ISAL_SHA256_DIGEST_NWORDS];
366df3ef80SGreg Tucker
376df3ef80SGreg Tucker #define MSGS 7
386df3ef80SGreg Tucker #define NUM_JOBS 1000
396df3ef80SGreg Tucker
406df3ef80SGreg Tucker #define PSEUDO_RANDOM_NUM(seed) ((seed) * 5 + ((seed) * (seed)) / 64) % MSGS
416df3ef80SGreg Tucker
426df3ef80SGreg Tucker static uint8_t msg1[] = "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq";
436df3ef80SGreg Tucker static uint8_t msg2[] = "0123456789:;<=>?@ABCDEFGHIJKLMNO";
449ba6f238SMarcel Cornu static uint8_t msg3[] = "0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWX"
459ba6f238SMarcel Cornu "0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWX"
466df3ef80SGreg Tucker "0123456789:;<";
479ba6f238SMarcel Cornu static uint8_t msg4[] = "0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWX"
489ba6f238SMarcel Cornu "0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWX"
499ba6f238SMarcel Cornu "0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWX"
509ba6f238SMarcel Cornu "0123456789:;<=>?@ABCDEFGHIJKLMNOPQR";
519ba6f238SMarcel Cornu static uint8_t msg5[] = "0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWX"
529ba6f238SMarcel Cornu "0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWX"
539ba6f238SMarcel Cornu "0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWX"
549ba6f238SMarcel Cornu "0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWX"
559ba6f238SMarcel Cornu "0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWX"
569ba6f238SMarcel Cornu "0123456789:;<=>?";
579ba6f238SMarcel Cornu static uint8_t msg6[] = "0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWX"
589ba6f238SMarcel Cornu "0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWX"
599ba6f238SMarcel Cornu "0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWX"
609ba6f238SMarcel Cornu "0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWX"
619ba6f238SMarcel Cornu "0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWX"
629ba6f238SMarcel Cornu "0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWX"
636df3ef80SGreg Tucker "0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTU";
646df3ef80SGreg Tucker static uint8_t msg7[] = "";
656df3ef80SGreg Tucker
666df3ef80SGreg Tucker static DigestSHA256 expResultDigest1 = { 0x248D6A61, 0xD20638B8, 0xE5C02693, 0x0C3E6039,
679ba6f238SMarcel Cornu 0xA33CE459, 0x64FF2167, 0xF6ECEDD4, 0x19DB06C1 };
686df3ef80SGreg Tucker
696df3ef80SGreg Tucker static DigestSHA256 expResultDigest2 = { 0xD9C2E699, 0x586B948F, 0x4022C799, 0x4FFE14C6,
709ba6f238SMarcel Cornu 0x3A4E8E31, 0x2EE2AEE1, 0xEBE51BED, 0x85705CFD };
716df3ef80SGreg Tucker
726df3ef80SGreg Tucker static DigestSHA256 expResultDigest3 = { 0xE3057651, 0x81295681, 0x7ECF1791, 0xFF9A1619,
739ba6f238SMarcel Cornu 0xB2BC5CAD, 0x2AC00018, 0x92AE489C, 0x48DD10B3 };
746df3ef80SGreg Tucker
756df3ef80SGreg Tucker static DigestSHA256 expResultDigest4 = { 0x0307DAA3, 0x7130A140, 0x270790F9, 0x95B71407,
769ba6f238SMarcel Cornu 0x8EC752A6, 0x084EC1F3, 0xBD873D79, 0x3FF78383 };
776df3ef80SGreg Tucker
786df3ef80SGreg Tucker static DigestSHA256 expResultDigest5 = { 0x679312F7, 0x2E18D599, 0x5F51BDC6, 0x4ED56AFD,
799ba6f238SMarcel Cornu 0x9B5704D3, 0x4387E11C, 0xC2331089, 0x2CD45DAA };
806df3ef80SGreg Tucker
816df3ef80SGreg Tucker static DigestSHA256 expResultDigest6 = { 0x8B1767E9, 0x7BA7BBE5, 0xF9A6E8D9, 0x9996904F,
829ba6f238SMarcel Cornu 0x3AF6562E, 0xA58AF438, 0x5D8D584B, 0x81C808CE };
836df3ef80SGreg Tucker
846df3ef80SGreg Tucker static DigestSHA256 expResultDigest7 = { 0xE3B0C442, 0x98FC1C14, 0x9AFBF4C8, 0x996FB924,
859ba6f238SMarcel Cornu 0x27AE41E4, 0x649B934C, 0xA495991B, 0x7852B855 };
866df3ef80SGreg Tucker
876df3ef80SGreg Tucker static uint8_t *msgs[MSGS] = { msg1, msg2, msg3, msg4, msg5, msg6, msg7 };
886df3ef80SGreg Tucker
899ba6f238SMarcel Cornu static uint32_t *expResultDigest[MSGS] = { expResultDigest1, expResultDigest2, expResultDigest3,
906df3ef80SGreg Tucker expResultDigest4, expResultDigest5, expResultDigest6,
919ba6f238SMarcel Cornu expResultDigest7 };
926df3ef80SGreg Tucker
93ba178e5cSJerry Yu #define NUM_CHUNKS 4
94ba178e5cSJerry Yu #define DATA_BUF_LEN 4096
959ba6f238SMarcel Cornu int
non_blocksize_updates_test(ISAL_SHA256_HASH_CTX_MGR * mgr)960a437795SPablo de Lara non_blocksize_updates_test(ISAL_SHA256_HASH_CTX_MGR *mgr)
97ba178e5cSJerry Yu {
980a437795SPablo de Lara ISAL_SHA256_HASH_CTX ctx_refer;
990a437795SPablo de Lara ISAL_SHA256_HASH_CTX ctx_pool[NUM_CHUNKS];
1000a437795SPablo de Lara ISAL_SHA256_HASH_CTX *ctx = NULL;
101*487b772bSPablo de Lara int rc;
102ba178e5cSJerry Yu
103ba178e5cSJerry Yu const int update_chunks[NUM_CHUNKS] = { 32, 64, 128, 256 };
104ba178e5cSJerry Yu unsigned char data_buf[DATA_BUF_LEN];
105ba178e5cSJerry Yu
106ba178e5cSJerry Yu memset(data_buf, 0xA, DATA_BUF_LEN);
107ba178e5cSJerry Yu
108ba178e5cSJerry Yu // Init contexts before first use
1098cb7fe78SPablo de Lara isal_hash_ctx_init(&ctx_refer);
110ba178e5cSJerry Yu
111*487b772bSPablo de Lara rc = isal_sha256_ctx_mgr_submit(mgr, &ctx_refer, &ctx, data_buf, DATA_BUF_LEN,
112*487b772bSPablo de Lara ISAL_HASH_ENTIRE);
113*487b772bSPablo de Lara if (rc)
114ba178e5cSJerry Yu return -1;
115*487b772bSPablo de Lara
116*487b772bSPablo de Lara rc = isal_sha256_ctx_mgr_flush(mgr, &ctx);
117*487b772bSPablo de Lara if (rc)
118ba178e5cSJerry Yu return -1;
119ba178e5cSJerry Yu
120ba178e5cSJerry Yu for (int c = 0; c < NUM_CHUNKS; c++) {
121ba178e5cSJerry Yu int chunk = update_chunks[c];
1228cb7fe78SPablo de Lara isal_hash_ctx_init(&ctx_pool[c]);
123*487b772bSPablo de Lara rc = isal_sha256_ctx_mgr_submit(mgr, &ctx_pool[c], &ctx, NULL, 0, ISAL_HASH_FIRST);
124*487b772bSPablo de Lara if (rc)
125ba178e5cSJerry Yu return -1;
126*487b772bSPablo de Lara rc = isal_sha256_ctx_mgr_flush(mgr, &ctx);
127*487b772bSPablo de Lara if (rc)
128ba178e5cSJerry Yu return -1;
129a55e0afeSPablo de Lara for (int i = 0; i * chunk < DATA_BUF_LEN; i++) {
130*487b772bSPablo de Lara rc = isal_sha256_ctx_mgr_submit(mgr, &ctx_pool[c], &ctx,
131*487b772bSPablo de Lara data_buf + i * chunk, chunk,
132a55e0afeSPablo de Lara ISAL_HASH_UPDATE);
133*487b772bSPablo de Lara if (rc)
134a55e0afeSPablo de Lara return -1;
135*487b772bSPablo de Lara rc = isal_sha256_ctx_mgr_flush(mgr, &ctx);
136*487b772bSPablo de Lara if (rc)
137a55e0afeSPablo de Lara return -1;
138ba178e5cSJerry Yu }
139ba178e5cSJerry Yu }
140ba178e5cSJerry Yu
141ba178e5cSJerry Yu for (int c = 0; c < NUM_CHUNKS; c++) {
142*487b772bSPablo de Lara rc = isal_sha256_ctx_mgr_submit(mgr, &ctx_pool[c], &ctx, NULL, 0, ISAL_HASH_LAST);
143*487b772bSPablo de Lara if (rc)
144ba178e5cSJerry Yu return -1;
145*487b772bSPablo de Lara rc = isal_sha256_ctx_mgr_flush(mgr, &ctx);
146*487b772bSPablo de Lara if (rc)
147ba178e5cSJerry Yu return -1;
1488cb7fe78SPablo de Lara if (ctx_pool[c].status != ISAL_HASH_CTX_STS_COMPLETE) {
149ba178e5cSJerry Yu return -1;
150ba178e5cSJerry Yu }
1510a437795SPablo de Lara for (int i = 0; i < ISAL_SHA256_DIGEST_NWORDS; i++) {
152ba178e5cSJerry Yu if (ctx_refer.job.result_digest[i] != ctx_pool[c].job.result_digest[i]) {
1539ba6f238SMarcel Cornu printf("sha256 calc error! chunk %d, digest[%d], (%d) != (%d)\n",
154ba178e5cSJerry Yu update_chunks[c], i, ctx_refer.job.result_digest[i],
155ba178e5cSJerry Yu ctx_pool[c].job.result_digest[i]);
156ba178e5cSJerry Yu return -2;
157ba178e5cSJerry Yu }
158ba178e5cSJerry Yu }
159ba178e5cSJerry Yu }
160ba178e5cSJerry Yu return 0;
161ba178e5cSJerry Yu }
162ba178e5cSJerry Yu
1639ba6f238SMarcel Cornu int
main(void)1649ba6f238SMarcel Cornu main(void)
1656df3ef80SGreg Tucker {
1660a437795SPablo de Lara ISAL_SHA256_HASH_CTX_MGR *mgr = NULL;
1670a437795SPablo de Lara ISAL_SHA256_HASH_CTX ctxpool[NUM_JOBS], *ctx = NULL;
1686df3ef80SGreg Tucker uint32_t i, j, k, t, checked = 0;
1696df3ef80SGreg Tucker uint32_t *good;
170d797c594SMarcel Cornu int rc, ret = -1;
1716df3ef80SGreg Tucker
1720a437795SPablo de Lara rc = posix_memalign((void *) &mgr, 16, sizeof(ISAL_SHA256_HASH_CTX_MGR));
173d797c594SMarcel Cornu if ((rc != 0) || (mgr == NULL)) {
174c91caf97STom Cosgrove printf("posix_memalign failed test aborted\n");
175c91caf97STom Cosgrove return 1;
176c91caf97STom Cosgrove }
177c91caf97STom Cosgrove
178*487b772bSPablo de Lara rc = isal_sha256_ctx_mgr_init(mgr);
179*487b772bSPablo de Lara if (rc)
180*487b772bSPablo de Lara goto end;
1816df3ef80SGreg Tucker
1826df3ef80SGreg Tucker // Init contexts before first use
1836df3ef80SGreg Tucker for (i = 0; i < MSGS; i++) {
1848cb7fe78SPablo de Lara isal_hash_ctx_init(&ctxpool[i]);
1856df3ef80SGreg Tucker ctxpool[i].user_data = (void *) ((uint64_t) i);
1866df3ef80SGreg Tucker }
1876df3ef80SGreg Tucker
1886df3ef80SGreg Tucker for (i = 0; i < MSGS; i++) {
189*487b772bSPablo de Lara rc = isal_sha256_ctx_mgr_submit(mgr, &ctxpool[i], &ctx, msgs[i],
190*487b772bSPablo de Lara (uint32_t) strlen((char *) msgs[i]),
191*487b772bSPablo de Lara ISAL_HASH_ENTIRE);
192*487b772bSPablo de Lara if (rc)
193*487b772bSPablo de Lara goto end;
1946df3ef80SGreg Tucker
1956df3ef80SGreg Tucker if (ctx) {
196122c1779SMarcel Cornu t = (uint32_t) (uintptr_t) (ctx->user_data);
1976df3ef80SGreg Tucker good = expResultDigest[t];
1986df3ef80SGreg Tucker checked++;
1990a437795SPablo de Lara for (j = 0; j < ISAL_SHA256_DIGEST_NWORDS; j++) {
2006df3ef80SGreg Tucker if (good[j] != ctxpool[t].job.result_digest[j]) {
2019ba6f238SMarcel Cornu printf("Test %d, digest %d is %08X, should be %08X\n", t, j,
2029ba6f238SMarcel Cornu ctxpool[t].job.result_digest[j], good[j]);
203d797c594SMarcel Cornu goto end;
2046df3ef80SGreg Tucker }
2056df3ef80SGreg Tucker }
2066df3ef80SGreg Tucker
2076df3ef80SGreg Tucker if (ctx->error) {
2086df3ef80SGreg Tucker printf("Something bad happened during the submit."
2099ba6f238SMarcel Cornu " Error code: %d",
2109ba6f238SMarcel Cornu ctx->error);
211d797c594SMarcel Cornu goto end;
2126df3ef80SGreg Tucker }
2136df3ef80SGreg Tucker }
2146df3ef80SGreg Tucker }
2156df3ef80SGreg Tucker
2166df3ef80SGreg Tucker while (1) {
217*487b772bSPablo de Lara rc = isal_sha256_ctx_mgr_flush(mgr, &ctx);
218*487b772bSPablo de Lara if (rc)
219*487b772bSPablo de Lara goto end;
2206df3ef80SGreg Tucker
2216df3ef80SGreg Tucker if (ctx) {
222122c1779SMarcel Cornu t = (uint32_t) (uintptr_t) (ctx->user_data);
2236df3ef80SGreg Tucker good = expResultDigest[t];
2246df3ef80SGreg Tucker checked++;
2250a437795SPablo de Lara for (j = 0; j < ISAL_SHA256_DIGEST_NWORDS; j++) {
2266df3ef80SGreg Tucker if (good[j] != ctxpool[t].job.result_digest[j]) {
2279ba6f238SMarcel Cornu printf("Test %d, digest %d is %08X, should be %08X\n", t, j,
2289ba6f238SMarcel Cornu ctxpool[t].job.result_digest[j], good[j]);
229d797c594SMarcel Cornu goto end;
2306df3ef80SGreg Tucker }
2316df3ef80SGreg Tucker }
2326df3ef80SGreg Tucker
2336df3ef80SGreg Tucker if (ctx->error) {
2346df3ef80SGreg Tucker printf("Something bad happened during the submit."
2359ba6f238SMarcel Cornu " Error code: %d",
2369ba6f238SMarcel Cornu ctx->error);
237d797c594SMarcel Cornu goto end;
2386df3ef80SGreg Tucker }
2396df3ef80SGreg Tucker } else {
2406df3ef80SGreg Tucker break;
2416df3ef80SGreg Tucker }
2426df3ef80SGreg Tucker }
2436df3ef80SGreg Tucker
2446df3ef80SGreg Tucker // do larger test in pseudo-random order
2456df3ef80SGreg Tucker
2466df3ef80SGreg Tucker // Init contexts before first use
2476df3ef80SGreg Tucker for (i = 0; i < NUM_JOBS; i++) {
2488cb7fe78SPablo de Lara isal_hash_ctx_init(&ctxpool[i]);
2496df3ef80SGreg Tucker ctxpool[i].user_data = (void *) ((uint64_t) i);
2506df3ef80SGreg Tucker }
2516df3ef80SGreg Tucker
2526df3ef80SGreg Tucker checked = 0;
2536df3ef80SGreg Tucker for (i = 0; i < NUM_JOBS; i++) {
2546df3ef80SGreg Tucker j = PSEUDO_RANDOM_NUM(i);
255*487b772bSPablo de Lara rc = isal_sha256_ctx_mgr_submit(mgr, &ctxpool[i], &ctx, msgs[j],
256*487b772bSPablo de Lara (uint32_t) strlen((char *) msgs[j]),
257*487b772bSPablo de Lara ISAL_HASH_ENTIRE);
258*487b772bSPablo de Lara if (rc)
259*487b772bSPablo de Lara goto end;
2606df3ef80SGreg Tucker if (ctx) {
261122c1779SMarcel Cornu t = (uint32_t) (uintptr_t) (ctx->user_data);
2626df3ef80SGreg Tucker k = PSEUDO_RANDOM_NUM(t);
2636df3ef80SGreg Tucker good = expResultDigest[k];
2646df3ef80SGreg Tucker checked++;
2650a437795SPablo de Lara for (j = 0; j < ISAL_SHA256_DIGEST_NWORDS; j++) {
2666df3ef80SGreg Tucker if (good[j] != ctxpool[t].job.result_digest[j]) {
2679ba6f238SMarcel Cornu printf("Test %d, digest %d is %08X, should be %08X\n", t, j,
2689ba6f238SMarcel Cornu ctxpool[t].job.result_digest[j], good[j]);
269d797c594SMarcel Cornu goto end;
2706df3ef80SGreg Tucker }
2716df3ef80SGreg Tucker }
2726df3ef80SGreg Tucker
2736df3ef80SGreg Tucker if (ctx->error) {
2746df3ef80SGreg Tucker printf("Something bad happened during the"
2759ba6f238SMarcel Cornu " submit. Error code: %d",
2769ba6f238SMarcel Cornu ctx->error);
277d797c594SMarcel Cornu goto end;
2786df3ef80SGreg Tucker }
2796df3ef80SGreg Tucker
280122c1779SMarcel Cornu t = (uint32_t) (uintptr_t) (ctx->user_data);
2816df3ef80SGreg Tucker k = PSEUDO_RANDOM_NUM(t);
2826df3ef80SGreg Tucker }
2836df3ef80SGreg Tucker }
2846df3ef80SGreg Tucker while (1) {
285*487b772bSPablo de Lara rc = isal_sha256_ctx_mgr_flush(mgr, &ctx);
286*487b772bSPablo de Lara if (rc)
287*487b772bSPablo de Lara goto end;
2886df3ef80SGreg Tucker
2896df3ef80SGreg Tucker if (ctx) {
290122c1779SMarcel Cornu t = (uint32_t) (uintptr_t) (ctx->user_data);
2916df3ef80SGreg Tucker k = PSEUDO_RANDOM_NUM(t);
2926df3ef80SGreg Tucker good = expResultDigest[k];
2936df3ef80SGreg Tucker checked++;
2940a437795SPablo de Lara for (j = 0; j < ISAL_SHA256_DIGEST_NWORDS; j++) {
2956df3ef80SGreg Tucker if (good[j] != ctxpool[t].job.result_digest[j]) {
2969ba6f238SMarcel Cornu printf("Test %d, digest %d is %08X, should be %08X\n", t, j,
2979ba6f238SMarcel Cornu ctxpool[t].job.result_digest[j], good[j]);
298d797c594SMarcel Cornu goto end;
2996df3ef80SGreg Tucker }
3006df3ef80SGreg Tucker }
3016df3ef80SGreg Tucker
3026df3ef80SGreg Tucker if (ctx->error) {
3036df3ef80SGreg Tucker printf("Something bad happened during the submit."
3049ba6f238SMarcel Cornu " Error code: %d",
3059ba6f238SMarcel Cornu ctx->error);
306d797c594SMarcel Cornu goto end;
3076df3ef80SGreg Tucker }
3086df3ef80SGreg Tucker } else {
3096df3ef80SGreg Tucker break;
3106df3ef80SGreg Tucker }
3116df3ef80SGreg Tucker }
3126df3ef80SGreg Tucker
3136df3ef80SGreg Tucker if (checked != NUM_JOBS) {
3146df3ef80SGreg Tucker printf("only tested %d rather than %d\n", checked, NUM_JOBS);
315d797c594SMarcel Cornu goto end;
3166df3ef80SGreg Tucker }
3176df3ef80SGreg Tucker
318d797c594SMarcel Cornu rc = non_blocksize_updates_test(mgr);
319ba178e5cSJerry Yu if (rc) {
320ba178e5cSJerry Yu printf("multi updates test fail %d\n", rc);
321d797c594SMarcel Cornu goto end;
322ba178e5cSJerry Yu }
323d797c594SMarcel Cornu ret = 0;
324ba178e5cSJerry Yu
3256df3ef80SGreg Tucker printf(" multibinary_sha256 test: Pass\n");
326d797c594SMarcel Cornu end:
327d797c594SMarcel Cornu aligned_free(mgr);
3286df3ef80SGreg Tucker
329d797c594SMarcel Cornu return ret;
3306df3ef80SGreg Tucker }
331