summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJustus Winter <justus@sequoia-pgp.org>2019-05-21 12:06:12 +0200
committerJustus Winter <justus@sequoia-pgp.org>2019-05-21 13:45:58 +0200
commit3863140b0d71eff1ff2240fcd0c7fb769b17a971 (patch)
tree92d6664d2ec2f3a6b73b843ae0ac431b6fc83eec
parent9e6d056dab32abd1f8381a701e1cd00d4fb8c660 (diff)
openpgp: New error for unsupported compression algorithms.
-rw-r--r--ffi/src/error.rs2
-rw-r--r--openpgp-ffi/include/sequoia/openpgp/error.h5
-rw-r--r--openpgp-ffi/src/error.rs8
-rw-r--r--openpgp/src/lib.rs4
-rw-r--r--openpgp/src/serialize/stream.rs3
5 files changed, 21 insertions, 1 deletions
diff --git a/ffi/src/error.rs b/ffi/src/error.rs
index a28b9b6f..889e4ac5 100644
--- a/ffi/src/error.rs
+++ b/ffi/src/error.rs
@@ -44,6 +44,8 @@ impl<'a> FromSequoiaError<'a> for Status {
Status::UnsupportedSymmetricAlgorithm,
&openpgp::Error::UnsupportedAEADAlgorithm(_) =>
Status::UnsupportedAEADAlgorithm,
+ &openpgp::Error::UnsupportedCompressionAlgorithm(_) =>
+ Status::UnsupportedCompressionAlgorithm,
&openpgp::Error::UnsupportedSignatureType(_) =>
Status::UnsupportedSignatureType,
&openpgp::Error::InvalidPassword =>
diff --git a/openpgp-ffi/include/sequoia/openpgp/error.h b/openpgp-ffi/include/sequoia/openpgp/error.h
index 239ebcf9..551aaa82 100644
--- a/openpgp-ffi/include/sequoia/openpgp/error.h
+++ b/openpgp-ffi/include/sequoia/openpgp/error.h
@@ -73,6 +73,11 @@ typedef enum pgp_status {
PGP_STATUS_UNSUPPORTED_AEAD_ALGORITHM = -26,
/*/
+ /// Unsupported Compression algorithm.
+ /*/
+ PGP_STATUS_UNSUPPORTED_COMPRESSION_ALGORITHM = -28,
+
+ /*/
/// Unsupport signature type.
/*/
PGP_STATUS_UNSUPPORTED_SIGNATURE_TYPE = -20,
diff --git a/openpgp-ffi/src/error.rs b/openpgp-ffi/src/error.rs
index 66dd7417..bf4aeb2b 100644
--- a/openpgp-ffi/src/error.rs
+++ b/openpgp-ffi/src/error.rs
@@ -93,6 +93,9 @@ pub enum Status {
/// Unsupported AEAD algorithm.
UnsupportedAEADAlgorithm = -26,
+ /// Unsupported Compression algorithm.
+ UnsupportedCompressionAlgorithm = -28,
+
/// Unsupport signature type.
UnsupportedSignatureType = -20,
@@ -139,6 +142,7 @@ pub enum Status {
// XXX: Skipping ManipulatedMessage = -25
// XXX: Skipping UnsupportedAEADAlgorithm = -26
// XXX: Skipping MissingSessionKey = -27
+ // XXX: Skipping UnsupportedCompressionAlgorithm = -28
}
/// Returns the error message.
@@ -165,6 +169,8 @@ pub extern "C" fn pgp_status_to_string(status: Status) -> *const c_char {
UnsupportedSymmetricAlgorithm =>
"Unsupported symmetric algorithm\x00",
UnsupportedAEADAlgorithm => "Unsupported AEAD algorithm\x00",
+ UnsupportedCompressionAlgorithm =>
+ "Unsupported compression algorithm\x00",
UnsupportedSignatureType => "Unsupport signature type\x00",
InvalidPassword => "Invalid password\x00",
InvalidSessionKey => "Invalid session key\x00",
@@ -201,6 +207,8 @@ impl<'a> From<&'a failure::Error> for Status {
Status::UnsupportedSymmetricAlgorithm,
&openpgp::Error::UnsupportedAEADAlgorithm(_) =>
Status::UnsupportedAEADAlgorithm,
+ &openpgp::Error::UnsupportedCompressionAlgorithm(_) =>
+ Status::UnsupportedCompressionAlgorithm,
&openpgp::Error::UnsupportedSignatureType(_) =>
Status::UnsupportedSignatureType,
&openpgp::Error::InvalidPassword =>
diff --git a/openpgp/src/lib.rs b/openpgp/src/lib.rs
index c9fe4ff5..d32dca1c 100644
--- a/openpgp/src/lib.rs
+++ b/openpgp/src/lib.rs
@@ -186,6 +186,10 @@ pub enum Error {
#[fail(display = "Unsupported AEAD algorithm: {}", _0)]
UnsupportedAEADAlgorithm(constants::AEADAlgorithm),
+ /// Unsupported Compression algorithm.
+ #[fail(display = "Unsupported Compression algorithm: {}", _0)]
+ UnsupportedCompressionAlgorithm(constants::CompressionAlgorithm),
+
/// Unsupported signature type.
#[fail(display = "Unsupported signature type: {}", _0)]
UnsupportedSignatureType(SignatureType),
diff --git a/openpgp/src/serialize/stream.rs b/openpgp/src/serialize/stream.rs
index 1d8a50bf..14b5fe63 100644
--- a/openpgp/src/serialize/stream.rs
+++ b/openpgp/src/serialize/stream.rs
@@ -751,7 +751,8 @@ impl<'a> Compressor<'a> {
#[cfg(feature = "compression-bzip2")]
CompressionAlgorithm::BZip2 =>
writer::BZ::new(inner, Cookie::new(level)),
- _ => unimplemented!(),
+ a =>
+ return Err(Error::UnsupportedCompressionAlgorithm(a).into()),
};
Ok(writer::Stack::from(Box::new(Self{inner: inner.into()})))