summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJustus Winter <justus@sequoia-pgp.org>2021-02-12 13:16:34 +0100
committerJustus Winter <justus@sequoia-pgp.org>2021-02-12 17:03:45 +0100
commitee36f89cba1109be4c2b5a146cae1ac119d94760 (patch)
tree229b27f6402e5f467e0d4b834f95cb584d371d46
parentcc396e2504df32d77cd14d500aed8e7a168f626e (diff)
openpgp: Prepare armored reader for a different mode of operation.
-rw-r--r--openpgp/src/armor.rs44
1 files changed, 25 insertions, 19 deletions
diff --git a/openpgp/src/armor.rs b/openpgp/src/armor.rs
index 0d02ecb4..3e8cbe46 100644
--- a/openpgp/src/armor.rs
+++ b/openpgp/src/armor.rs
@@ -1190,25 +1190,8 @@ fn base64_size_test() {
assert_eq!(base64_size(7), 12);
}
-impl<'a> Read for IoReader<'a> {
- fn read(&mut self, buf: &mut [u8]) -> Result<usize> {
- if ! self.initialized {
- self.initialize()?;
- }
-
- if buf.len() == 0 {
- // Short-circuit here. Otherwise, we copy 0 bytes into
- // the buffer, which means we decoded 0 bytes, and we
- // wrongfully assume that we reached the end of the
- // armored block.
- return Ok(0);
- }
-
- if self.finalized {
- assert_eq!(self.buffer.len(), 0);
- return Ok(0);
- }
-
+impl<'a> IoReader<'a> {
+ fn read_armored_data(&mut self, buf: &mut [u8]) -> Result<usize> {
let (consumed, decoded) = if self.buffer.len() > 0 {
// We have something buffered, use that.
@@ -1399,6 +1382,29 @@ impl<'a> Read for IoReader<'a> {
}
}
+impl<'a> Read for IoReader<'a> {
+ fn read(&mut self, buf: &mut [u8]) -> Result<usize> {
+ if ! self.initialized {
+ self.initialize()?;
+ }
+
+ if buf.len() == 0 {
+ // Short-circuit here. Otherwise, we copy 0 bytes into
+ // the buffer, which means we decoded 0 bytes, and we
+ // wrongfully assume that we reached the end of the
+ // armored block.
+ return Ok(0);
+ }
+
+ if self.finalized {
+ assert_eq!(self.buffer.len(), 0);
+ return Ok(0);
+ }
+
+ self.read_armored_data(buf)
+ }
+}
+
impl<'a> Read for Reader<'a> {
fn read(&mut self, buf: &mut [u8]) -> Result<usize> {
self.reader.read(buf)