1299425Smm/*- 2299425Smm * Copyright (c) 2003-2007 Tim Kientzle 3299425Smm * Copyright (c) 2011 Andres Mejia 4299425Smm * All rights reserved. 5299425Smm * 6299425Smm * Redistribution and use in source and binary forms, with or without 7299425Smm * modification, are permitted provided that the following conditions 8299425Smm * are met: 9299425Smm * 1. Redistributions of source code must retain the above copyright 10299425Smm * notice, this list of conditions and the following disclaimer. 11299425Smm * 2. Redistributions in binary form must reproduce the above copyright 12299425Smm * notice, this list of conditions and the following disclaimer in the 13299425Smm * documentation and/or other materials provided with the distribution. 14299425Smm * 15299425Smm * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR 16299425Smm * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 17299425Smm * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 18299425Smm * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT, 19299425Smm * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 20299425Smm * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 21299425Smm * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 22299425Smm * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 23299425Smm * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 24299425Smm * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25299425Smm */ 26299425Smm#include "test.h" 27299425Smm 28299425Smm/* Sanity test of internal digest functionality */ 29299425Smm 30299425Smm#define __LIBARCHIVE_BUILD 1 31299425Smm#include "archive_digest_private.h" 32299425Smm 33299425SmmDEFINE_TEST(test_archive_md5) 34299425Smm{ 35299425Smm archive_md5_ctx ctx; 36299425Smm unsigned char buf[] = ""; 37299425Smm unsigned char md[16]; 38299425Smm unsigned char actualmd[] = "\x93\xb8\x85\xad\xfe\x0d\xa0\x89" 39299425Smm "\xcd\xf6\x34\x90\x4f\xd5\x9f\x71"; 40299425Smm 41299425Smm if (ARCHIVE_OK != archive_md5_init(&ctx)) { 42299425Smm skipping("This platform does not support MD5"); 43299425Smm return; 44299425Smm } 45299425Smm assertEqualInt(ARCHIVE_OK, archive_md5_update(&ctx, buf, sizeof(buf))); 46299425Smm assertEqualInt(ARCHIVE_OK, archive_md5_final(&ctx, md)); 47299425Smm assertEqualMem(md, actualmd, sizeof(md)); 48299425Smm} 49299425Smm 50299425SmmDEFINE_TEST(test_archive_rmd160) 51299425Smm{ 52299425Smm archive_rmd160_ctx ctx; 53299425Smm unsigned char buf[] = ""; 54299425Smm unsigned char md[20]; 55299425Smm unsigned char actualmd[] = "\xc8\x1b\x94\x93\x34\x20\x22\x1a\x7a\xc0" 56299425Smm "\x04\xa9\x02\x42\xd8\xb1\xd3\xe5\x07\x0d"; 57299425Smm 58299425Smm if (ARCHIVE_OK != archive_rmd160_init(&ctx)) { 59299425Smm skipping("This platform does not support RMD160"); 60299425Smm return; 61299425Smm } 62299425Smm assertEqualInt(ARCHIVE_OK, archive_rmd160_update(&ctx, buf, sizeof(buf))); 63299425Smm assertEqualInt(ARCHIVE_OK, archive_rmd160_final(&ctx, md)); 64299425Smm assertEqualMem(md, actualmd, sizeof(md)); 65299425Smm} 66299425Smm 67299425SmmDEFINE_TEST(test_archive_sha1) 68299425Smm{ 69299425Smm archive_sha1_ctx ctx; 70299425Smm unsigned char buf[] = ""; 71299425Smm unsigned char md[20]; 72299425Smm unsigned char actualmd[] = "\x5b\xa9\x3c\x9d\xb0\xcf\xf9\x3f\x52\xb5" 73299425Smm "\x21\xd7\x42\x0e\x43\xf6\xed\xa2\x78\x4f"; 74299425Smm 75299425Smm if (ARCHIVE_OK != archive_sha1_init(&ctx)) { 76299425Smm skipping("This platform does not support SHA1"); 77299425Smm return; 78299425Smm } 79299425Smm assertEqualInt(ARCHIVE_OK, archive_sha1_update(&ctx, buf, sizeof(buf))); 80299425Smm assertEqualInt(ARCHIVE_OK, archive_sha1_final(&ctx, md)); 81299425Smm assertEqualMem(md, actualmd, sizeof(md)); 82299425Smm} 83299425Smm 84299425SmmDEFINE_TEST(test_archive_sha256) 85299425Smm{ 86299425Smm archive_sha256_ctx ctx; 87299425Smm unsigned char buf[] = ""; 88299425Smm unsigned char md[32]; 89299425Smm unsigned char actualmd[] = "\x6e\x34\x0b\x9c\xff\xb3\x7a\x98" 90299425Smm "\x9c\xa5\x44\xe6\xbb\x78\x0a\x2c" 91299425Smm "\x78\x90\x1d\x3f\xb3\x37\x38\x76" 92299425Smm "\x85\x11\xa3\x06\x17\xaf\xa0\x1d"; 93299425Smm 94299425Smm if (ARCHIVE_OK != archive_sha256_init(&ctx)) { 95299425Smm skipping("This platform does not support SHA256"); 96299425Smm return; 97299425Smm } 98299425Smm assertEqualInt(ARCHIVE_OK, archive_sha256_update(&ctx, buf, sizeof(buf))); 99299425Smm assertEqualInt(ARCHIVE_OK, archive_sha256_final(&ctx, md)); 100299425Smm assertEqualMem(md, actualmd, sizeof(md)); 101299425Smm} 102299425Smm 103299425SmmDEFINE_TEST(test_archive_sha384) 104299425Smm{ 105299425Smm archive_sha384_ctx ctx; 106299425Smm unsigned char buf[] = ""; 107299425Smm unsigned char md[48]; 108299425Smm unsigned char actualmd[] = "\xbe\xc0\x21\xb4\xf3\x68\xe3\x06" 109299425Smm "\x91\x34\xe0\x12\xc2\xb4\x30\x70" 110299425Smm "\x83\xd3\xa9\xbd\xd2\x06\xe2\x4e" 111299425Smm "\x5f\x0d\x86\xe1\x3d\x66\x36\x65" 112299425Smm "\x59\x33\xec\x2b\x41\x34\x65\x96" 113299425Smm "\x68\x17\xa9\xc2\x08\xa1\x17\x17"; 114299425Smm 115299425Smm if (ARCHIVE_OK != archive_sha384_init(&ctx)) { 116299425Smm skipping("This platform does not support SHA384"); 117299425Smm return; 118299425Smm } 119299425Smm assertEqualInt(ARCHIVE_OK, archive_sha384_update(&ctx, buf, sizeof(buf))); 120299425Smm assertEqualInt(ARCHIVE_OK, archive_sha384_final(&ctx, md)); 121299425Smm assertEqualMem(md, actualmd, sizeof(md)); 122299425Smm} 123299425Smm 124299425SmmDEFINE_TEST(test_archive_sha512) 125299425Smm{ 126299425Smm archive_sha512_ctx ctx; 127299425Smm unsigned char buf[] = ""; 128299425Smm unsigned char md[64]; 129299425Smm unsigned char actualmd[] = "\xb8\x24\x4d\x02\x89\x81\xd6\x93" 130299425Smm "\xaf\x7b\x45\x6a\xf8\xef\xa4\xca" 131299425Smm "\xd6\x3d\x28\x2e\x19\xff\x14\x94" 132299425Smm "\x2c\x24\x6e\x50\xd9\x35\x1d\x22" 133299425Smm "\x70\x4a\x80\x2a\x71\xc3\x58\x0b" 134299425Smm "\x63\x70\xde\x4c\xeb\x29\x3c\x32" 135299425Smm "\x4a\x84\x23\x34\x25\x57\xd4\xe5" 136299425Smm "\xc3\x84\x38\xf0\xe3\x69\x10\xee"; 137299425Smm 138299425Smm if (ARCHIVE_OK != archive_sha512_init(&ctx)) { 139299425Smm skipping("This platform does not support SHA512"); 140299425Smm return; 141299425Smm } 142299425Smm assertEqualInt(ARCHIVE_OK, archive_sha512_update(&ctx, buf, sizeof(buf))); 143299425Smm assertEqualInt(ARCHIVE_OK, archive_sha512_final(&ctx, md)); 144299425Smm assertEqualMem(md, actualmd, sizeof(md)); 145299425Smm} 146