From 6d6d3caa241b4c41cf311ca857dd45b4824b1f5e Mon Sep 17 00:00:00 2001 From: Thomas Waldmann Date: Sun, 20 Mar 2022 05:15:39 +0100 Subject: [PATCH] avoid losing the key if we just have a pointer to a bytes object which might go out of scope, we can lose it. also: cython can directly assign a bytes object into a same-size char array. --- src/borg/crypto/low_level.pyx | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/borg/crypto/low_level.pyx b/src/borg/crypto/low_level.pyx index ac1b60532..fe64a3aa9 100644 --- a/src/borg/crypto/low_level.pyx +++ b/src/borg/crypto/low_level.pyx @@ -428,7 +428,7 @@ cdef class _AEAD_BASE: cdef CIPHER cipher cdef EVP_CIPHER_CTX *ctx - cdef unsigned char *key + cdef unsigned char key[32] cdef int cipher_blk_len cdef int iv_len cdef int aad_offset @@ -587,8 +587,7 @@ cdef class _AEAD_BASE: if isinstance(iv, int): iv = iv.to_bytes(self.iv_len, byteorder='big') assert isinstance(iv, bytes) and len(iv) == self.iv_len - for i in range(self.iv_len): - self.iv[i] = iv[i] + self.iv = iv self.blocks = 0 # number of cipher blocks encrypted with this IV def next_iv(self):