Переглянути джерело

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.
Thomas Waldmann 3 роки тому
батько
коміт
6d6d3caa24
1 змінених файлів з 2 додано та 3 видалено
  1. 2 3
      src/borg/crypto/low_level.pyx

+ 2 - 3
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):