Track funding amount in HolderFundingOutput
[rust-lightning] / lightning / src / util / chacha20poly1305rfc.rs
index befe5d19f5f18f06454fd9140caf3fe026e9e8ec..3254e8b0134d298517fcc9095792fb48c9935b50 100644 (file)
@@ -74,6 +74,11 @@ mod real_chachapoly {
                        self.mac.raw_result(out_tag);
                }
 
+               pub fn encrypt_full_message_in_place(&mut self, input_output: &mut [u8], out_tag: &mut [u8]) {
+                       self.encrypt_in_place(input_output);
+                       self.finish_and_get_tag(out_tag);
+               }
+
                // Encrypt `input_output` in-place. To finish and calculate the tag, use `finish_and_get_tag`
                // below.
                pub(super) fn encrypt_in_place(&mut self, input_output: &mut [u8]) {
@@ -284,12 +289,17 @@ mod fuzzy_chachapoly {
                        self.finished = true;
                }
 
+               pub fn encrypt_full_message_in_place(&mut self, input_output: &mut [u8], out_tag: &mut [u8]) {
+                       self.encrypt_in_place(input_output);
+                       self.finish_and_get_tag(out_tag);
+               }
+
                pub(super) fn encrypt_in_place(&mut self, _input_output: &mut [u8]) {
                        assert!(self.finished == false);
-                       self.finished = true;
                }
 
                pub(super) fn finish_and_get_tag(&mut self, out_tag: &mut [u8]) {
+                       assert!(self.finished == false);
                        out_tag.copy_from_slice(&self.tag);
                        self.finished = true;
                }
@@ -325,7 +335,7 @@ mod tests {
        use util::ser::{self, FixedLengthReader, LengthReadableArgs, Writeable};
 
        // Used for for testing various lengths of serialization.
-       #[derive(Debug, PartialEq)]
+       #[derive(Debug, PartialEq, Eq)]
        struct TestWriteable {
                field1: Vec<u8>,
                field2: Vec<u8>,