diff --git a/contrib/libarchive/libarchive/test/test_write_format_mtree_preset_digests.c b/contrib/libarchive/libarchive/test/test_write_format_mtree_preset_digests.c index cdf789b4b002..bb8ddf49431b 100644 --- a/contrib/libarchive/libarchive/test/test_write_format_mtree_preset_digests.c +++ b/contrib/libarchive/libarchive/test/test_write_format_mtree_preset_digests.c @@ -1,2107 +1,2107 @@ /*- * Copyright (c) 2025 Nicholas Vinson * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer * in this position and unchanged. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" #define __LIBARCHIVE_BUILD 1 #include "archive_digest_private.h" struct expected_digests { unsigned char md5[16]; unsigned char rmd160[20]; unsigned char sha1[20]; unsigned char sha256[32]; unsigned char sha384[48]; unsigned char sha512[64]; }; archive_md5_ctx expectedMd5Ctx; archive_rmd160_ctx expectedRmd160Ctx; archive_sha1_ctx expectedSha1Ctx; archive_sha256_ctx expectedSha256Ctx; archive_sha384_ctx expectedSha384Ctx; archive_sha512_ctx expectedSha512Ctx; DEFINE_TEST(test_write_format_mtree_digests_no_digests_set_no_data) { char buff[4096] = {0}; size_t used = 0; struct archive *a; struct archive_entry *entry; struct expected_digests ed; #ifdef ARCHIVE_HAS_MD5 assertEqualInt(ARCHIVE_OK, archive_md5_init(&expectedMd5Ctx)); assertEqualInt(ARCHIVE_OK, archive_md5_update(&expectedMd5Ctx, "", 0)); assertEqualInt(ARCHIVE_OK, archive_md5_final(&expectedMd5Ctx, ed.md5)); #endif #ifdef ARCHIVE_HAS_RMD160 assertEqualInt(ARCHIVE_OK, archive_rmd160_init(&expectedRmd160Ctx)); assertEqualInt(ARCHIVE_OK, archive_rmd160_update(&expectedRmd160Ctx, "", 0)); assertEqualInt(ARCHIVE_OK, archive_rmd160_final(&expectedRmd160Ctx, ed.rmd160)); #endif #ifdef ARCHIVE_HAS_SHA1 assertEqualInt(ARCHIVE_OK, archive_sha1_init(&expectedSha1Ctx)); assertEqualInt(ARCHIVE_OK, archive_sha1_update(&expectedSha1Ctx, "", 0)); assertEqualInt(ARCHIVE_OK, archive_sha1_final(&expectedSha1Ctx, ed.sha1)); #endif #ifdef ARCHIVE_HAS_SHA256 assertEqualInt(ARCHIVE_OK, archive_sha256_init(&expectedSha256Ctx)); assertEqualInt(ARCHIVE_OK, archive_sha256_update(&expectedSha256Ctx, "", 0)); assertEqualInt(ARCHIVE_OK, archive_sha256_final(&expectedSha256Ctx, ed.sha256)); #endif #ifdef ARCHIVE_HAS_SHA384 assertEqualInt(ARCHIVE_OK, archive_sha384_init(&expectedSha384Ctx)); assertEqualInt(ARCHIVE_OK, archive_sha384_update(&expectedSha384Ctx, "", 0)); assertEqualInt(ARCHIVE_OK, archive_sha384_final(&expectedSha384Ctx, ed.sha384)); #endif #ifdef ARCHIVE_HAS_SHA512 assertEqualInt(ARCHIVE_OK, archive_sha512_init(&expectedSha512Ctx)); assertEqualInt(ARCHIVE_OK, archive_sha512_update(&expectedSha512Ctx, "", 0)); assertEqualInt(ARCHIVE_OK, archive_sha512_final(&expectedSha512Ctx, ed.sha512)); #endif assert((a = archive_write_new()) != NULL); assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_mtree(a)); assertEqualIntA(a, ARCHIVE_OK, archive_write_set_options(a, "all")); assertEqualIntA(a, ARCHIVE_OK, archive_write_open_memory(a, buff, sizeof(buff) - 1, &used)); assert((entry = archive_entry_new()) != NULL); archive_entry_set_pathname(entry, "test.data"); archive_entry_set_filetype(entry, AE_IFREG); archive_entry_set_size(entry, 4); assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, entry)); archive_entry_free(entry); assertEqualIntA(a, ARCHIVE_OK, archive_write_close(a)); assertEqualIntA(a, ARCHIVE_OK, archive_write_free(a)); assert((a = archive_read_new()) != NULL); assert((entry = archive_entry_new()) != NULL); assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a)); assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a)); assertEqualIntA(a, ARCHIVE_OK, archive_read_open_memory(a, buff, used)); assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &entry)); #ifdef ARCHIVE_HAS_MD5 assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_MD5), ed.md5, sizeof(ed.md5)) == 0); #endif #ifdef ARCHIVE_HAS_RMD160 assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_RMD160), ed.rmd160, sizeof(ed.rmd160)) == 0); #endif #ifdef ARCHIVE_HAS_SHA1 assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_SHA1), ed.sha1, sizeof(ed.sha1)) == 0); #endif #ifdef ARCHIVE_HAS_SHA256 assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_SHA256), ed.sha256, sizeof(ed.sha256)) == 0); #endif #ifdef ARCHIVE_HAS_SHA384 assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_SHA384), ed.sha384, sizeof(ed.sha384)) == 0); #endif #ifdef ARCHIVE_HAS_SHA512 assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_SHA512), ed.sha512, sizeof(ed.sha512)) == 0); #endif archive_entry_free(entry); } DEFINE_TEST(test_write_format_mtree_digests_no_digests_set_empty_data) { char buff[4096] = {0}; size_t used = 0; struct archive *a; struct archive_entry *entry; struct expected_digests ed; #ifdef ARCHIVE_HAS_MD5 assertEqualInt(ARCHIVE_OK, archive_md5_init(&expectedMd5Ctx)); assertEqualInt(ARCHIVE_OK, archive_md5_update(&expectedMd5Ctx, "", 0)); assertEqualInt(ARCHIVE_OK, archive_md5_final(&expectedMd5Ctx, ed.md5)); #endif #ifdef ARCHIVE_HAS_RMD160 assertEqualInt(ARCHIVE_OK, archive_rmd160_init(&expectedRmd160Ctx)); assertEqualInt(ARCHIVE_OK, archive_rmd160_update(&expectedRmd160Ctx, "", 0)); assertEqualInt(ARCHIVE_OK, archive_rmd160_final(&expectedRmd160Ctx, ed.rmd160)); #endif #ifdef ARCHIVE_HAS_SHA1 assertEqualInt(ARCHIVE_OK, archive_sha1_init(&expectedSha1Ctx)); assertEqualInt(ARCHIVE_OK, archive_sha1_update(&expectedSha1Ctx, "", 0)); assertEqualInt(ARCHIVE_OK, archive_sha1_final(&expectedSha1Ctx, ed.sha1)); #endif #ifdef ARCHIVE_HAS_SHA256 assertEqualInt(ARCHIVE_OK, archive_sha256_init(&expectedSha256Ctx)); assertEqualInt(ARCHIVE_OK, archive_sha256_update(&expectedSha256Ctx, "", 0)); assertEqualInt(ARCHIVE_OK, archive_sha256_final(&expectedSha256Ctx, ed.sha256)); #endif #ifdef ARCHIVE_HAS_SHA384 assertEqualInt(ARCHIVE_OK, archive_sha384_init(&expectedSha384Ctx)); assertEqualInt(ARCHIVE_OK, archive_sha384_update(&expectedSha384Ctx, "", 0)); assertEqualInt(ARCHIVE_OK, archive_sha384_final(&expectedSha384Ctx, ed.sha384)); #endif #ifdef ARCHIVE_HAS_SHA512 assertEqualInt(ARCHIVE_OK, archive_sha512_init(&expectedSha512Ctx)); assertEqualInt(ARCHIVE_OK, archive_sha512_update(&expectedSha512Ctx, "", 0)); assertEqualInt(ARCHIVE_OK, archive_sha512_final(&expectedSha512Ctx, ed.sha512)); #endif assert((a = archive_write_new()) != NULL); assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_mtree(a)); assertEqualIntA(a, ARCHIVE_OK, archive_write_set_options(a, "all")); assertEqualIntA(a, ARCHIVE_OK, archive_write_open_memory(a, buff, sizeof(buff) - 1, &used)); assert((entry = archive_entry_new()) != NULL); archive_entry_set_pathname(entry, "test.data"); archive_entry_set_filetype(entry, AE_IFREG); archive_entry_set_size(entry, 4); assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, entry)); archive_write_data(a, "", 0); archive_entry_free(entry); assertEqualIntA(a, ARCHIVE_OK, archive_write_close(a)); assertEqualIntA(a, ARCHIVE_OK, archive_write_free(a)); assert((a = archive_read_new()) != NULL); assert((entry = archive_entry_new()) != NULL); assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a)); assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a)); assertEqualIntA(a, ARCHIVE_OK, archive_read_open_memory(a, buff, used)); assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &entry)); #ifdef ARCHIVE_HAS_MD5 assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_MD5), ed.md5, sizeof(ed.md5)) == 0); #endif #ifdef ARCHIVE_HAS_RMD160 assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_RMD160), ed.rmd160, sizeof(ed.rmd160)) == 0); #endif #ifdef ARCHIVE_HAS_SHA1 assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_SHA1), ed.sha1, sizeof(ed.sha1)) == 0); #endif #ifdef ARCHIVE_HAS_SHA256 assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_SHA256), ed.sha256, sizeof(ed.sha256)) == 0); #endif #ifdef ARCHIVE_HAS_SHA384 assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_SHA384), ed.sha384, sizeof(ed.sha384)) == 0); #endif #ifdef ARCHIVE_HAS_SHA512 assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_SHA512), ed.sha512, sizeof(ed.sha512)) == 0); #endif archive_entry_free(entry); } DEFINE_TEST(test_write_format_mtree_digests_no_digests_set_non_empty_data) { char buff[4096] = {0}; size_t used = 0; struct archive *a; struct archive_entry *entry; struct expected_digests ed; char *data = "abcd"; #ifdef ARCHIVE_HAS_MD5 assertEqualInt(ARCHIVE_OK, archive_md5_init(&expectedMd5Ctx)); assertEqualInt(ARCHIVE_OK, archive_md5_update(&expectedMd5Ctx, data, 4)); assertEqualInt(ARCHIVE_OK, archive_md5_final(&expectedMd5Ctx, ed.md5)); #endif #ifdef ARCHIVE_HAS_RMD160 assertEqualInt(ARCHIVE_OK, archive_rmd160_init(&expectedRmd160Ctx)); assertEqualInt(ARCHIVE_OK, archive_rmd160_update(&expectedRmd160Ctx, data, 4)); assertEqualInt(ARCHIVE_OK, archive_rmd160_final(&expectedRmd160Ctx, ed.rmd160)); #endif #ifdef ARCHIVE_HAS_SHA1 assertEqualInt(ARCHIVE_OK, archive_sha1_init(&expectedSha1Ctx)); assertEqualInt(ARCHIVE_OK, archive_sha1_update(&expectedSha1Ctx, data, 4)); assertEqualInt(ARCHIVE_OK, archive_sha1_final(&expectedSha1Ctx, ed.sha1)); #endif #ifdef ARCHIVE_HAS_SHA256 assertEqualInt(ARCHIVE_OK, archive_sha256_init(&expectedSha256Ctx)); assertEqualInt(ARCHIVE_OK, archive_sha256_update(&expectedSha256Ctx, data, 4)); assertEqualInt(ARCHIVE_OK, archive_sha256_final(&expectedSha256Ctx, ed.sha256)); #endif #ifdef ARCHIVE_HAS_SHA384 assertEqualInt(ARCHIVE_OK, archive_sha384_init(&expectedSha384Ctx)); assertEqualInt(ARCHIVE_OK, archive_sha384_update(&expectedSha384Ctx, data, 4)); assertEqualInt(ARCHIVE_OK, archive_sha384_final(&expectedSha384Ctx, ed.sha384)); #endif #ifdef ARCHIVE_HAS_SHA512 assertEqualInt(ARCHIVE_OK, archive_sha512_init(&expectedSha512Ctx)); assertEqualInt(ARCHIVE_OK, archive_sha512_update(&expectedSha512Ctx, data, 4)); assertEqualInt(ARCHIVE_OK, archive_sha512_final(&expectedSha512Ctx, ed.sha512)); #endif assert((a = archive_write_new()) != NULL); assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_mtree(a)); assertEqualIntA(a, ARCHIVE_OK, archive_write_set_options(a, "all")); assertEqualIntA(a, ARCHIVE_OK, archive_write_open_memory(a, buff, sizeof(buff) - 1, &used)); assert((entry = archive_entry_new()) != NULL); archive_entry_set_pathname(entry, "test.data"); archive_entry_set_filetype(entry, AE_IFREG); archive_entry_set_size(entry, 4); assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, entry)); archive_write_data(a, data, 4); archive_entry_free(entry); assertEqualIntA(a, ARCHIVE_OK, archive_write_close(a)); assertEqualIntA(a, ARCHIVE_OK, archive_write_free(a)); assert((a = archive_read_new()) != NULL); assert((entry = archive_entry_new()) != NULL); assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a)); assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a)); assertEqualIntA(a, ARCHIVE_OK, archive_read_open_memory(a, buff, used)); assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &entry)); #ifdef ARCHIVE_HAS_MD5 assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_MD5), ed.md5, sizeof(ed.md5)) == 0); #endif #ifdef ARCHIVE_HAS_RMD160 assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_RMD160), ed.rmd160, sizeof(ed.rmd160)) == 0); #endif #ifdef ARCHIVE_HAS_SHA1 assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_SHA1), ed.sha1, sizeof(ed.sha1)) == 0); #endif #ifdef ARCHIVE_HAS_SHA256 assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_SHA256), ed.sha256, sizeof(ed.sha256)) == 0); #endif #ifdef ARCHIVE_HAS_SHA384 assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_SHA384), ed.sha384, sizeof(ed.sha384)) == 0); #endif #ifdef ARCHIVE_HAS_SHA512 assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_SHA512), ed.sha512, sizeof(ed.sha512)) == 0); #endif archive_entry_free(entry); } DEFINE_TEST(test_write_format_mtree_digests_md5_digest_set_no_data) { #ifdef ARCHIVE_HAS_MD5 char buff[4096] = {0}; size_t used = 0; struct archive *a; struct archive_entry *entry; struct expected_digests ed; - memcpy(ed.md5, (unsigned char[]) { + memcpy(ed.md5, ((unsigned char[]) { 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, - }, sizeof(ed.md5)); + }), sizeof(ed.md5)); #ifdef ARCHIVE_HAS_RMD160 assertEqualInt(ARCHIVE_OK, archive_rmd160_init(&expectedRmd160Ctx)); assertEqualInt(ARCHIVE_OK, archive_rmd160_update(&expectedRmd160Ctx, "", 0)); assertEqualInt(ARCHIVE_OK, archive_rmd160_final(&expectedRmd160Ctx, ed.rmd160)); #endif #ifdef ARCHIVE_HAS_SHA1 assertEqualInt(ARCHIVE_OK, archive_sha1_init(&expectedSha1Ctx)); assertEqualInt(ARCHIVE_OK, archive_sha1_update(&expectedSha1Ctx, "", 0)); assertEqualInt(ARCHIVE_OK, archive_sha1_final(&expectedSha1Ctx, ed.sha1)); #endif #ifdef ARCHIVE_HAS_SHA256 assertEqualInt(ARCHIVE_OK, archive_sha256_init(&expectedSha256Ctx)); assertEqualInt(ARCHIVE_OK, archive_sha256_update(&expectedSha256Ctx, "", 0)); assertEqualInt(ARCHIVE_OK, archive_sha256_final(&expectedSha256Ctx, ed.sha256)); #endif #ifdef ARCHIVE_HAS_SHA384 assertEqualInt(ARCHIVE_OK, archive_sha384_init(&expectedSha384Ctx)); assertEqualInt(ARCHIVE_OK, archive_sha384_update(&expectedSha384Ctx, "", 0)); assertEqualInt(ARCHIVE_OK, archive_sha384_final(&expectedSha384Ctx, ed.sha384)); #endif #ifdef ARCHIVE_HAS_SHA512 assertEqualInt(ARCHIVE_OK, archive_sha512_init(&expectedSha512Ctx)); assertEqualInt(ARCHIVE_OK, archive_sha512_update(&expectedSha512Ctx, "", 0)); assertEqualInt(ARCHIVE_OK, archive_sha512_final(&expectedSha512Ctx, ed.sha512)); #endif assert((a = archive_write_new()) != NULL); assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_mtree(a)); assertEqualIntA(a, ARCHIVE_OK, archive_write_set_options(a, "all")); assertEqualIntA(a, ARCHIVE_OK, archive_write_open_memory(a, buff, sizeof(buff) - 1, &used)); assert((entry = archive_entry_new()) != NULL); archive_entry_set_pathname(entry, "test.data"); archive_entry_set_filetype(entry, AE_IFREG); archive_entry_set_size(entry, 4); archive_entry_set_digest(entry, ARCHIVE_ENTRY_DIGEST_MD5, ed.md5); assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, entry)); archive_entry_free(entry); assertEqualIntA(a, ARCHIVE_OK, archive_write_close(a)); assertEqualIntA(a, ARCHIVE_OK, archive_write_free(a)); assert((a = archive_read_new()) != NULL); assert((entry = archive_entry_new()) != NULL); assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a)); assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a)); assertEqualIntA(a, ARCHIVE_OK, archive_read_open_memory(a, buff, used)); assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &entry)); assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_MD5), ed.md5, sizeof(ed.md5)) == 0); #ifdef ARCHIVE_HAS_RMD160 assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_RMD160), ed.rmd160, sizeof(ed.rmd160)) == 0); #endif #ifdef ARCHIVE_HAS_SHA1 assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_SHA1), ed.sha1, sizeof(ed.sha1)) == 0); #endif #ifdef ARCHIVE_HAS_SHA256 assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_SHA256), ed.sha256, sizeof(ed.sha256)) == 0); #endif #ifdef ARCHIVE_HAS_SHA384 assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_SHA384), ed.sha384, sizeof(ed.sha384)) == 0); #endif #ifdef ARCHIVE_HAS_SHA512 assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_SHA512), ed.sha512, sizeof(ed.sha512)) == 0); #endif archive_entry_free(entry); #else skipping("This platform does not support MD5"); return; #endif } DEFINE_TEST(test_write_format_mtree_digests_md5_digest_set_empty_data) { #ifdef ARCHIVE_HAS_MD5 char buff[4096] = {0}; size_t used = 0; struct archive *a; struct archive_entry *entry; struct expected_digests ed; - memcpy(ed.md5, (unsigned char[]) { + memcpy(ed.md5, ((unsigned char[]) { 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, - }, sizeof(ed.md5)); + }), sizeof(ed.md5)); #ifdef ARCHIVE_HAS_RMD160 assertEqualInt(ARCHIVE_OK, archive_rmd160_init(&expectedRmd160Ctx)); assertEqualInt(ARCHIVE_OK, archive_rmd160_update(&expectedRmd160Ctx, "", 0)); assertEqualInt(ARCHIVE_OK, archive_rmd160_final(&expectedRmd160Ctx, ed.rmd160)); #endif #ifdef ARCHIVE_HAS_SHA1 assertEqualInt(ARCHIVE_OK, archive_sha1_init(&expectedSha1Ctx)); assertEqualInt(ARCHIVE_OK, archive_sha1_update(&expectedSha1Ctx, "", 0)); assertEqualInt(ARCHIVE_OK, archive_sha1_final(&expectedSha1Ctx, ed.sha1)); #endif #ifdef ARCHIVE_HAS_SHA256 assertEqualInt(ARCHIVE_OK, archive_sha256_init(&expectedSha256Ctx)); assertEqualInt(ARCHIVE_OK, archive_sha256_update(&expectedSha256Ctx, "", 0)); assertEqualInt(ARCHIVE_OK, archive_sha256_final(&expectedSha256Ctx, ed.sha256)); #endif #ifdef ARCHIVE_HAS_SHA384 assertEqualInt(ARCHIVE_OK, archive_sha384_init(&expectedSha384Ctx)); assertEqualInt(ARCHIVE_OK, archive_sha384_update(&expectedSha384Ctx, "", 0)); assertEqualInt(ARCHIVE_OK, archive_sha384_final(&expectedSha384Ctx, ed.sha384)); #endif #ifdef ARCHIVE_HAS_SHA512 assertEqualInt(ARCHIVE_OK, archive_sha512_init(&expectedSha512Ctx)); assertEqualInt(ARCHIVE_OK, archive_sha512_update(&expectedSha512Ctx, "", 0)); assertEqualInt(ARCHIVE_OK, archive_sha512_final(&expectedSha512Ctx, ed.sha512)); #endif assert((a = archive_write_new()) != NULL); assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_mtree(a)); assertEqualIntA(a, ARCHIVE_OK, archive_write_set_options(a, "all")); assertEqualIntA(a, ARCHIVE_OK, archive_write_open_memory(a, buff, sizeof(buff) - 1, &used)); assert((entry = archive_entry_new()) != NULL); archive_entry_set_pathname(entry, "test.data"); archive_entry_set_filetype(entry, AE_IFREG); archive_entry_set_size(entry, 4); archive_entry_set_digest(entry, ARCHIVE_ENTRY_DIGEST_MD5, ed.md5); assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, entry)); archive_write_data(a, "", 0); archive_entry_free(entry); assertEqualIntA(a, ARCHIVE_OK, archive_write_close(a)); assertEqualIntA(a, ARCHIVE_OK, archive_write_free(a)); assert((a = archive_read_new()) != NULL); assert((entry = archive_entry_new()) != NULL); assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a)); assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a)); assertEqualIntA(a, ARCHIVE_OK, archive_read_open_memory(a, buff, used)); assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &entry)); assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_MD5), ed.md5, sizeof(ed.md5)) != 0); assertEqualInt(ARCHIVE_OK, archive_md5_init(&expectedMd5Ctx)); assertEqualInt(ARCHIVE_OK, archive_md5_update(&expectedMd5Ctx, "", 0)); assertEqualInt(ARCHIVE_OK, archive_md5_final(&expectedMd5Ctx, ed.md5)); assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_MD5), ed.md5, sizeof(ed.md5)) == 0); #ifdef ARCHIVE_HAS_RMD160 assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_RMD160), ed.rmd160, sizeof(ed.rmd160)) == 0); #endif #ifdef ARCHIVE_HAS_SHA1 assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_SHA1), ed.sha1, sizeof(ed.sha1)) == 0); #endif #ifdef ARCHIVE_HAS_SHA256 assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_SHA256), ed.sha256, sizeof(ed.sha256)) == 0); #endif #ifdef ARCHIVE_HAS_SHA384 assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_SHA384), ed.sha384, sizeof(ed.sha384)) == 0); #endif #ifdef ARCHIVE_HAS_SHA512 assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_SHA512), ed.sha512, sizeof(ed.sha512)) == 0); #endif archive_entry_free(entry); #else skipping("This platform does not support MD5"); return; #endif } DEFINE_TEST(test_write_format_mtree_digests_md5_digest_set_non_empty_data) { #ifdef ARCHIVE_HAS_MD5 char buff[4096] = {0}; size_t used = 0; struct archive *a; struct archive_entry *entry; struct expected_digests ed; - memcpy(ed.md5, (unsigned char[]) { + memcpy(ed.md5, ((unsigned char[]) { 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, - }, sizeof(ed.md5)); + }), sizeof(ed.md5)); #ifdef ARCHIVE_HAS_RMD160 assertEqualInt(ARCHIVE_OK, archive_rmd160_init(&expectedRmd160Ctx)); assertEqualInt(ARCHIVE_OK, archive_rmd160_update(&expectedRmd160Ctx, "abcd", 4)); assertEqualInt(ARCHIVE_OK, archive_rmd160_final(&expectedRmd160Ctx, ed.rmd160)); #endif #ifdef ARCHIVE_HAS_SHA1 assertEqualInt(ARCHIVE_OK, archive_sha1_init(&expectedSha1Ctx)); assertEqualInt(ARCHIVE_OK, archive_sha1_update(&expectedSha1Ctx, "abcd", 4)); assertEqualInt(ARCHIVE_OK, archive_sha1_final(&expectedSha1Ctx, ed.sha1)); #endif #ifdef ARCHIVE_HAS_SHA256 assertEqualInt(ARCHIVE_OK, archive_sha256_init(&expectedSha256Ctx)); assertEqualInt(ARCHIVE_OK, archive_sha256_update(&expectedSha256Ctx, "abcd", 4)); assertEqualInt(ARCHIVE_OK, archive_sha256_final(&expectedSha256Ctx, ed.sha256)); #endif #ifdef ARCHIVE_HAS_SHA384 assertEqualInt(ARCHIVE_OK, archive_sha384_init(&expectedSha384Ctx)); assertEqualInt(ARCHIVE_OK, archive_sha384_update(&expectedSha384Ctx, "abcd", 4)); assertEqualInt(ARCHIVE_OK, archive_sha384_final(&expectedSha384Ctx, ed.sha384)); #endif #ifdef ARCHIVE_HAS_SHA512 assertEqualInt(ARCHIVE_OK, archive_sha512_init(&expectedSha512Ctx)); assertEqualInt(ARCHIVE_OK, archive_sha512_update(&expectedSha512Ctx, "abcd", 4)); assertEqualInt(ARCHIVE_OK, archive_sha512_final(&expectedSha512Ctx, ed.sha512)); #endif assert((a = archive_write_new()) != NULL); assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_mtree(a)); assertEqualIntA(a, ARCHIVE_OK, archive_write_set_options(a, "all")); assertEqualIntA(a, ARCHIVE_OK, archive_write_open_memory(a, buff, sizeof(buff) - 1, &used)); assert((entry = archive_entry_new()) != NULL); archive_entry_set_pathname(entry, "test.data"); archive_entry_set_filetype(entry, AE_IFREG); archive_entry_set_size(entry, 4); archive_entry_set_digest(entry, ARCHIVE_ENTRY_DIGEST_MD5, ed.md5); assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, entry)); archive_write_data(a, "abcd", 4); archive_entry_free(entry); assertEqualIntA(a, ARCHIVE_OK, archive_write_close(a)); assertEqualIntA(a, ARCHIVE_OK, archive_write_free(a)); assert((a = archive_read_new()) != NULL); assert((entry = archive_entry_new()) != NULL); assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a)); assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a)); assertEqualIntA(a, ARCHIVE_OK, archive_read_open_memory(a, buff, used)); assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &entry)); assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_MD5), ed.md5, sizeof(ed.md5)) != 0); assertEqualInt(ARCHIVE_OK, archive_md5_init(&expectedMd5Ctx)); assertEqualInt(ARCHIVE_OK, archive_md5_update(&expectedMd5Ctx, "abcd", 4)); assertEqualInt(ARCHIVE_OK, archive_md5_final(&expectedMd5Ctx, ed.md5)); assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_MD5), ed.md5, sizeof(ed.md5)) == 0); #ifdef ARCHIVE_HAS_RMD160 assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_RMD160), ed.rmd160, sizeof(ed.rmd160)) == 0); #endif #ifdef ARCHIVE_HAS_SHA1 assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_SHA1), ed.sha1, sizeof(ed.sha1)) == 0); #endif #ifdef ARCHIVE_HAS_SHA256 assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_SHA256), ed.sha256, sizeof(ed.sha256)) == 0); #endif #ifdef ARCHIVE_HAS_SHA384 assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_SHA384), ed.sha384, sizeof(ed.sha384)) == 0); #endif #ifdef ARCHIVE_HAS_SHA512 assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_SHA512), ed.sha512, sizeof(ed.sha512)) == 0); #endif archive_entry_free(entry); #else skipping("This platform does not support MD5"); return; #endif } DEFINE_TEST(test_write_format_mtree_digests_rmd160_digest_set_no_data) { #ifdef ARCHIVE_HAS_RMD160 char buff[4096] = {0}; size_t used = 0; struct archive *a; struct archive_entry *entry; struct expected_digests ed; #ifdef ARCHIVE_HAS_MD5 assertEqualInt(ARCHIVE_OK, archive_md5_init(&expectedMd5Ctx)); assertEqualInt(ARCHIVE_OK, archive_md5_update(&expectedMd5Ctx, "", 0)); assertEqualInt(ARCHIVE_OK, archive_md5_final(&expectedMd5Ctx, ed.md5)); #endif assertEqualInt(ARCHIVE_OK, archive_rmd160_init(&expectedRmd160Ctx)); assertEqualInt(ARCHIVE_OK, archive_rmd160_update(&expectedRmd160Ctx, "", 0)); assertEqualInt(ARCHIVE_OK, archive_rmd160_final(&expectedRmd160Ctx, ed.rmd160)); #ifdef ARCHIVE_HAS_SHA1 assertEqualInt(ARCHIVE_OK, archive_sha1_init(&expectedSha1Ctx)); assertEqualInt(ARCHIVE_OK, archive_sha1_update(&expectedSha1Ctx, "", 0)); assertEqualInt(ARCHIVE_OK, archive_sha1_final(&expectedSha1Ctx, ed.sha1)); #endif #ifdef ARCHIVE_HAS_SHA256 assertEqualInt(ARCHIVE_OK, archive_sha256_init(&expectedSha256Ctx)); assertEqualInt(ARCHIVE_OK, archive_sha256_update(&expectedSha256Ctx, "", 0)); assertEqualInt(ARCHIVE_OK, archive_sha256_final(&expectedSha256Ctx, ed.sha256)); #endif #ifdef ARCHIVE_HAS_SHA384 assertEqualInt(ARCHIVE_OK, archive_sha384_init(&expectedSha384Ctx)); assertEqualInt(ARCHIVE_OK, archive_sha384_update(&expectedSha384Ctx, "", 0)); assertEqualInt(ARCHIVE_OK, archive_sha384_final(&expectedSha384Ctx, ed.sha384)); #endif #ifdef ARCHIVE_HAS_SHA512 assertEqualInt(ARCHIVE_OK, archive_sha512_init(&expectedSha512Ctx)); assertEqualInt(ARCHIVE_OK, archive_sha512_update(&expectedSha512Ctx, "", 0)); assertEqualInt(ARCHIVE_OK, archive_sha512_final(&expectedSha512Ctx, ed.sha512)); #endif assert((a = archive_write_new()) != NULL); assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_mtree(a)); assertEqualIntA(a, ARCHIVE_OK, archive_write_set_options(a, "all")); assertEqualIntA(a, ARCHIVE_OK, archive_write_open_memory(a, buff, sizeof(buff) - 1, &used)); assert((entry = archive_entry_new()) != NULL); archive_entry_set_pathname(entry, "test.data"); archive_entry_set_filetype(entry, AE_IFREG); archive_entry_set_size(entry, 4); assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, entry)); archive_entry_free(entry); assertEqualIntA(a, ARCHIVE_OK, archive_write_close(a)); assertEqualIntA(a, ARCHIVE_OK, archive_write_free(a)); assert((a = archive_read_new()) != NULL); assert((entry = archive_entry_new()) != NULL); assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a)); assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a)); assertEqualIntA(a, ARCHIVE_OK, archive_read_open_memory(a, buff, used)); assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &entry)); #ifdef ARCHIVE_HAS_MD5 assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_MD5), ed.md5, sizeof(ed.md5)) == 0); #endif assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_RMD160), ed.rmd160, sizeof(ed.rmd160)) == 0); #ifdef ARCHIVE_HAS_SHA1 assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_SHA1), ed.sha1, sizeof(ed.sha1)) == 0); #endif #ifdef ARCHIVE_HAS_SHA256 assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_SHA256), ed.sha256, sizeof(ed.sha256)) == 0); #endif #ifdef ARCHIVE_HAS_SHA384 assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_SHA384), ed.sha384, sizeof(ed.sha384)) == 0); #endif #ifdef ARCHIVE_HAS_SHA512 assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_SHA512), ed.sha512, sizeof(ed.sha512)) == 0); #endif archive_entry_free(entry); #else skipping("This platform does not support RMD160"); return; #endif } DEFINE_TEST(test_write_format_mtree_digests_rmd160_digest_set_empty_data) { #ifdef ARCHIVE_HAS_RMD160 char buff[4096] = {0}; size_t used = 0; struct archive *a; struct archive_entry *entry; struct expected_digests ed; - memcpy(ed.rmd160, (unsigned char[]) { + memcpy(ed.rmd160, ((unsigned char[]) { 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed - }, sizeof(ed.rmd160)); + }), sizeof(ed.rmd160)); #ifdef ARCHIVE_HAS_MD5 assertEqualInt(ARCHIVE_OK, archive_md5_init(&expectedMd5Ctx)); assertEqualInt(ARCHIVE_OK, archive_md5_update(&expectedMd5Ctx, "", 0)); assertEqualInt(ARCHIVE_OK, archive_md5_final(&expectedMd5Ctx, ed.md5)); #endif #ifdef ARCHIVE_HAS_SHA1 assertEqualInt(ARCHIVE_OK, archive_sha1_init(&expectedSha1Ctx)); assertEqualInt(ARCHIVE_OK, archive_sha1_update(&expectedSha1Ctx, "", 0)); assertEqualInt(ARCHIVE_OK, archive_sha1_final(&expectedSha1Ctx, ed.sha1)); #endif #ifdef ARCHIVE_HAS_SHA256 assertEqualInt(ARCHIVE_OK, archive_sha256_init(&expectedSha256Ctx)); assertEqualInt(ARCHIVE_OK, archive_sha256_update(&expectedSha256Ctx, "", 0)); assertEqualInt(ARCHIVE_OK, archive_sha256_final(&expectedSha256Ctx, ed.sha256)); #endif #ifdef ARCHIVE_HAS_SHA384 assertEqualInt(ARCHIVE_OK, archive_sha384_init(&expectedSha384Ctx)); assertEqualInt(ARCHIVE_OK, archive_sha384_update(&expectedSha384Ctx, "", 0)); assertEqualInt(ARCHIVE_OK, archive_sha384_final(&expectedSha384Ctx, ed.sha384)); #endif #ifdef ARCHIVE_HAS_SHA512 assertEqualInt(ARCHIVE_OK, archive_sha512_init(&expectedSha512Ctx)); assertEqualInt(ARCHIVE_OK, archive_sha512_update(&expectedSha512Ctx, "", 0)); assertEqualInt(ARCHIVE_OK, archive_sha512_final(&expectedSha512Ctx, ed.sha512)); #endif assert((a = archive_write_new()) != NULL); assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_mtree(a)); assertEqualIntA(a, ARCHIVE_OK, archive_write_set_options(a, "all")); assertEqualIntA(a, ARCHIVE_OK, archive_write_open_memory(a, buff, sizeof(buff) - 1, &used)); assert((entry = archive_entry_new()) != NULL); archive_entry_set_pathname(entry, "test.data"); archive_entry_set_filetype(entry, AE_IFREG); archive_entry_set_size(entry, 4); archive_entry_set_digest(entry, ARCHIVE_ENTRY_DIGEST_RMD160, ed.rmd160); assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, entry)); archive_write_data(a, "", 0); archive_entry_free(entry); assertEqualIntA(a, ARCHIVE_OK, archive_write_close(a)); assertEqualIntA(a, ARCHIVE_OK, archive_write_free(a)); assert((a = archive_read_new()) != NULL); assert((entry = archive_entry_new()) != NULL); assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a)); assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a)); assertEqualIntA(a, ARCHIVE_OK, archive_read_open_memory(a, buff, used)); assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &entry)); #ifdef ARCHIVE_HAS_MD5 assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_MD5), ed.md5, sizeof(ed.md5)) == 0); #endif assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_RMD160), ed.rmd160, sizeof(ed.rmd160)) != 0); assertEqualInt(ARCHIVE_OK, archive_rmd160_init(&expectedRmd160Ctx)); assertEqualInt(ARCHIVE_OK, archive_rmd160_update(&expectedRmd160Ctx, "", 0)); assertEqualInt(ARCHIVE_OK, archive_rmd160_final(&expectedRmd160Ctx, ed.rmd160)); assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_RMD160), ed.rmd160, sizeof(ed.rmd160)) == 0); #ifdef ARCHIVE_HAS_SHA1 assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_SHA1), ed.sha1, sizeof(ed.sha1)) == 0); #endif #ifdef ARCHIVE_HAS_SHA256 assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_SHA256), ed.sha256, sizeof(ed.sha256)) == 0); #endif #ifdef ARCHIVE_HAS_SHA384 assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_SHA384), ed.sha384, sizeof(ed.sha384)) == 0); #endif #ifdef ARCHIVE_HAS_SHA512 assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_SHA512), ed.sha512, sizeof(ed.sha512)) == 0); #endif archive_entry_free(entry); #else skipping("This platform does not support RMD160"); return; #endif } DEFINE_TEST(test_write_format_mtree_digests_rmd160_digest_set_non_empty_data) { #ifdef ARCHIVE_HAS_RMD160 char buff[4096] = {0}; size_t used = 0; struct archive *a; struct archive_entry *entry; struct expected_digests ed; - memcpy(ed.rmd160, (unsigned char[]) { + memcpy(ed.rmd160, ((unsigned char[]) { 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed - }, sizeof(ed.rmd160)); + }), sizeof(ed.rmd160)); #ifdef ARCHIVE_HAS_MD5 assertEqualInt(ARCHIVE_OK, archive_md5_init(&expectedMd5Ctx)); assertEqualInt(ARCHIVE_OK, archive_md5_update(&expectedMd5Ctx, "abcd", 4)); assertEqualInt(ARCHIVE_OK, archive_md5_final(&expectedMd5Ctx, ed.md5)); #endif #ifdef ARCHIVE_HAS_SHA1 assertEqualInt(ARCHIVE_OK, archive_sha1_init(&expectedSha1Ctx)); assertEqualInt(ARCHIVE_OK, archive_sha1_update(&expectedSha1Ctx, "abcd", 4)); assertEqualInt(ARCHIVE_OK, archive_sha1_final(&expectedSha1Ctx, ed.sha1)); #endif #ifdef ARCHIVE_HAS_SHA256 assertEqualInt(ARCHIVE_OK, archive_sha256_init(&expectedSha256Ctx)); assertEqualInt(ARCHIVE_OK, archive_sha256_update(&expectedSha256Ctx, "abcd", 4)); assertEqualInt(ARCHIVE_OK, archive_sha256_final(&expectedSha256Ctx, ed.sha256)); #endif #ifdef ARCHIVE_HAS_SHA384 assertEqualInt(ARCHIVE_OK, archive_sha384_init(&expectedSha384Ctx)); assertEqualInt(ARCHIVE_OK, archive_sha384_update(&expectedSha384Ctx, "abcd", 4)); assertEqualInt(ARCHIVE_OK, archive_sha384_final(&expectedSha384Ctx, ed.sha384)); #endif #ifdef ARCHIVE_HAS_SHA512 assertEqualInt(ARCHIVE_OK, archive_sha512_init(&expectedSha512Ctx)); assertEqualInt(ARCHIVE_OK, archive_sha512_update(&expectedSha512Ctx, "abcd", 4)); assertEqualInt(ARCHIVE_OK, archive_sha512_final(&expectedSha512Ctx, ed.sha512)); #endif assert((a = archive_write_new()) != NULL); assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_mtree(a)); assertEqualIntA(a, ARCHIVE_OK, archive_write_set_options(a, "all")); assertEqualIntA(a, ARCHIVE_OK, archive_write_open_memory(a, buff, sizeof(buff) - 1, &used)); assert((entry = archive_entry_new()) != NULL); archive_entry_set_pathname(entry, "test.data"); archive_entry_set_filetype(entry, AE_IFREG); archive_entry_set_size(entry, 4); archive_entry_set_digest(entry, ARCHIVE_ENTRY_DIGEST_RMD160, ed.rmd160); assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, entry)); archive_write_data(a, "abcd", 4); archive_entry_free(entry); assertEqualIntA(a, ARCHIVE_OK, archive_write_close(a)); assertEqualIntA(a, ARCHIVE_OK, archive_write_free(a)); assert((a = archive_read_new()) != NULL); assert((entry = archive_entry_new()) != NULL); assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a)); assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a)); assertEqualIntA(a, ARCHIVE_OK, archive_read_open_memory(a, buff, used)); assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &entry)); #ifdef ARCHIVE_HAS_MD5 assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_MD5), ed.md5, sizeof(ed.md5)) == 0); #endif assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_RMD160), ed.rmd160, sizeof(ed.rmd160)) != 0); assertEqualInt(ARCHIVE_OK, archive_rmd160_init(&expectedRmd160Ctx)); assertEqualInt(ARCHIVE_OK, archive_rmd160_update(&expectedRmd160Ctx, "abcd", 4)); assertEqualInt(ARCHIVE_OK, archive_rmd160_final(&expectedRmd160Ctx, ed.rmd160)); assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_RMD160), ed.rmd160, sizeof(ed.rmd160)) == 0); #ifdef ARCHIVE_HAS_SHA1 assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_SHA1), ed.sha1, sizeof(ed.sha1)) == 0); #endif #ifdef ARCHIVE_HAS_SHA256 assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_SHA256), ed.sha256, sizeof(ed.sha256)) == 0); #endif #ifdef ARCHIVE_HAS_SHA384 assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_SHA384), ed.sha384, sizeof(ed.sha384)) == 0); #endif #ifdef ARCHIVE_HAS_SHA512 assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_SHA512), ed.sha512, sizeof(ed.sha512)) == 0); #endif archive_entry_free(entry); #else skipping("This platform does not support RMD160"); return; #endif } DEFINE_TEST(test_write_format_mtree_digests_sha1_digest_set_no_data) { #ifdef ARCHIVE_HAS_SHA1 char buff[4096] = {0}; size_t used = 0; struct archive *a; struct archive_entry *entry; struct expected_digests ed; - memcpy(ed.sha1, (unsigned char[]) { + memcpy(ed.sha1, ((unsigned char[]) { 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed - }, sizeof(ed.sha1)); + }), sizeof(ed.sha1)); #ifdef ARCHIVE_HAS_MD5 assertEqualInt(ARCHIVE_OK, archive_md5_init(&expectedMd5Ctx)); assertEqualInt(ARCHIVE_OK, archive_md5_update(&expectedMd5Ctx, "", 0)); assertEqualInt(ARCHIVE_OK, archive_md5_final(&expectedMd5Ctx, ed.md5)); #endif #ifdef ARCHIVE_HAS_RMD160 assertEqualInt(ARCHIVE_OK, archive_rmd160_init(&expectedRmd160Ctx)); assertEqualInt(ARCHIVE_OK, archive_rmd160_update(&expectedRmd160Ctx, "", 0)); assertEqualInt(ARCHIVE_OK, archive_rmd160_final(&expectedRmd160Ctx, ed.rmd160)); #endif #ifdef ARCHIVE_HAS_SHA256 assertEqualInt(ARCHIVE_OK, archive_sha256_init(&expectedSha256Ctx)); assertEqualInt(ARCHIVE_OK, archive_sha256_update(&expectedSha256Ctx, "", 0)); assertEqualInt(ARCHIVE_OK, archive_sha256_final(&expectedSha256Ctx, ed.sha256)); #endif #ifdef ARCHIVE_HAS_SHA384 assertEqualInt(ARCHIVE_OK, archive_sha384_init(&expectedSha384Ctx)); assertEqualInt(ARCHIVE_OK, archive_sha384_update(&expectedSha384Ctx, "", 0)); assertEqualInt(ARCHIVE_OK, archive_sha384_final(&expectedSha384Ctx, ed.sha384)); #endif #ifdef ARCHIVE_HAS_SHA512 assertEqualInt(ARCHIVE_OK, archive_sha512_init(&expectedSha512Ctx)); assertEqualInt(ARCHIVE_OK, archive_sha512_update(&expectedSha512Ctx, "", 0)); assertEqualInt(ARCHIVE_OK, archive_sha512_final(&expectedSha512Ctx, ed.sha512)); #endif assert((a = archive_write_new()) != NULL); assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_mtree(a)); assertEqualIntA(a, ARCHIVE_OK, archive_write_set_options(a, "all")); assertEqualIntA(a, ARCHIVE_OK, archive_write_open_memory(a, buff, sizeof(buff) - 1, &used)); assert((entry = archive_entry_new()) != NULL); archive_entry_set_pathname(entry, "test.data"); archive_entry_set_filetype(entry, AE_IFREG); archive_entry_set_size(entry, 4); archive_entry_set_digest(entry, ARCHIVE_ENTRY_DIGEST_SHA1, ed.sha1); assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, entry)); archive_entry_free(entry); assertEqualIntA(a, ARCHIVE_OK, archive_write_close(a)); assertEqualIntA(a, ARCHIVE_OK, archive_write_free(a)); assert((a = archive_read_new()) != NULL); assert((entry = archive_entry_new()) != NULL); assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a)); assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a)); assertEqualIntA(a, ARCHIVE_OK, archive_read_open_memory(a, buff, used)); assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &entry)); #ifdef ARCHIVE_HAS_MD5 assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_MD5), ed.md5, sizeof(ed.md5)) == 0); #endif #ifdef ARCHIVE_HAS_RMD160 assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_RMD160), ed.rmd160, sizeof(ed.rmd160)) == 0); #endif assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_SHA1), ed.sha1, sizeof(ed.sha1)) == 0); #ifdef ARCHIVE_HAS_SHA256 assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_SHA256), ed.sha256, sizeof(ed.sha256)) == 0); #endif #ifdef ARCHIVE_HAS_SHA384 assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_SHA384), ed.sha384, sizeof(ed.sha384)) == 0); #endif #ifdef ARCHIVE_HAS_SHA512 assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_SHA512), ed.sha512, sizeof(ed.sha512)) == 0); #endif archive_entry_free(entry); #else skipping("This platform does not support SHA1"); return; #endif } DEFINE_TEST(test_write_format_mtree_digests_sha1_digest_set_empty_data) { #ifdef ARCHIVE_HAS_SHA1 char buff[4096] = {0}; size_t used = 0; struct archive *a; struct archive_entry *entry; struct expected_digests ed; - memcpy(ed.sha1, (unsigned char[]) { + memcpy(ed.sha1, ((unsigned char[]) { 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed - }, sizeof(ed.sha1)); + }), sizeof(ed.sha1)); #ifdef ARCHIVE_HAS_MD5 assertEqualInt(ARCHIVE_OK, archive_md5_init(&expectedMd5Ctx)); assertEqualInt(ARCHIVE_OK, archive_md5_update(&expectedMd5Ctx, "", 0)); assertEqualInt(ARCHIVE_OK, archive_md5_final(&expectedMd5Ctx, ed.md5)); #endif #ifdef ARCHIVE_HAS_RMD160 assertEqualInt(ARCHIVE_OK, archive_rmd160_init(&expectedRmd160Ctx)); assertEqualInt(ARCHIVE_OK, archive_rmd160_update(&expectedRmd160Ctx, "", 0)); assertEqualInt(ARCHIVE_OK, archive_rmd160_final(&expectedRmd160Ctx, ed.rmd160)); #endif #ifdef ARCHIVE_HAS_SHA256 assertEqualInt(ARCHIVE_OK, archive_sha256_init(&expectedSha256Ctx)); assertEqualInt(ARCHIVE_OK, archive_sha256_update(&expectedSha256Ctx, "", 0)); assertEqualInt(ARCHIVE_OK, archive_sha256_final(&expectedSha256Ctx, ed.sha256)); #endif #ifdef ARCHIVE_HAS_SHA384 assertEqualInt(ARCHIVE_OK, archive_sha384_init(&expectedSha384Ctx)); assertEqualInt(ARCHIVE_OK, archive_sha384_update(&expectedSha384Ctx, "", 0)); assertEqualInt(ARCHIVE_OK, archive_sha384_final(&expectedSha384Ctx, ed.sha384)); #endif #ifdef ARCHIVE_HAS_SHA512 assertEqualInt(ARCHIVE_OK, archive_sha512_init(&expectedSha512Ctx)); assertEqualInt(ARCHIVE_OK, archive_sha512_update(&expectedSha512Ctx, "", 0)); assertEqualInt(ARCHIVE_OK, archive_sha512_final(&expectedSha512Ctx, ed.sha512)); #endif assert((a = archive_write_new()) != NULL); assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_mtree(a)); assertEqualIntA(a, ARCHIVE_OK, archive_write_set_options(a, "all")); assertEqualIntA(a, ARCHIVE_OK, archive_write_open_memory(a, buff, sizeof(buff) - 1, &used)); assert((entry = archive_entry_new()) != NULL); archive_entry_set_pathname(entry, "test.data"); archive_entry_set_filetype(entry, AE_IFREG); archive_entry_set_size(entry, 4); archive_entry_set_digest(entry, ARCHIVE_ENTRY_DIGEST_SHA1, ed.sha1); assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, entry)); archive_write_data(a, "", 0); archive_entry_free(entry); assertEqualIntA(a, ARCHIVE_OK, archive_write_close(a)); assertEqualIntA(a, ARCHIVE_OK, archive_write_free(a)); assert((a = archive_read_new()) != NULL); assert((entry = archive_entry_new()) != NULL); assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a)); assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a)); assertEqualIntA(a, ARCHIVE_OK, archive_read_open_memory(a, buff, used)); assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &entry)); #ifdef ARCHIVE_HAS_MD5 assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_MD5), ed.md5, sizeof(ed.md5)) == 0); #endif #ifdef ARCHIVE_HAS_RMD160 assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_RMD160), ed.rmd160, sizeof(ed.rmd160)) == 0); #endif assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_SHA1), ed.sha1, sizeof(ed.sha1)) != 0); assertEqualInt(ARCHIVE_OK, archive_sha1_init(&expectedSha1Ctx)); assertEqualInt(ARCHIVE_OK, archive_sha1_update(&expectedSha1Ctx, "", 0)); assertEqualInt(ARCHIVE_OK, archive_sha1_final(&expectedSha1Ctx, ed.sha1)); assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_SHA1), ed.sha1, sizeof(ed.sha1)) == 0); #ifdef ARCHIVE_HAS_SHA256 assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_SHA256), ed.sha256, sizeof(ed.sha256)) == 0); #endif #ifdef ARCHIVE_HAS_SHA384 assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_SHA384), ed.sha384, sizeof(ed.sha384)) == 0); #endif #ifdef ARCHIVE_HAS_SHA512 assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_SHA512), ed.sha512, sizeof(ed.sha512)) == 0); #endif archive_entry_free(entry); #else skipping("This platform does not support SHA1"); return; #endif } DEFINE_TEST(test_write_format_mtree_digests_sha1_digest_set_non_empty_data) { #ifdef ARCHIVE_HAS_SHA1 char buff[4096] = {0}; size_t used = 0; struct archive *a; struct archive_entry *entry; struct expected_digests ed; - memcpy(ed.sha1, (unsigned char[]) { + memcpy(ed.sha1, ((unsigned char[]) { 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed - }, sizeof(ed.sha1)); + }), sizeof(ed.sha1)); #ifdef ARCHIVE_HAS_MD5 assertEqualInt(ARCHIVE_OK, archive_md5_init(&expectedMd5Ctx)); assertEqualInt(ARCHIVE_OK, archive_md5_update(&expectedMd5Ctx, "abcd", 4)); assertEqualInt(ARCHIVE_OK, archive_md5_final(&expectedMd5Ctx, ed.md5)); #endif #ifdef ARCHIVE_HAS_RMD160 assertEqualInt(ARCHIVE_OK, archive_rmd160_init(&expectedRmd160Ctx)); assertEqualInt(ARCHIVE_OK, archive_rmd160_update(&expectedRmd160Ctx, "abcd", 4)); assertEqualInt(ARCHIVE_OK, archive_rmd160_final(&expectedRmd160Ctx, ed.rmd160)); #endif #ifdef ARCHIVE_HAS_SHA256 assertEqualInt(ARCHIVE_OK, archive_sha256_init(&expectedSha256Ctx)); assertEqualInt(ARCHIVE_OK, archive_sha256_update(&expectedSha256Ctx, "abcd", 4)); assertEqualInt(ARCHIVE_OK, archive_sha256_final(&expectedSha256Ctx, ed.sha256)); #endif #ifdef ARCHIVE_HAS_SHA384 assertEqualInt(ARCHIVE_OK, archive_sha384_init(&expectedSha384Ctx)); assertEqualInt(ARCHIVE_OK, archive_sha384_update(&expectedSha384Ctx, "abcd", 4)); assertEqualInt(ARCHIVE_OK, archive_sha384_final(&expectedSha384Ctx, ed.sha384)); #endif #ifdef ARCHIVE_HAS_SHA512 assertEqualInt(ARCHIVE_OK, archive_sha512_init(&expectedSha512Ctx)); assertEqualInt(ARCHIVE_OK, archive_sha512_update(&expectedSha512Ctx, "abcd", 4)); assertEqualInt(ARCHIVE_OK, archive_sha512_final(&expectedSha512Ctx, ed.sha512)); #endif assert((a = archive_write_new()) != NULL); assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_mtree(a)); assertEqualIntA(a, ARCHIVE_OK, archive_write_set_options(a, "all")); assertEqualIntA(a, ARCHIVE_OK, archive_write_open_memory(a, buff, sizeof(buff) - 1, &used)); assert((entry = archive_entry_new()) != NULL); archive_entry_set_pathname(entry, "test.data"); archive_entry_set_filetype(entry, AE_IFREG); archive_entry_set_size(entry, 4); archive_entry_set_digest(entry, ARCHIVE_ENTRY_DIGEST_SHA1, ed.sha1); assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, entry)); archive_write_data(a, "abcd", 4); archive_entry_free(entry); assertEqualIntA(a, ARCHIVE_OK, archive_write_close(a)); assertEqualIntA(a, ARCHIVE_OK, archive_write_free(a)); assert((a = archive_read_new()) != NULL); assert((entry = archive_entry_new()) != NULL); assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a)); assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a)); assertEqualIntA(a, ARCHIVE_OK, archive_read_open_memory(a, buff, used)); assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &entry)); #ifdef ARCHIVE_HAS_MD5 assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_MD5), ed.md5, sizeof(ed.md5)) == 0); #endif #ifdef ARCHIVE_HAS_RMD160 assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_RMD160), ed.rmd160, sizeof(ed.rmd160)) == 0); #endif assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_SHA1), ed.sha1, sizeof(ed.sha1)) != 0); assertEqualInt(ARCHIVE_OK, archive_sha1_init(&expectedSha1Ctx)); assertEqualInt(ARCHIVE_OK, archive_sha1_update(&expectedSha1Ctx, "abcd", 4)); assertEqualInt(ARCHIVE_OK, archive_sha1_final(&expectedSha1Ctx, ed.sha1)); assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_SHA1), ed.sha1, sizeof(ed.sha1)) == 0); #ifdef ARCHIVE_HAS_SHA256 assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_SHA256), ed.sha256, sizeof(ed.sha256)) == 0); #endif #ifdef ARCHIVE_HAS_SHA384 assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_SHA384), ed.sha384, sizeof(ed.sha384)) == 0); #endif #ifdef ARCHIVE_HAS_SHA512 assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_SHA512), ed.sha512, sizeof(ed.sha512)) == 0); #endif archive_entry_free(entry); #else skipping("This platform does not support SHA1"); return; #endif } DEFINE_TEST(test_write_format_mtree_digests_sha256_digest_set_no_data) { #ifdef ARCHIVE_HAS_SHA256 char buff[4096] = {0}; size_t used = 0; struct archive *a; struct archive_entry *entry; struct expected_digests ed; - memcpy(ed.sha256, (unsigned char[]) { + memcpy(ed.sha256, ((unsigned char[]) { 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed - }, sizeof(ed.sha256)); + }), sizeof(ed.sha256)); #ifdef ARCHIVE_HAS_MD5 assertEqualInt(ARCHIVE_OK, archive_md5_init(&expectedMd5Ctx)); assertEqualInt(ARCHIVE_OK, archive_md5_update(&expectedMd5Ctx, "", 0)); assertEqualInt(ARCHIVE_OK, archive_md5_final(&expectedMd5Ctx, ed.md5)); #endif #ifdef ARCHIVE_HAS_RMD160 assertEqualInt(ARCHIVE_OK, archive_rmd160_init(&expectedRmd160Ctx)); assertEqualInt(ARCHIVE_OK, archive_rmd160_update(&expectedRmd160Ctx, "", 0)); assertEqualInt(ARCHIVE_OK, archive_rmd160_final(&expectedRmd160Ctx, ed.rmd160)); #endif #ifdef ARCHIVE_HAS_SHA1 assertEqualInt(ARCHIVE_OK, archive_sha1_init(&expectedSha1Ctx)); assertEqualInt(ARCHIVE_OK, archive_sha1_update(&expectedSha1Ctx, "", 0)); assertEqualInt(ARCHIVE_OK, archive_sha1_final(&expectedSha1Ctx, ed.sha1)); #endif #ifdef ARCHIVE_HAS_SHA384 assertEqualInt(ARCHIVE_OK, archive_sha384_init(&expectedSha384Ctx)); assertEqualInt(ARCHIVE_OK, archive_sha384_update(&expectedSha384Ctx, "", 0)); assertEqualInt(ARCHIVE_OK, archive_sha384_final(&expectedSha384Ctx, ed.sha384)); #endif #ifdef ARCHIVE_HAS_SHA512 assertEqualInt(ARCHIVE_OK, archive_sha512_init(&expectedSha512Ctx)); assertEqualInt(ARCHIVE_OK, archive_sha512_update(&expectedSha512Ctx, "", 0)); assertEqualInt(ARCHIVE_OK, archive_sha512_final(&expectedSha512Ctx, ed.sha512)); #endif assert((a = archive_write_new()) != NULL); assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_mtree(a)); assertEqualIntA(a, ARCHIVE_OK, archive_write_set_options(a, "all")); assertEqualIntA(a, ARCHIVE_OK, archive_write_open_memory(a, buff, sizeof(buff) - 1, &used)); assert((entry = archive_entry_new()) != NULL); archive_entry_set_pathname(entry, "test.data"); archive_entry_set_filetype(entry, AE_IFREG); archive_entry_set_size(entry, 4); archive_entry_set_digest(entry, ARCHIVE_ENTRY_DIGEST_SHA256, ed.sha256); assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, entry)); archive_entry_free(entry); assertEqualIntA(a, ARCHIVE_OK, archive_write_close(a)); assertEqualIntA(a, ARCHIVE_OK, archive_write_free(a)); assert((a = archive_read_new()) != NULL); assert((entry = archive_entry_new()) != NULL); assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a)); assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a)); assertEqualIntA(a, ARCHIVE_OK, archive_read_open_memory(a, buff, used)); assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &entry)); #ifdef ARCHIVE_HAS_MD5 assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_MD5), ed.md5, sizeof(ed.md5)) == 0); #endif #ifdef ARCHIVE_HAS_RMD160 assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_RMD160), ed.rmd160, sizeof(ed.rmd160)) == 0); #endif #ifdef ARCHIVE_HAS_SHA1 assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_SHA1), ed.sha1, sizeof(ed.sha1)) == 0); #endif assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_SHA256), ed.sha256, sizeof(ed.sha256)) == 0); #ifdef ARCHIVE_HAS_SHA384 assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_SHA384), ed.sha384, sizeof(ed.sha384)) == 0); #endif #ifdef ARCHIVE_HAS_SHA512 assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_SHA512), ed.sha512, sizeof(ed.sha512)) == 0); #endif archive_entry_free(entry); #else skipping("This platform does not support SHA256"); return; #endif } DEFINE_TEST(test_write_format_mtree_digests_sha256_digest_set_empty_data) { #ifdef ARCHIVE_HAS_SHA256 char buff[4096] = {0}; size_t used = 0; struct archive *a; struct archive_entry *entry; struct expected_digests ed; - memcpy(ed.sha256, (unsigned char[]) { + memcpy(ed.sha256, ((unsigned char[]) { 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed - }, sizeof(ed.sha256)); + }), sizeof(ed.sha256)); #ifdef ARCHIVE_HAS_MD5 assertEqualInt(ARCHIVE_OK, archive_md5_init(&expectedMd5Ctx)); assertEqualInt(ARCHIVE_OK, archive_md5_update(&expectedMd5Ctx, "", 0)); assertEqualInt(ARCHIVE_OK, archive_md5_final(&expectedMd5Ctx, ed.md5)); #endif #ifdef ARCHIVE_HAS_RMD160 assertEqualInt(ARCHIVE_OK, archive_rmd160_init(&expectedRmd160Ctx)); assertEqualInt(ARCHIVE_OK, archive_rmd160_update(&expectedRmd160Ctx, "", 0)); assertEqualInt(ARCHIVE_OK, archive_rmd160_final(&expectedRmd160Ctx, ed.rmd160)); #endif #ifdef ARCHIVE_HAS_SHA1 assertEqualInt(ARCHIVE_OK, archive_sha1_init(&expectedSha1Ctx)); assertEqualInt(ARCHIVE_OK, archive_sha1_update(&expectedSha1Ctx, "", 0)); assertEqualInt(ARCHIVE_OK, archive_sha1_final(&expectedSha1Ctx, ed.sha1)); #endif #ifdef ARCHIVE_HAS_SHA384 assertEqualInt(ARCHIVE_OK, archive_sha384_init(&expectedSha384Ctx)); assertEqualInt(ARCHIVE_OK, archive_sha384_update(&expectedSha384Ctx, "", 0)); assertEqualInt(ARCHIVE_OK, archive_sha384_final(&expectedSha384Ctx, ed.sha384)); #endif #ifdef ARCHIVE_HAS_SHA512 assertEqualInt(ARCHIVE_OK, archive_sha512_init(&expectedSha512Ctx)); assertEqualInt(ARCHIVE_OK, archive_sha512_update(&expectedSha512Ctx, "", 0)); assertEqualInt(ARCHIVE_OK, archive_sha512_final(&expectedSha512Ctx, ed.sha512)); #endif assert((a = archive_write_new()) != NULL); assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_mtree(a)); assertEqualIntA(a, ARCHIVE_OK, archive_write_set_options(a, "all")); assertEqualIntA(a, ARCHIVE_OK, archive_write_open_memory(a, buff, sizeof(buff) - 1, &used)); assert((entry = archive_entry_new()) != NULL); archive_entry_set_pathname(entry, "test.data"); archive_entry_set_filetype(entry, AE_IFREG); archive_entry_set_size(entry, 4); archive_entry_set_digest(entry, ARCHIVE_ENTRY_DIGEST_SHA256, ed.sha256); assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, entry)); archive_write_data(a, "", 0); archive_entry_free(entry); assertEqualIntA(a, ARCHIVE_OK, archive_write_close(a)); assertEqualIntA(a, ARCHIVE_OK, archive_write_free(a)); assert((a = archive_read_new()) != NULL); assert((entry = archive_entry_new()) != NULL); assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a)); assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a)); assertEqualIntA(a, ARCHIVE_OK, archive_read_open_memory(a, buff, used)); assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &entry)); #ifdef ARCHIVE_HAS_MD5 assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_MD5), ed.md5, sizeof(ed.md5)) == 0); #endif #ifdef ARCHIVE_HAS_RMD160 assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_RMD160), ed.rmd160, sizeof(ed.rmd160)) == 0); #endif #ifdef ARCHIVE_HAS_SHA1 assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_SHA1), ed.sha1, sizeof(ed.sha1)) == 0); #endif assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_SHA256), ed.sha256, sizeof(ed.sha256)) != 0); assertEqualInt(ARCHIVE_OK, archive_sha256_init(&expectedSha256Ctx)); assertEqualInt(ARCHIVE_OK, archive_sha256_update(&expectedSha256Ctx, "", 0)); assertEqualInt(ARCHIVE_OK, archive_sha256_final(&expectedSha256Ctx, ed.sha256)); assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_SHA256), ed.sha256, sizeof(ed.sha256)) == 0); #ifdef ARCHIVE_HAS_SHA384 assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_SHA384), ed.sha384, sizeof(ed.sha384)) == 0); #endif #ifdef ARCHIVE_HAS_SHA512 assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_SHA512), ed.sha512, sizeof(ed.sha512)) == 0); #endif archive_entry_free(entry); #else skipping("This platform does not support SHA256"); return; #endif } DEFINE_TEST(test_write_format_mtree_digests_sha256_digest_set_non_empty_data) { #ifdef ARCHIVE_HAS_SHA256 char buff[4096] = {0}; size_t used = 0; struct archive *a; struct archive_entry *entry; struct expected_digests ed; - memcpy(ed.sha256, (unsigned char[]) { + memcpy(ed.sha256, ((unsigned char[]) { 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed - }, sizeof(ed.sha256)); + }), sizeof(ed.sha256)); #ifdef ARCHIVE_HAS_MD5 assertEqualInt(ARCHIVE_OK, archive_md5_init(&expectedMd5Ctx)); assertEqualInt(ARCHIVE_OK, archive_md5_update(&expectedMd5Ctx, "abcd", 4)); assertEqualInt(ARCHIVE_OK, archive_md5_final(&expectedMd5Ctx, ed.md5)); #endif #ifdef ARCHIVE_HAS_RMD160 assertEqualInt(ARCHIVE_OK, archive_rmd160_init(&expectedRmd160Ctx)); assertEqualInt(ARCHIVE_OK, archive_rmd160_update(&expectedRmd160Ctx, "abcd", 4)); assertEqualInt(ARCHIVE_OK, archive_rmd160_final(&expectedRmd160Ctx, ed.rmd160)); #endif #ifdef ARCHIVE_HAS_SHA1 assertEqualInt(ARCHIVE_OK, archive_sha1_init(&expectedSha1Ctx)); assertEqualInt(ARCHIVE_OK, archive_sha1_update(&expectedSha1Ctx, "abcd", 4)); assertEqualInt(ARCHIVE_OK, archive_sha1_final(&expectedSha1Ctx, ed.sha1)); #endif #ifdef ARCHIVE_HAS_SHA384 assertEqualInt(ARCHIVE_OK, archive_sha384_init(&expectedSha384Ctx)); assertEqualInt(ARCHIVE_OK, archive_sha384_update(&expectedSha384Ctx, "abcd", 4)); assertEqualInt(ARCHIVE_OK, archive_sha384_final(&expectedSha384Ctx, ed.sha384)); #endif #ifdef ARCHIVE_HAS_SHA512 assertEqualInt(ARCHIVE_OK, archive_sha512_init(&expectedSha512Ctx)); assertEqualInt(ARCHIVE_OK, archive_sha512_update(&expectedSha512Ctx, "abcd", 4)); assertEqualInt(ARCHIVE_OK, archive_sha512_final(&expectedSha512Ctx, ed.sha512)); #endif assert((a = archive_write_new()) != NULL); assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_mtree(a)); assertEqualIntA(a, ARCHIVE_OK, archive_write_set_options(a, "all")); assertEqualIntA(a, ARCHIVE_OK, archive_write_open_memory(a, buff, sizeof(buff) - 1, &used)); assert((entry = archive_entry_new()) != NULL); archive_entry_set_pathname(entry, "test.data"); archive_entry_set_filetype(entry, AE_IFREG); archive_entry_set_size(entry, 4); archive_entry_set_digest(entry, ARCHIVE_ENTRY_DIGEST_SHA256, ed.sha256); assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, entry)); archive_write_data(a, "abcd", 4); archive_entry_free(entry); assertEqualIntA(a, ARCHIVE_OK, archive_write_close(a)); assertEqualIntA(a, ARCHIVE_OK, archive_write_free(a)); assert((a = archive_read_new()) != NULL); assert((entry = archive_entry_new()) != NULL); assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a)); assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a)); assertEqualIntA(a, ARCHIVE_OK, archive_read_open_memory(a, buff, used)); assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &entry)); #ifdef ARCHIVE_HAS_MD5 assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_MD5), ed.md5, sizeof(ed.md5)) == 0); #endif #ifdef ARCHIVE_HAS_RMD160 assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_RMD160), ed.rmd160, sizeof(ed.rmd160)) == 0); #endif #ifdef ARCHIVE_HAS_SHA1 assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_SHA1), ed.sha1, sizeof(ed.sha1)) == 0); #endif assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_SHA256), ed.sha256, sizeof(ed.sha256)) != 0); assertEqualInt(ARCHIVE_OK, archive_sha256_init(&expectedSha256Ctx)); assertEqualInt(ARCHIVE_OK, archive_sha256_update(&expectedSha256Ctx, "abcd", 4)); assertEqualInt(ARCHIVE_OK, archive_sha256_final(&expectedSha256Ctx, ed.sha256)); assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_SHA256), ed.sha256, sizeof(ed.sha256)) == 0); #ifdef ARCHIVE_HAS_SHA384 assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_SHA384), ed.sha384, sizeof(ed.sha384)) == 0); #endif #ifdef ARCHIVE_HAS_SHA512 assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_SHA512), ed.sha512, sizeof(ed.sha512)) == 0); #endif archive_entry_free(entry); #else skipping("This platform does not support SHA256"); return; #endif } DEFINE_TEST(test_write_format_mtree_digests_sha384_digest_set_no_data) { #ifdef ARCHIVE_HAS_SHA384 char buff[4096] = {0}; size_t used = 0; struct archive *a; struct archive_entry *entry; struct expected_digests ed; - memcpy(ed.sha384, (unsigned char[]) { + memcpy(ed.sha384, ((unsigned char[]) { 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed - }, sizeof(ed.sha384)); + }), sizeof(ed.sha384)); #ifdef ARCHIVE_HAS_MD5 assertEqualInt(ARCHIVE_OK, archive_md5_init(&expectedMd5Ctx)); assertEqualInt(ARCHIVE_OK, archive_md5_update(&expectedMd5Ctx, "", 0)); assertEqualInt(ARCHIVE_OK, archive_md5_final(&expectedMd5Ctx, ed.md5)); #endif #ifdef ARCHIVE_HAS_RMD160 assertEqualInt(ARCHIVE_OK, archive_rmd160_init(&expectedRmd160Ctx)); assertEqualInt(ARCHIVE_OK, archive_rmd160_update(&expectedRmd160Ctx, "", 0)); assertEqualInt(ARCHIVE_OK, archive_rmd160_final(&expectedRmd160Ctx, ed.rmd160)); #endif #ifdef ARCHIVE_HAS_SHA1 assertEqualInt(ARCHIVE_OK, archive_sha1_init(&expectedSha1Ctx)); assertEqualInt(ARCHIVE_OK, archive_sha1_update(&expectedSha1Ctx, "", 0)); assertEqualInt(ARCHIVE_OK, archive_sha1_final(&expectedSha1Ctx, ed.sha1)); #endif #ifdef ARCHIVE_HAS_SHA256 assertEqualInt(ARCHIVE_OK, archive_sha256_init(&expectedSha256Ctx)); assertEqualInt(ARCHIVE_OK, archive_sha256_update(&expectedSha256Ctx, "", 0)); assertEqualInt(ARCHIVE_OK, archive_sha256_final(&expectedSha256Ctx, ed.sha256)); #endif #ifdef ARCHIVE_HAS_SHA512 assertEqualInt(ARCHIVE_OK, archive_sha512_init(&expectedSha512Ctx)); assertEqualInt(ARCHIVE_OK, archive_sha512_update(&expectedSha512Ctx, "", 0)); assertEqualInt(ARCHIVE_OK, archive_sha512_final(&expectedSha512Ctx, ed.sha512)); #endif assert((a = archive_write_new()) != NULL); assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_mtree(a)); assertEqualIntA(a, ARCHIVE_OK, archive_write_set_options(a, "all")); assertEqualIntA(a, ARCHIVE_OK, archive_write_open_memory(a, buff, sizeof(buff) - 1, &used)); assert((entry = archive_entry_new()) != NULL); archive_entry_set_pathname(entry, "test.data"); archive_entry_set_filetype(entry, AE_IFREG); archive_entry_set_size(entry, 4); archive_entry_set_digest(entry, ARCHIVE_ENTRY_DIGEST_SHA384, ed.sha384); assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, entry)); archive_entry_free(entry); assertEqualIntA(a, ARCHIVE_OK, archive_write_close(a)); assertEqualIntA(a, ARCHIVE_OK, archive_write_free(a)); assert((a = archive_read_new()) != NULL); assert((entry = archive_entry_new()) != NULL); assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a)); assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a)); assertEqualIntA(a, ARCHIVE_OK, archive_read_open_memory(a, buff, used)); assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &entry)); #ifdef ARCHIVE_HAS_MD5 assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_MD5), ed.md5, sizeof(ed.md5)) == 0); #endif #ifdef ARCHIVE_HAS_RMD160 assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_RMD160), ed.rmd160, sizeof(ed.rmd160)) == 0); #endif #ifdef ARCHIVE_HAS_SHA1 assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_SHA1), ed.sha1, sizeof(ed.sha1)) == 0); #endif #ifdef ARCHIVE_HAS_SHA256 assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_SHA256), ed.sha256, sizeof(ed.sha256)) == 0); #endif assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_SHA384), ed.sha384, sizeof(ed.sha384)) == 0); #ifdef ARCHIVE_HAS_SHA512 assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_SHA512), ed.sha512, sizeof(ed.sha512)) == 0); #endif archive_entry_free(entry); #else skipping("This platform does not support SHA384"); return; #endif } DEFINE_TEST(test_write_format_mtree_digests_sha384_digest_set_empty_data) { #ifdef ARCHIVE_HAS_SHA384 char buff[4096] = {0}; size_t used = 0; struct archive *a; struct archive_entry *entry; struct expected_digests ed; - memcpy(ed.sha384, (unsigned char[]) { + memcpy(ed.sha384, ((unsigned char[]) { 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed - }, sizeof(ed.sha384)); + }), sizeof(ed.sha384)); #ifdef ARCHIVE_HAS_MD5 assertEqualInt(ARCHIVE_OK, archive_md5_init(&expectedMd5Ctx)); assertEqualInt(ARCHIVE_OK, archive_md5_update(&expectedMd5Ctx, "", 0)); assertEqualInt(ARCHIVE_OK, archive_md5_final(&expectedMd5Ctx, ed.md5)); #endif #ifdef ARCHIVE_HAS_RMD160 assertEqualInt(ARCHIVE_OK, archive_rmd160_init(&expectedRmd160Ctx)); assertEqualInt(ARCHIVE_OK, archive_rmd160_update(&expectedRmd160Ctx, "", 0)); assertEqualInt(ARCHIVE_OK, archive_rmd160_final(&expectedRmd160Ctx, ed.rmd160)); #endif #ifdef ARCHIVE_HAS_SHA1 assertEqualInt(ARCHIVE_OK, archive_sha1_init(&expectedSha1Ctx)); assertEqualInt(ARCHIVE_OK, archive_sha1_update(&expectedSha1Ctx, "", 0)); assertEqualInt(ARCHIVE_OK, archive_sha1_final(&expectedSha1Ctx, ed.sha1)); #endif #ifdef ARCHIVE_HAS_SHA256 assertEqualInt(ARCHIVE_OK, archive_sha256_init(&expectedSha256Ctx)); assertEqualInt(ARCHIVE_OK, archive_sha256_update(&expectedSha256Ctx, "", 0)); assertEqualInt(ARCHIVE_OK, archive_sha256_final(&expectedSha256Ctx, ed.sha256)); #endif #ifdef ARCHIVE_HAS_SHA512 assertEqualInt(ARCHIVE_OK, archive_sha512_init(&expectedSha512Ctx)); assertEqualInt(ARCHIVE_OK, archive_sha512_update(&expectedSha512Ctx, "", 0)); assertEqualInt(ARCHIVE_OK, archive_sha512_final(&expectedSha512Ctx, ed.sha512)); #endif assert((a = archive_write_new()) != NULL); assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_mtree(a)); assertEqualIntA(a, ARCHIVE_OK, archive_write_set_options(a, "all")); assertEqualIntA(a, ARCHIVE_OK, archive_write_open_memory(a, buff, sizeof(buff) - 1, &used)); assert((entry = archive_entry_new()) != NULL); archive_entry_set_pathname(entry, "test.data"); archive_entry_set_filetype(entry, AE_IFREG); archive_entry_set_size(entry, 4); archive_entry_set_digest(entry, ARCHIVE_ENTRY_DIGEST_SHA384, ed.sha384); assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, entry)); archive_write_data(a, "", 0); archive_entry_free(entry); assertEqualIntA(a, ARCHIVE_OK, archive_write_close(a)); assertEqualIntA(a, ARCHIVE_OK, archive_write_free(a)); assert((a = archive_read_new()) != NULL); assert((entry = archive_entry_new()) != NULL); assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a)); assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a)); assertEqualIntA(a, ARCHIVE_OK, archive_read_open_memory(a, buff, used)); assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &entry)); #ifdef ARCHIVE_HAS_MD5 assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_MD5), ed.md5, sizeof(ed.md5)) == 0); #endif #ifdef ARCHIVE_HAS_RMD160 assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_RMD160), ed.rmd160, sizeof(ed.rmd160)) == 0); #endif #ifdef ARCHIVE_HAS_SHA1 assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_SHA1), ed.sha1, sizeof(ed.sha1)) == 0); #endif #ifdef ARCHIVE_HAS_SHA256 assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_SHA256), ed.sha256, sizeof(ed.sha256)) == 0); #endif assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_SHA384), ed.sha384, sizeof(ed.sha384)) != 0); assertEqualInt(ARCHIVE_OK, archive_sha384_init(&expectedSha384Ctx)); assertEqualInt(ARCHIVE_OK, archive_sha384_update(&expectedSha384Ctx, "", 0)); assertEqualInt(ARCHIVE_OK, archive_sha384_final(&expectedSha384Ctx, ed.sha384)); assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_SHA384), ed.sha384, sizeof(ed.sha384)) == 0); #ifdef ARCHIVE_HAS_SHA512 assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_SHA512), ed.sha512, sizeof(ed.sha512)) == 0); #endif archive_entry_free(entry); #else skipping("This platform does not support SHA384"); return; #endif } DEFINE_TEST(test_write_format_mtree_digests_sha384_digest_set_non_empty_data) { #ifdef ARCHIVE_HAS_SHA384 char buff[4096] = {0}; size_t used = 0; struct archive *a; struct archive_entry *entry; struct expected_digests ed; - memcpy(ed.sha384, (unsigned char[]) { + memcpy(ed.sha384, ((unsigned char[]) { 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed - }, sizeof(ed.sha384)); + }), sizeof(ed.sha384)); #ifdef ARCHIVE_HAS_MD5 assertEqualInt(ARCHIVE_OK, archive_md5_init(&expectedMd5Ctx)); assertEqualInt(ARCHIVE_OK, archive_md5_update(&expectedMd5Ctx, "abcd", 4)); assertEqualInt(ARCHIVE_OK, archive_md5_final(&expectedMd5Ctx, ed.md5)); #endif #ifdef ARCHIVE_HAS_RMD160 assertEqualInt(ARCHIVE_OK, archive_rmd160_init(&expectedRmd160Ctx)); assertEqualInt(ARCHIVE_OK, archive_rmd160_update(&expectedRmd160Ctx, "abcd", 4)); assertEqualInt(ARCHIVE_OK, archive_rmd160_final(&expectedRmd160Ctx, ed.rmd160)); #endif #ifdef ARCHIVE_HAS_SHA1 assertEqualInt(ARCHIVE_OK, archive_sha1_init(&expectedSha1Ctx)); assertEqualInt(ARCHIVE_OK, archive_sha1_update(&expectedSha1Ctx, "abcd", 4)); assertEqualInt(ARCHIVE_OK, archive_sha1_final(&expectedSha1Ctx, ed.sha1)); #endif #ifdef ARCHIVE_HAS_SHA256 assertEqualInt(ARCHIVE_OK, archive_sha256_init(&expectedSha256Ctx)); assertEqualInt(ARCHIVE_OK, archive_sha256_update(&expectedSha256Ctx, "abcd", 4)); assertEqualInt(ARCHIVE_OK, archive_sha256_final(&expectedSha256Ctx, ed.sha256)); #endif #ifdef ARCHIVE_HAS_SHA512 assertEqualInt(ARCHIVE_OK, archive_sha512_init(&expectedSha512Ctx)); assertEqualInt(ARCHIVE_OK, archive_sha512_update(&expectedSha512Ctx, "abcd", 4)); assertEqualInt(ARCHIVE_OK, archive_sha512_final(&expectedSha512Ctx, ed.sha512)); #endif assert((a = archive_write_new()) != NULL); assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_mtree(a)); assertEqualIntA(a, ARCHIVE_OK, archive_write_set_options(a, "all")); assertEqualIntA(a, ARCHIVE_OK, archive_write_open_memory(a, buff, sizeof(buff) - 1, &used)); assert((entry = archive_entry_new()) != NULL); archive_entry_set_pathname(entry, "test.data"); archive_entry_set_filetype(entry, AE_IFREG); archive_entry_set_size(entry, 4); archive_entry_set_digest(entry, ARCHIVE_ENTRY_DIGEST_SHA384, ed.sha384); assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, entry)); archive_write_data(a, "abcd", 4); archive_entry_free(entry); assertEqualIntA(a, ARCHIVE_OK, archive_write_close(a)); assertEqualIntA(a, ARCHIVE_OK, archive_write_free(a)); assert((a = archive_read_new()) != NULL); assert((entry = archive_entry_new()) != NULL); assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a)); assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a)); assertEqualIntA(a, ARCHIVE_OK, archive_read_open_memory(a, buff, used)); assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &entry)); #ifdef ARCHIVE_HAS_MD5 assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_MD5), ed.md5, sizeof(ed.md5)) == 0); #endif #ifdef ARCHIVE_HAS_RMD160 assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_RMD160), ed.rmd160, sizeof(ed.rmd160)) == 0); #endif #ifdef ARCHIVE_HAS_SHA1 assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_SHA1), ed.sha1, sizeof(ed.sha1)) == 0); #endif #ifdef ARCHIVE_HAS_SHA256 assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_SHA256), ed.sha256, sizeof(ed.sha256)) == 0); #endif assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_SHA384), ed.sha384, sizeof(ed.sha384)) != 0); assertEqualInt(ARCHIVE_OK, archive_sha384_init(&expectedSha384Ctx)); assertEqualInt(ARCHIVE_OK, archive_sha384_update(&expectedSha384Ctx, "abcd", 4)); assertEqualInt(ARCHIVE_OK, archive_sha384_final(&expectedSha384Ctx, ed.sha384)); assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_SHA384), ed.sha384, sizeof(ed.sha384)) == 0); #ifdef ARCHIVE_HAS_SHA512 assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_SHA512), ed.sha512, sizeof(ed.sha512)) == 0); #endif archive_entry_free(entry); #else skipping("This platform does not support SHA384"); return; #endif } DEFINE_TEST(test_write_format_mtree_digests_sha512_digest_set_no_data) { #ifdef ARCHIVE_HAS_SHA512 char buff[4096] = {0}; size_t used = 0; struct archive *a; struct archive_entry *entry; struct expected_digests ed; - memcpy(ed.sha512, (unsigned char[]) { + memcpy(ed.sha512, ((unsigned char[]) { 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed - }, sizeof(ed.sha512)); + }), sizeof(ed.sha512)); #ifdef ARCHIVE_HAS_MD5 assertEqualInt(ARCHIVE_OK, archive_md5_init(&expectedMd5Ctx)); assertEqualInt(ARCHIVE_OK, archive_md5_update(&expectedMd5Ctx, "", 0)); assertEqualInt(ARCHIVE_OK, archive_md5_final(&expectedMd5Ctx, ed.md5)); #endif #ifdef ARCHIVE_HAS_RMD160 assertEqualInt(ARCHIVE_OK, archive_rmd160_init(&expectedRmd160Ctx)); assertEqualInt(ARCHIVE_OK, archive_rmd160_update(&expectedRmd160Ctx, "", 0)); assertEqualInt(ARCHIVE_OK, archive_rmd160_final(&expectedRmd160Ctx, ed.rmd160)); #endif #ifdef ARCHIVE_HAS_SHA1 assertEqualInt(ARCHIVE_OK, archive_sha1_init(&expectedSha1Ctx)); assertEqualInt(ARCHIVE_OK, archive_sha1_update(&expectedSha1Ctx, "", 0)); assertEqualInt(ARCHIVE_OK, archive_sha1_final(&expectedSha1Ctx, ed.sha1)); #endif #ifdef ARCHIVE_HAS_SHA256 assertEqualInt(ARCHIVE_OK, archive_sha256_init(&expectedSha256Ctx)); assertEqualInt(ARCHIVE_OK, archive_sha256_update(&expectedSha256Ctx, "", 0)); assertEqualInt(ARCHIVE_OK, archive_sha256_final(&expectedSha256Ctx, ed.sha256)); #endif #ifdef ARCHIVE_HAS_SHA384 assertEqualInt(ARCHIVE_OK, archive_sha384_init(&expectedSha384Ctx)); assertEqualInt(ARCHIVE_OK, archive_sha384_update(&expectedSha384Ctx, "", 0)); assertEqualInt(ARCHIVE_OK, archive_sha384_final(&expectedSha384Ctx, ed.sha384)); #endif assert((a = archive_write_new()) != NULL); assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_mtree(a)); assertEqualIntA(a, ARCHIVE_OK, archive_write_set_options(a, "all")); assertEqualIntA(a, ARCHIVE_OK, archive_write_open_memory(a, buff, sizeof(buff) - 1, &used)); assert((entry = archive_entry_new()) != NULL); archive_entry_set_pathname(entry, "test.data"); archive_entry_set_filetype(entry, AE_IFREG); archive_entry_set_size(entry, 4); archive_entry_set_digest(entry, ARCHIVE_ENTRY_DIGEST_SHA512, ed.sha512); assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, entry)); archive_entry_free(entry); assertEqualIntA(a, ARCHIVE_OK, archive_write_close(a)); assertEqualIntA(a, ARCHIVE_OK, archive_write_free(a)); assert((a = archive_read_new()) != NULL); assert((entry = archive_entry_new()) != NULL); assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a)); assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a)); assertEqualIntA(a, ARCHIVE_OK, archive_read_open_memory(a, buff, used)); assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &entry)); #ifdef ARCHIVE_HAS_MD5 assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_MD5), ed.md5, sizeof(ed.md5)) == 0); #endif #ifdef ARCHIVE_HAS_RMD160 assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_RMD160), ed.rmd160, sizeof(ed.rmd160)) == 0); #endif #ifdef ARCHIVE_HAS_SHA1 assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_SHA1), ed.sha1, sizeof(ed.sha1)) == 0); #endif #ifdef ARCHIVE_HAS_SHA256 assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_SHA256), ed.sha256, sizeof(ed.sha256)) == 0); #endif #ifdef ARCHIVE_HAS_SHA384 assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_SHA384), ed.sha384, sizeof(ed.sha384)) == 0); #endif assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_SHA512), ed.sha512, sizeof(ed.sha512)) == 0); archive_entry_free(entry); #else skipping("This platform does not support SHA512"); return; #endif } DEFINE_TEST(test_write_format_mtree_digests_sha512_digest_set_empty_data) { #ifdef ARCHIVE_HAS_SHA512 char buff[4096] = {0}; size_t used = 0; struct archive *a; struct archive_entry *entry; struct expected_digests ed; - memcpy(ed.sha512, (unsigned char[]) { + memcpy(ed.sha512, ((unsigned char[]) { 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed - }, sizeof(ed.sha512)); + }), sizeof(ed.sha512)); #ifdef ARCHIVE_HAS_MD5 assertEqualInt(ARCHIVE_OK, archive_md5_init(&expectedMd5Ctx)); assertEqualInt(ARCHIVE_OK, archive_md5_update(&expectedMd5Ctx, "", 0)); assertEqualInt(ARCHIVE_OK, archive_md5_final(&expectedMd5Ctx, ed.md5)); #endif #ifdef ARCHIVE_HAS_RMD160 assertEqualInt(ARCHIVE_OK, archive_rmd160_init(&expectedRmd160Ctx)); assertEqualInt(ARCHIVE_OK, archive_rmd160_update(&expectedRmd160Ctx, "", 0)); assertEqualInt(ARCHIVE_OK, archive_rmd160_final(&expectedRmd160Ctx, ed.rmd160)); #endif #ifdef ARCHIVE_HAS_SHA1 assertEqualInt(ARCHIVE_OK, archive_sha1_init(&expectedSha1Ctx)); assertEqualInt(ARCHIVE_OK, archive_sha1_update(&expectedSha1Ctx, "", 0)); assertEqualInt(ARCHIVE_OK, archive_sha1_final(&expectedSha1Ctx, ed.sha1)); #endif #ifdef ARCHIVE_HAS_SHA256 assertEqualInt(ARCHIVE_OK, archive_sha256_init(&expectedSha256Ctx)); assertEqualInt(ARCHIVE_OK, archive_sha256_update(&expectedSha256Ctx, "", 0)); assertEqualInt(ARCHIVE_OK, archive_sha256_final(&expectedSha256Ctx, ed.sha256)); #endif #ifdef ARCHIVE_HAS_SHA384 assertEqualInt(ARCHIVE_OK, archive_sha384_init(&expectedSha384Ctx)); assertEqualInt(ARCHIVE_OK, archive_sha384_update(&expectedSha384Ctx, "", 0)); assertEqualInt(ARCHIVE_OK, archive_sha384_final(&expectedSha384Ctx, ed.sha384)); #endif assert((a = archive_write_new()) != NULL); assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_mtree(a)); assertEqualIntA(a, ARCHIVE_OK, archive_write_set_options(a, "all")); assertEqualIntA(a, ARCHIVE_OK, archive_write_open_memory(a, buff, sizeof(buff) - 1, &used)); assert((entry = archive_entry_new()) != NULL); archive_entry_set_pathname(entry, "test.data"); archive_entry_set_filetype(entry, AE_IFREG); archive_entry_set_size(entry, 4); archive_entry_set_digest(entry, ARCHIVE_ENTRY_DIGEST_SHA512, ed.sha512); assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, entry)); archive_write_data(a, "", 0); archive_entry_free(entry); assertEqualIntA(a, ARCHIVE_OK, archive_write_close(a)); assertEqualIntA(a, ARCHIVE_OK, archive_write_free(a)); assert((a = archive_read_new()) != NULL); assert((entry = archive_entry_new()) != NULL); assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a)); assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a)); assertEqualIntA(a, ARCHIVE_OK, archive_read_open_memory(a, buff, used)); assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &entry)); #ifdef ARCHIVE_HAS_MD5 assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_MD5), ed.md5, sizeof(ed.md5)) == 0); #endif #ifdef ARCHIVE_HAS_RMD160 assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_RMD160), ed.rmd160, sizeof(ed.rmd160)) == 0); #endif #ifdef ARCHIVE_HAS_SHA1 assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_SHA1), ed.sha1, sizeof(ed.sha1)) == 0); #endif #ifdef ARCHIVE_HAS_SHA256 assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_SHA256), ed.sha256, sizeof(ed.sha256)) == 0); #endif #ifdef ARCHIVE_HAS_SHA384 assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_SHA384), ed.sha384, sizeof(ed.sha384)) == 0); #endif assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_SHA512), ed.sha512, sizeof(ed.sha512)) != 0); assertEqualInt(ARCHIVE_OK, archive_sha512_init(&expectedSha512Ctx)); assertEqualInt(ARCHIVE_OK, archive_sha512_update(&expectedSha512Ctx, "", 0)); assertEqualInt(ARCHIVE_OK, archive_sha512_final(&expectedSha512Ctx, ed.sha512)); assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_SHA512), ed.sha512, sizeof(ed.sha512)) == 0); archive_entry_free(entry); #else skipping("This platform does not support SHA512"); return; #endif } DEFINE_TEST(test_write_format_mtree_digests_sha512_digest_set_non_empty_data) { #ifdef ARCHIVE_HAS_SHA512 char buff[4096] = {0}; size_t used = 0; struct archive *a; struct archive_entry *entry; struct expected_digests ed; - memcpy(ed.sha512, (unsigned char[]) { + memcpy(ed.sha512, ((unsigned char[]) { 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed - }, sizeof(ed.sha512)); + }), sizeof(ed.sha512)); #ifdef ARCHIVE_HAS_MD5 assertEqualInt(ARCHIVE_OK, archive_md5_init(&expectedMd5Ctx)); assertEqualInt(ARCHIVE_OK, archive_md5_update(&expectedMd5Ctx, "abcd", 4)); assertEqualInt(ARCHIVE_OK, archive_md5_final(&expectedMd5Ctx, ed.md5)); #endif #ifdef ARCHIVE_HAS_RMD160 assertEqualInt(ARCHIVE_OK, archive_rmd160_init(&expectedRmd160Ctx)); assertEqualInt(ARCHIVE_OK, archive_rmd160_update(&expectedRmd160Ctx, "abcd", 4)); assertEqualInt(ARCHIVE_OK, archive_rmd160_final(&expectedRmd160Ctx, ed.rmd160)); #endif #ifdef ARCHIVE_HAS_SHA1 assertEqualInt(ARCHIVE_OK, archive_sha1_init(&expectedSha1Ctx)); assertEqualInt(ARCHIVE_OK, archive_sha1_update(&expectedSha1Ctx, "abcd", 4)); assertEqualInt(ARCHIVE_OK, archive_sha1_final(&expectedSha1Ctx, ed.sha1)); #endif #ifdef ARCHIVE_HAS_SHA256 assertEqualInt(ARCHIVE_OK, archive_sha256_init(&expectedSha256Ctx)); assertEqualInt(ARCHIVE_OK, archive_sha256_update(&expectedSha256Ctx, "abcd", 4)); assertEqualInt(ARCHIVE_OK, archive_sha256_final(&expectedSha256Ctx, ed.sha256)); #endif #ifdef ARCHIVE_HAS_SHA384 assertEqualInt(ARCHIVE_OK, archive_sha384_init(&expectedSha384Ctx)); assertEqualInt(ARCHIVE_OK, archive_sha384_update(&expectedSha384Ctx, "abcd", 4)); assertEqualInt(ARCHIVE_OK, archive_sha384_final(&expectedSha384Ctx, ed.sha384)); #endif assert((a = archive_write_new()) != NULL); assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_mtree(a)); assertEqualIntA(a, ARCHIVE_OK, archive_write_set_options(a, "all")); assertEqualIntA(a, ARCHIVE_OK, archive_write_open_memory(a, buff, sizeof(buff) - 1, &used)); assert((entry = archive_entry_new()) != NULL); archive_entry_set_pathname(entry, "test.data"); archive_entry_set_filetype(entry, AE_IFREG); archive_entry_set_size(entry, 4); archive_entry_set_digest(entry, ARCHIVE_ENTRY_DIGEST_SHA512, ed.sha512); assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, entry)); archive_write_data(a, "abcd", 4); archive_entry_free(entry); assertEqualIntA(a, ARCHIVE_OK, archive_write_close(a)); assertEqualIntA(a, ARCHIVE_OK, archive_write_free(a)); assert((a = archive_read_new()) != NULL); assert((entry = archive_entry_new()) != NULL); assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a)); assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a)); assertEqualIntA(a, ARCHIVE_OK, archive_read_open_memory(a, buff, used)); assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &entry)); #ifdef ARCHIVE_HAS_MD5 assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_MD5), ed.md5, sizeof(ed.md5)) == 0); #endif #ifdef ARCHIVE_HAS_RMD160 assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_RMD160), ed.rmd160, sizeof(ed.rmd160)) == 0); #endif #ifdef ARCHIVE_HAS_SHA1 assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_SHA1), ed.sha1, sizeof(ed.sha1)) == 0); #endif #ifdef ARCHIVE_HAS_SHA256 assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_SHA256), ed.sha256, sizeof(ed.sha256)) == 0); #endif #ifdef ARCHIVE_HAS_SHA384 assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_SHA384), ed.sha384, sizeof(ed.sha384)) == 0); #endif assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_SHA512), ed.sha512, sizeof(ed.sha512)) != 0); assertEqualInt(ARCHIVE_OK, archive_sha512_init(&expectedSha512Ctx)); assertEqualInt(ARCHIVE_OK, archive_sha512_update(&expectedSha512Ctx, "abcd", 4)); assertEqualInt(ARCHIVE_OK, archive_sha512_final(&expectedSha512Ctx, ed.sha512)); assert(memcmp(archive_entry_digest(entry, ARCHIVE_ENTRY_DIGEST_SHA512), ed.sha512, sizeof(ed.sha512)) == 0); archive_entry_free(entry); #else skipping("This platform does not support SHA512"); return; #endif }