From: Michihiro NAKAJIMA Date: Sun, 14 Sep 2014 13:38:27 +0000 (+0900) Subject: Skip encryption/decryption tests for WinZip AES if platform does not X-Git-Tag: v3.1.900a~220 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d4b6894dcf40291a89276078a6233f5e7a38db99;p=thirdparty%2Flibarchive.git Skip encryption/decryption tests for WinZip AES if platform does not provide PBKDF2 functionarity. --- diff --git a/libarchive/archive_write_set_format_zip.c b/libarchive/archive_write_set_format_zip.c index e604e1edc..5a5ebdc01 100644 --- a/libarchive/archive_write_set_format_zip.c +++ b/libarchive/archive_write_set_format_zip.c @@ -1619,8 +1619,10 @@ is_winzip_aes_encryption_supported(int encryption) } if (archive_random(salt, salt_len) != ARCHIVE_OK) return (0); - archive_pbkdf2_sha1("p", 1, salt, salt_len, 1000, + ret = archive_pbkdf2_sha1("p", 1, salt, salt_len, 1000, derived_key, key_len * 2 + 2); + if (ret != 0) + return (0); ret = archive_encrypto_aes_ctr_init(&cctx, derived_key, key_len); if (ret != 0) diff --git a/libarchive/test/test_read_format_zip_winzip_aes_large.c b/libarchive/test/test_read_format_zip_winzip_aes_large.c index 6cff24840..4027fc0ea 100644 --- a/libarchive/test/test_read_format_zip_winzip_aes_large.c +++ b/libarchive/test/test_read_format_zip_winzip_aes_large.c @@ -33,6 +33,20 @@ DEFINE_TEST(test_read_format_zip_winzip_aes256_large) struct archive *a; char buff[512]; + + /* Check if running system has cryptographic functionarity. */ + assert((a = archive_write_new()) != NULL); + assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_zip(a)); + assertEqualIntA(a, ARCHIVE_OK, archive_write_add_filter_none(a)); + if (ARCHIVE_OK != archive_write_set_options(a, + "zip:encryption=aes256")) { + skipping("This system does not have cryptographic liberary"); + archive_write_free(a); + return; + } + archive_write_free(a); + + extract_reference_file(refname); /*