diff --git a/NEWS.md b/NEWS.md
index b361fa0..b88f559 100644
--- a/NEWS.md
+++ b/NEWS.md
@@ -1,12 +1,19 @@
+1.7.0 [2020-xx-xx]
+==================
+
+* Add support for encrypting using traditional PKWare encryption.
+* Add `zip_compression_method_supported()`.
+* Add `zip_encryption_method_supported()`.
+
 1.6.1 [2020-02-03]
 ==================
 
-* Bugfix for double-free in zipcmp(1) during cleanup.
+* Bugfix for double-free in `zipcmp(1)` during cleanup.
 
 1.6.0 [2020-01-24]
 ==================
 
-* Avoid using umask() since it's not thread-safe.
+* Avoid using `umask()` since it's not thread-safe.
 * Set close-on-exec flag when opening files.
 * Do not accept empty files as valid zip archives any longer.
 * Add support for XZ compressed files (using liblzma).
@@ -15,6 +22,7 @@
 
 1.5.2 [2019-03-12]
 ==================
+
 * Fix bug in AES encryption affecting certain file sizes
 * Keep file permissions when modifying zip archives
 * Support systems with small stack size.
@@ -52,6 +60,7 @@
 
 1.3.2 [2017-11-20]
 ==================
+
 * Fix bug introduced in last: zip_t was erroneously freed if zip_close() failed.
 
 1.3.1 [2017-11-19]
diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt
index 16394ad..8ac6af5 100644
--- a/lib/CMakeLists.txt
+++ b/lib/CMakeLists.txt
@@ -227,7 +227,7 @@
 ADD_LIBRARY(zip ${LIBZIP_SOURCES} ${LIBZIP_EXTRA_FILES} ${LIBZIP_OPTIONAL_FILES} ${LIBZIP_OPSYS_FILES})
 
 IF(SHARED_LIB_VERSIONNING)
-SET_TARGET_PROPERTIES(zip PROPERTIES VERSION 5.1 SOVERSION 5)
+SET_TARGET_PROPERTIES(zip PROPERTIES VERSION 5.2 SOVERSION 5)
 ENDIF()
 
 
diff --git a/lib/zip.h b/lib/zip.h
index 018c948..ebedc1f 100644
--- a/lib/zip.h
+++ b/lib/zip.h
@@ -448,6 +448,8 @@
 ZIP_EXTERN int zip_unchange(zip_t * _Nonnull, zip_uint64_t);
 ZIP_EXTERN int zip_unchange_all(zip_t * _Nonnull);
 ZIP_EXTERN int zip_unchange_archive(zip_t * _Nonnull);
+ZIP_EXTERN int zip_compression_method_supported(zip_int32_t method, int compress);
+ZIP_EXTERN int zip_encryption_method_supported(zip_uint16_t method, int encode);
 
 #ifdef __cplusplus
 }
diff --git a/lib/zip_get_encryption_implementation.c b/lib/zip_get_encryption_implementation.c
index 5ec8db5..54456ad 100644
--- a/lib/zip_get_encryption_implementation.c
+++ b/lib/zip_get_encryption_implementation.c
@@ -52,3 +52,11 @@
         return NULL;
     }
 }
+
+ZIP_EXTERN int
+zip_encryption_method_supported(zip_uint16_t method, int encode) {
+    if (method == ZIP_EM_NONE) {
+        return 1;
+    }
+    return _zip_get_encryption_implementation(method, encode ? ZIP_CODEC_ENCODE : ZIP_CODEC_DECODE) != NULL;
+}
diff --git a/lib/zip_source_compress.c b/lib/zip_source_compress.c
index 59b1212..4c318e0 100644
--- a/lib/zip_source_compress.c
+++ b/lib/zip_source_compress.c
@@ -106,10 +106,10 @@
     return NULL;
 }
 
