@@ -708,24 +708,17 @@ def update(
708708 raise TypeError (
709709 "into length must be >= expected output size for this update"
710710 )
711- written = ffi .new ("size_t *" )
712711 rc = _lib .aegis128x2_state_encrypt_update (
713712 self ._state .ptr ,
714713 ffi .from_buffer (out_mv ),
715- out_mv .nbytes ,
716- written ,
717714 _ptr (message ),
718715 message .nbytes ,
719716 )
720717 if rc != 0 :
721718 err_num = ffi .errno
722719 err_name = errno .errorcode .get (err_num , f"errno_{ err_num } " )
723- raise RuntimeError (
724- f"state encrypt update failed: { err_name } written { written [0 ]} "
725- )
726- w = int (written [0 ])
727- assert w == expected_out
728- return out if into is None else memoryview (out )[:w ] # type: ignore
720+ raise RuntimeError (f"state encrypt update failed: { err_name } " )
721+ return out if into is None else memoryview (out )[:expected_out ] # type: ignore
729722
730723 def final (self , into : Buffer | None = None ) -> bytearray | memoryview :
731724 """Finalize encryption and return the authentication tag.
@@ -746,24 +739,17 @@ def final(self, into: Buffer | None = None) -> bytearray | memoryview:
746739 if into is not None :
747740 into = memoryview (into )
748741 out = into if into is not None else bytearray (maclen )
749- written = ffi .new ("size_t *" )
750742 rc = _lib .aegis128x2_state_encrypt_final (
751743 self ._state .ptr ,
752744 ffi .from_buffer (out ),
753- memoryview (out ).nbytes ,
754- written ,
755745 maclen ,
756746 )
757747 if rc != 0 :
758748 err_num = ffi .errno
759749 err_name = errno .errorcode .get (err_num , f"errno_{ err_num } " )
760750 raise RuntimeError (f"state encrypt final failed: { err_name } " )
761- w = int (written [0 ])
762- if into is None :
763- # Only the tag bytes are returned when we allocate the buffer
764- assert w == maclen
765751 self ._state = None
766- return out if into is None else memoryview (out )[:w ] # type: ignore
752+ return out if into is None else memoryview (out )[:maclen ] # type: ignore
767753
768754
769755class Decryptor :
@@ -837,24 +823,17 @@ def update(self, ct: Buffer, into: Buffer | None = None) -> bytearray | memoryvi
837823 out_mv = memoryview (out )
838824 if out_mv .nbytes < expected_out :
839825 raise TypeError ("into length must be >= required capacity for this update" )
840- written = ffi .new ("size_t *" )
841- rc = _lib .aegis128x2_state_decrypt_detached_update (
826+ rc = _lib .aegis128x2_state_decrypt_update (
842827 self ._state .ptr ,
843828 ffi .from_buffer (out_mv ),
844- out_mv .nbytes ,
845- written ,
846829 _ptr (ct ),
847830 ct .nbytes ,
848831 )
849832 if rc != 0 :
850833 err_num = ffi .errno
851834 err_name = errno .errorcode .get (err_num , f"errno_{ err_num } " )
852835 raise RuntimeError (f"state decrypt update failed: { err_name } " )
853- w = int (written [0 ])
854- assert w == expected_out , (
855- f"got { w } , expected { expected_out } , ct.nbytes={ ct .nbytes } "
856- )
857- return out if into is None else memoryview (out )[:w ] # type: ignore
836+ return out if into is None else memoryview (out )[:expected_out ] # type: ignore
858837
859838 def final (self , mac : Buffer ) -> None :
860839 """Finalize decryption by verifying the MAC tag.
@@ -873,9 +852,7 @@ def final(self, mac: Buffer) -> None:
873852 mac = memoryview (mac )
874853 if mac .nbytes != maclen :
875854 raise TypeError (f"mac length must be { maclen } " )
876- rc = _lib .aegis128x2_state_decrypt_detached_final (
877- self ._state .ptr , ffi .NULL , 0 , ffi .NULL , _ptr (mac ), maclen
878- )
855+ rc = _lib .aegis128x2_state_decrypt_final (self ._state .ptr , _ptr (mac ), maclen )
879856 if rc != 0 :
880857 raise ValueError ("authentication failed" )
881858 self ._state = None
0 commit comments