chiark / gitweb /
base64: Tolerate lack of padding when decoding
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Fri, 16 Jun 2023 10:58:08 +0000 (11:58 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Fri, 16 Jun 2023 10:58:08 +0000 (11:58 +0100)
This restores the behaviour of hippotat 1.1.7.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
src/prelude.rs

index 11c13830f345f95bab400652fcb310d2a02253a1..fad8af1d599a91ecfd041ecd81ba8a3856c72879 100644 (file)
@@ -83,7 +83,19 @@ pub const SLIP_MIME_ESC: u8 = b'-'; // 2d
 
 pub const MAX_OVERHEAD: usize = 2_000;
 
-pub use base64::engine::{Engine as _};
-pub use base64::engine::general_purpose::STANDARD as BASE64_CONFIG;
+mod base64_config {
+  use base64::engine::*;
+  // Emit padding when we base64 encode things, but tolerate its lack
+  // hippotat 1.x always ignored padding (except for 1.1.8).
+  // Eventually we plan to stop emitting padding.
+  pub const BASE64_CONFIG: GeneralPurpose = GeneralPurpose::new(
+    &base64::alphabet::STANDARD,
+    GeneralPurposeConfig::new()
+      .with_encode_padding(true)
+      .with_decode_padding_mode(DecodePaddingMode::Indifferent)
+  );
+}
+pub use base64_config::*;
+pub use base64::Engine as _;
 
 pub fn default<T:Default>() -> T { Default::default() }