-bool
-zip_compression_method_supported(zip_int32_t method, bool compress) {
+ZIP_EXTERN int
+zip_compression_method_supported(zip_int32_t method, int compress) {
     if (method == ZIP_CM_STORE) {
-	return true;
+	return 1;
     }
     return get_algorithm(method, compress) != NULL;
 }
diff --git a/lib/zipint.h b/lib/zipint.h
index 127d532..b507942 100644
--- a/lib/zipint.h
+++ b/lib/zipint.h
@@ -157,8 +157,6 @@
 extern zip_compression_algorithm_t zip_algorithm_xz_decompress;
 
 
-bool zip_compression_method_supported(zip_int32_t method, bool compress);
-
 /* This API is not final yet, but we need it internally, so it's private for now. */
 
 const zip_uint8_t *zip_get_extra_field_by_id(zip_t *, int, int, zip_uint16_t, int, zip_uint16_t *);
diff --git a/man/CMakeLists.txt b/man/CMakeLists.txt
index 5d7325a..19d57bc 100644
--- a/man/CMakeLists.txt
+++ b/man/CMakeLists.txt
@@ -4,9 +4,11 @@
   zip_add.3
   zip_add_dir.3
   zip_close.3
+  zip_compression_method_supported.3
   zip_delete.3
   zip_dir_add.3
   zip_discard.3
+  zip_encryption_method_supported.3
   zip_error_clear.3
   zip_error_code_system.3
   zip_error_code_zip.3
diff --git a/man/libzip.mdoc b/man/libzip.mdoc
index 72f18db..70917db 100644
--- a/man/libzip.mdoc
+++ b/man/libzip.mdoc
@@ -29,7 +29,7 @@
 .\" OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
 .\" IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 .\"
-.Dd January 7, 2020
+.Dd April 2, 2020
 .Dt LIBZIP 3
 .Os
 .Sh NAME
@@ -106,6 +106,10 @@
 .It
 .Xr zip_stat 3
 .It
+.Xr zip_compression_method_supported 3
+.It
+.Xr zip_encryption_method_supported 3
+.It
 .Xr zip_file_get_comment 3
 .It
 .Xr zip_file_get_external_attributes 3
diff --git a/man/zip_compression_method_supported.mdoc b/man/zip_compression_method_supported.mdoc
new file mode 100644
index 0000000..b375a30
--- /dev/null
+++ b/man/zip_compression_method_supported.mdoc
@@ -0,0 +1,65 @@
+.\" zip_compression_method_supported.mdoc -- return if compression method is supported
+.\" Copyright (C) 2020 Dieter Baron and Thomas Klausner
+.\"
+.\" This file is part of libzip, a library to manipulate ZIP files.
+.\" The authors can be contacted at <libzip@nih.at>
+.\"
+.\" 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.
+.\" 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.
+.\" 3. The names of the authors may not be used to endorse or promote
+.\"    products derived from this software without specific prior
+.\"    written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``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 AUTHORS 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.
+.\"
+.Dd April 2, 2020
+.Dt ZIP_COMPRESSION_METHOD_SUPPORTED 3
+.Os
+.Sh NAME
+.Nm zip_compression_method_supported
+.Nd return if a compression method is supported
+.Sh LIBRARY
+libzip (-lzip)
+.Sh SYNOPSIS
+.In zip.h
+.Ft int
+.Fn zip_compression_method_supported "zip_int32_t method" "int compress"
+.Sh DESCRIPTION
+The
+.Fn zip_compression_method_supported
+returns if the compression method
+.Ar method
+is supported for compression (if
+.Ar compress
+is zero) or decompression (otherwise).
+.Sh RETURN VALUES
+Returns 1 if the method is supported, 0 otherwise.
+.Sh SEE ALSO
+.Xr libzip 3 ,
+.Xr zip_encryption_method_supported 3 ,
+.Xr zip_set_file_compression 3
+.Sh HISTORY
+.Fn zip_compression_method_supported
+was added in libzip 1.7.0.
+.Sh AUTHORS
+.An -nosplit
+.An Dieter Baron Aq Mt dillo@nih.at
+and
+.An Thomas Klausner Aq Mt tk@giga.or.at
diff --git a/man/zip_encryption_method_supported.mdoc b/man/zip_encryption_method_supported.mdoc
new file mode 100644
index 0000000..43f6ff9
--- /dev/null
+++ b/man/zip_encryption_method_supported.mdoc
@@ -0,0 +1,65 @@
+.\" zip_encryption_method_supported.mdoc -- return if encryption method is supported
+.\" Copyright (C) 2020 Dieter Baron and Thomas Klausner
+.\"
+.\" This file is part of libzip, a library to manipulate ZIP files.
+.\" The authors can be contacted at <libzip@nih.at>
+.\"
+.\" 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.
+.\" 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.
+.\" 3. The names of the authors may not be used to endorse or promote
+.\"    products derived from this software without specific prior
+.\"    written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``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 AUTHORS 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.
+.\"
+.Dd April 2, 2020
+.Dt ZIP_ENCRYPTION_METHOD_SUPPORTED 3
+.Os
+.Sh NAME
+.Nm zip_encryption_method_supported
+.Nd return if an encryption method is supported
+.Sh LIBRARY
+libzip (-lzip)
+.Sh SYNOPSIS
+.In zip.h
+.Ft int
+.Fn zip_encryption_method_supported "zip_int16_t method" "int encrypt"
+.Sh DESCRIPTION
+The
+.Fn zip_encryption_method_supported
+returns if the encryption method
+.Ar method
+is supported for encryption (if
+.Ar encrypt
+is zero) or decryption (otherwise).
+.Sh RETURN VALUES
+Returns 1 if the method is supported, 0 otherwise.
+.Sh SEE ALSO
+.Xr libzip 3 ,
+.Xr zip_compression_method_supported 3 ,
+.Xr zip_file_set_encryption 3
+.Sh HISTORY
+.Fn zip_encryption_method_supported
+was added in libzip 1.7.0.
+.Sh AUTHORS
+.An -nosplit
+.An Dieter Baron Aq Mt dillo@nih.at
+and
+.An Thomas Klausner Aq Mt tk@giga.or.at
diff --git a/man/zip_file_set_encryption.mdoc b/man/zip_file_set_encryption.mdoc
index a09c42a..f2b2620 100644
--- a/man/zip_file_set_encryption.mdoc
+++ b/man/zip_file_set_encryption.mdoc
@@ -29,7 +29,7 @@
 .\" OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
 .\" IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 .\"
-.Dd December 18, 2017
+.Dd April 2, 2020
 .Dt ZIP_FILE_SET_ENCRYPTION 3
 .Os
 .Sh NAME
@@ -102,6 +102,9 @@
 .El
 .Sh SEE ALSO
 .Xr libzip 3 ,
+.Xr zip_encryption_method_supported 3 ,
+.Xr zip_fopen_encrypted 3 ,
+.Xr zip_fopen_index_encrypted 3 ,
 .Xr zip_set_default_password 3 ,
 .Xr zip_stat 3
 .Sh HISTORY
diff --git a/man/zip_set_file_compression.mdoc b/man/zip_set_file_compression.mdoc
index 3d3b5f4..db7c10e 100644
--- a/man/zip_set_file_compression.mdoc
+++ b/man/zip_set_file_compression.mdoc
@@ -29,7 +29,7 @@
 .\" OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
 .\" IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 .\"
-.Dd December 18, 2017
+.Dd April 2, 2020
 .Dt ZIP_SET_FILE_COMPRESSION 3
 .Os
 .Sh NAME
@@ -112,6 +112,7 @@
 .El
 .Sh SEE ALSO
 .Xr libzip 3 ,
+.Xr zip_compression_method_supported 3 ,
 .Xr zip_stat 3
 .Sh HISTORY
 .Fn zip_set_file_compression
diff --git a/src/ziptool.c b/src/ziptool.c
index 66a75a7..00376a6 100644
--- a/src/ziptool.c
+++ b/src/ziptool.c
@@ -820,25 +820,34 @@
 	fprintf(out, "\t%s %s\n\t    %s\n\n", dispatch_table[i].cmdline_name, dispatch_table[i].arg_names, dispatch_table[i].description);
     }
     fprintf(out, "\nSupported flags are:\n"
-		 "\t0\t(no flags)\n"
-		 "\tC\tZIP_FL_NOCASE\n"
-		 "\tc\tZIP_FL_CENTRAL\n"
-		 "\td\tZIP_FL_NODIR\n"
-		 "\tl\tZIP_FL_LOCAL\n"
-		 "\tu\tZIP_FL_UNCHANGED\n");
+	    "\t0\t(no flags)\n"
+	    "\tC\tZIP_FL_NOCASE\n"
+	    "\tc\tZIP_FL_CENTRAL\n"
+	    "\td\tZIP_FL_NODIR\n"
+	    "\tl\tZIP_FL_LOCAL\n"
+	    "\tu\tZIP_FL_UNCHANGED\n");
     fprintf(out, "\nSupported compression methods are:\n"
-		 "\tdefault\n"
-#if defined(HAVE_LIBBZ2)
-		 "\tbzip2\n"
-#endif
-		 "\tdeflate\n"
-		 "\tstore\n");
-    fprintf(out, "\nSupported compression methods are:\n"
-		 "\tnone\n"
-		 "\tPKWARE\n"
-		 "\tAES-128\n"
-		 "\tAES-192\n"
-		 "\tAES-256\n");
+	    "\tdefault\n");
+    if (zip_compression_method_supported(ZIP_CM_BZIP2, 1)) {
+	fprintf(out, "\tbzip2\n");
+    }
+    fprintf(out, "\tdeflate\n"
+	    "\tstore\n");
+    if (zip_compression_method_supported(ZIP_CM_XZ, 1)) {
+	fprintf(out, "\txz\n");
+    }
+    fprintf(out, "\nSupported encryption methods are:\n"
+	    "\tnone\n");
+    if (zip_encryption_method_supported(ZIP_EM_AES_128, 1)) {
+	fprintf(out, "\tAES-128\n");
+    }
+    if (zip_encryption_method_supported(ZIP_EM_AES_192, 1)) {
+	fprintf(out, "\tAES-192\n");
+    }
+    if (zip_encryption_method_supported(ZIP_EM_AES_256, 1)) {
+	fprintf(out, "\tAES-256\n");
+    }
+    fprintf(out, "\tPKWARE\n");
     fprintf(out, "\nThe index is zero-based.\n");
     exit(0);
 }
