pycryptodome 4.2.0__tar.gz → 4.3.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (614) hide show
  1. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/.github/workflows/codeql-analysis.yml +1 -1
  2. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/.github/workflows/integration.yml +30 -9
  3. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/.github/workflows/wheels.yml +7 -3
  4. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/Changelog.rst +61 -0
  5. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/Doc/Makefile +1 -1
  6. pycryptodome-4.3.0/Doc/_static/scorer.js +29 -0
  7. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/Doc/conf.py +44 -1
  8. pycryptodome-4.3.0/Doc/index.rst +74 -0
  9. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/Doc/src/api.rst +4 -0
  10. pycryptodome-4.3.0/Doc/src/cipher/aes.rst +196 -0
  11. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/Doc/src/cipher/cipher.rst +11 -5
  12. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/Doc/src/cipher/classic.rst +62 -17
  13. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/Doc/src/cipher/modern.rst +98 -85
  14. pycryptodome-4.3.0/Doc/src/cipher/pkcs1_v1_5.rst +54 -0
  15. pycryptodome-4.3.0/Doc/src/examples.rst +32 -0
  16. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/Doc/src/features.rst +2 -1
  17. pycryptodome-4.3.0/Doc/src/guides/hashing.rst +118 -0
  18. pycryptodome-4.3.0/Doc/src/guides/index.rst +10 -0
  19. pycryptodome-4.3.0/Doc/src/guides/keys.rst +141 -0
  20. pycryptodome-4.3.0/Doc/src/guides/passwords.rst +169 -0
  21. pycryptodome-4.3.0/Doc/src/guides/public_key_encryption.rst +130 -0
  22. pycryptodome-4.3.0/Doc/src/guides/signatures.rst +125 -0
  23. pycryptodome-4.3.0/Doc/src/guides/symmetric.rst +203 -0
  24. pycryptodome-4.3.0/Doc/src/guides/tasks.rst.inc +34 -0
  25. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/Doc/src/hash/turboshake.rst +2 -2
  26. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/Doc/src/protocol/kdf.rst +2 -2
  27. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/PKG-INFO +1 -1
  28. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/compiler_opt.py +153 -0
  29. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/Cipher/AES.py +30 -17
  30. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/Cipher/ARC2.py +2 -1
  31. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/Cipher/Blowfish.py +2 -1
  32. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/Cipher/CAST.py +2 -1
  33. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/Cipher/DES.py +2 -1
  34. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/Cipher/DES3.py +2 -1
  35. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/Cipher/PKCS1_v1_5.py +122 -29
  36. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/Cipher/_mode_cbc.py +39 -41
  37. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/Cipher/_mode_ccm.py +93 -93
  38. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/Cipher/_mode_cfb.py +44 -46
  39. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/Cipher/_mode_ctr.py +77 -79
  40. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/Cipher/_mode_eax.py +86 -86
  41. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/Cipher/_mode_ecb.py +28 -30
  42. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/Cipher/_mode_gcm.py +107 -101
  43. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/Cipher/_mode_kw.py +2 -2
  44. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/Cipher/_mode_kwp.py +2 -2
  45. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/Cipher/_mode_ocb.py +71 -71
  46. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/Cipher/_mode_ofb.py +40 -42
  47. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/Cipher/_mode_openpgp.py +26 -22
  48. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/Cipher/_mode_siv.py +64 -64
  49. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/Cipher/_pkcs1_oaep_decode.py +27 -0
  50. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/Hash/SHA224.py +6 -0
  51. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/Hash/SHA256.py +5 -0
  52. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/Hash/SHA384.py +13 -4
  53. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/Hash/SHA512.py +13 -4
  54. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/Math/_IntegerBase.py +26 -4
  55. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/Math/_IntegerNat.py +70 -8
  56. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/PublicKey/DSA.py +2 -0
  57. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/PublicKey/RSA.py +50 -6
  58. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/SelfTest/Cipher/test_AES.py +10 -4
  59. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/SelfTest/Cipher/test_ChaCha20.py +51 -0
  60. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/SelfTest/Cipher/test_GCM.py +12 -6
  61. pycryptodome-4.3.0/lib/Crypto/SelfTest/Cipher/test_pkcs1_15.py +514 -0
  62. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/SelfTest/Hash/common.py +15 -0
  63. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/SelfTest/Hash/test_SHA224.py +9 -0
  64. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/SelfTest/Hash/test_SHA256.py +9 -0
  65. pycryptodome-4.3.0/lib/Crypto/SelfTest/Hash/test_SHA384.py +118 -0
  66. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/SelfTest/Hash/test_SHA512.py +69 -1
  67. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/SelfTest/Math/test_Numbers.py +51 -0
  68. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/SelfTest/PublicKey/test_RSA.py +68 -0
  69. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/SelfTest/Util/test_asn1.py +27 -0
  70. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/Signature/DSS.py +1 -1
  71. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/Signature/pkcs1_15.py +1 -1
  72. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/Signature/pss.py +1 -1
  73. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/Util/_cpu_features.py +42 -0
  74. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/Util/asn1.py +11 -1
  75. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/__init__.py +1 -1
  76. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/pycryptodome.egg-info/PKG-INFO +1 -1
  77. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/pycryptodome.egg-info/SOURCES.txt +22 -0
  78. pycryptodome-4.3.0/requirements-test.txt +2 -0
  79. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/setup.py +33 -0
  80. pycryptodome-4.3.0/src/AES_armv8.c +344 -0
  81. pycryptodome-4.3.0/src/SHA224_armv8.c +17 -0
  82. pycryptodome-4.3.0/src/SHA256_armv8.c +17 -0
  83. pycryptodome-4.3.0/src/SHA384_armv8.c +17 -0
  84. pycryptodome-4.3.0/src/SHA512_armv8.c +17 -0
  85. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/Salsa20.c +3 -2
  86. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/cpuid.c +119 -0
  87. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/ec_common.c +8 -1
  88. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/ed25519.c +5 -11
  89. pycryptodome-4.3.0/src/ghash_pmull.c +311 -0
  90. pycryptodome-4.3.0/src/hash_SHA2_compress_armv8.c +151 -0
  91. pycryptodome-4.3.0/src/hash_SHA2_compress_portable.c +172 -0
  92. pycryptodome-4.3.0/src/hash_SHA2_compress_shani.c +92 -0
  93. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/hash_SHA2_template.c +28 -290
  94. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/k12.c +34 -10
  95. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/keccak_x4_avx2.c +6 -0
  96. pycryptodome-4.3.0/src/keccak_x4_neon.c +299 -0
  97. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/mldsa_config.h +2 -1
  98. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/mldsa_fips202.h +18 -9
  99. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/mlkem_config.h +2 -1
  100. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/mlkem_fips202.h +18 -9
  101. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/nat.c +1 -4
  102. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/nat.h +18 -1
  103. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/nat_ct.h +33 -0
  104. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/nat_mod.c +280 -64
  105. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/pkcs1_decode.c +127 -17
  106. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/pq_fips202.h +39 -1
  107. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/raw_ctr.c +66 -20
  108. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/test/CMakeLists.txt +44 -1
  109. pycryptodome-4.3.0/src/test/test_aes_armv8.c +118 -0
  110. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/test/test_chacha20.c +1 -1
  111. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/test/test_ec_common.c +3 -3
  112. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/test/test_ghash.c +16 -2
  113. pycryptodome-4.3.0/src/test/test_keccak_x4.c +94 -0
  114. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/test/test_nat.c +107 -0
  115. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/test/test_nat_ct.c +23 -0
  116. pycryptodome-4.3.0/src/test/test_pkcs1.c +285 -0
  117. pycryptodome-4.3.0/src/test/test_pkcs1_ct.c +92 -0
  118. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/test/test_raw_ctr.c +8 -0
  119. pycryptodome-4.2.0/Doc/index.rst +0 -44
  120. pycryptodome-4.2.0/Doc/src/cipher/aes.rst +0 -42
  121. pycryptodome-4.2.0/Doc/src/cipher/pkcs1_v1_5.rst +0 -41
  122. pycryptodome-4.2.0/Doc/src/examples.rst +0 -241
  123. pycryptodome-4.2.0/lib/Crypto/SelfTest/Cipher/test_pkcs1_15.py +0 -259
  124. pycryptodome-4.2.0/lib/Crypto/SelfTest/Hash/test_SHA384.py +0 -58
  125. pycryptodome-4.2.0/requirements-test.txt +0 -2
  126. pycryptodome-4.2.0/src/test/test_pkcs1.c +0 -164
  127. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/AUTHORS.rst +0 -0
  128. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/Doc/Changelog.pycrypto +0 -0
  129. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/Doc/LEGAL/00INDEX +0 -0
  130. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/Doc/LEGAL/COPYRIGHT.pycrypto +0 -0
  131. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/Doc/LEGAL/copy/00INDEX +0 -0
  132. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/Doc/LEGAL/copy/LICENSE.orig +0 -0
  133. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/Doc/LEGAL/copy/LICENSE.python-2.2 +0 -0
  134. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/Doc/LEGAL/copy/stmts/Andrew_M_Kuchling.mbox +0 -0
  135. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/Doc/LEGAL/copy/stmts/Barry_A_Warsaw.mbox +0 -0
  136. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/Doc/LEGAL/copy/stmts/Jeethu_Rao.mbox +0 -0
  137. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/Doc/LEGAL/copy/stmts/Joris_Bontje.mbox +0 -0
  138. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/Doc/LEGAL/copy/stmts/Mark_Moraes.mbox +0 -0
  139. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/Doc/LEGAL/copy/stmts/Paul_Swartz.mbox +0 -0
  140. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/Doc/LEGAL/copy/stmts/Robey_Pointer.asc +0 -0
  141. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/Doc/LEGAL/copy/stmts/Wim_Lewis.asc +0 -0
  142. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/Doc/LEGAL/tsu-notify.mbox +0 -0
  143. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/Doc/_static/custom.css +0 -0
  144. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/Doc/_static/pycryptodome-favicon-32.png +0 -0
  145. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/Doc/_static/pycryptodome-favicon.svg +0 -0
  146. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/Doc/_static/pycryptodome-logo-dark.svg +0 -0
  147. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/Doc/_static/pycryptodome-logo-light.svg +0 -0
  148. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/Doc/_templates/base.html +0 -0
  149. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/Doc/make.bat +0 -0
  150. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/Doc/requirements-docs.txt +0 -0
  151. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/Doc/src/changelog.rst +0 -0
  152. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/Doc/src/cipher/aead.png +0 -0
  153. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/Doc/src/cipher/aead.xml +0 -0
  154. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/Doc/src/cipher/arc2.rst +0 -0
  155. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/Doc/src/cipher/arc4.rst +0 -0
  156. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/Doc/src/cipher/blowfish.rst +0 -0
  157. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/Doc/src/cipher/cast.rst +0 -0
  158. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/Doc/src/cipher/chacha20.rst +0 -0
  159. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/Doc/src/cipher/chacha20_poly1305.rst +0 -0
  160. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/Doc/src/cipher/ctr_mode.png +0 -0
  161. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/Doc/src/cipher/ctr_mode.xml +0 -0
  162. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/Doc/src/cipher/des.rst +0 -0
  163. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/Doc/src/cipher/des3.rst +0 -0
  164. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/Doc/src/cipher/oaep.rst +0 -0
  165. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/Doc/src/cipher/ocb_mode.png +0 -0
  166. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/Doc/src/cipher/ocb_mode.xml +0 -0
  167. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/Doc/src/cipher/salsa20.rst +0 -0
  168. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/Doc/src/cipher/simple_mode.png +0 -0
  169. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/Doc/src/cipher/simple_mode.xml +0 -0
  170. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/Doc/src/cipher/siv.png +0 -0
  171. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/Doc/src/cipher/siv.xml +0 -0
  172. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/Doc/src/contribute_support.rst +0 -0
  173. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/Doc/src/exceptions.rst +0 -0
  174. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/Doc/src/faq.rst +0 -0
  175. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/Doc/src/hash/blake2b.rst +0 -0
  176. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/Doc/src/hash/blake2s.rst +0 -0
  177. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/Doc/src/hash/cmac.rst +0 -0
  178. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/Doc/src/hash/cshake128.rst +0 -0
  179. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/Doc/src/hash/cshake256.rst +0 -0
  180. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/Doc/src/hash/hash.rst +0 -0
  181. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/Doc/src/hash/hashing.png +0 -0
  182. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/Doc/src/hash/hashing.xml +0 -0
  183. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/Doc/src/hash/hmac.rst +0 -0
  184. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/Doc/src/hash/k12.rst +0 -0
  185. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/Doc/src/hash/keccak.rst +0 -0
  186. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/Doc/src/hash/kmac128.rst +0 -0
  187. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/Doc/src/hash/kmac256.rst +0 -0
  188. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/Doc/src/hash/md2.rst +0 -0
  189. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/Doc/src/hash/md4.rst +0 -0
  190. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/Doc/src/hash/md5.rst +0 -0
  191. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/Doc/src/hash/poly1305.rst +0 -0
  192. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/Doc/src/hash/ripemd160.rst +0 -0
  193. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/Doc/src/hash/sha1.rst +0 -0
  194. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/Doc/src/hash/sha224.rst +0 -0
  195. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/Doc/src/hash/sha256.rst +0 -0
  196. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/Doc/src/hash/sha384.rst +0 -0
  197. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/Doc/src/hash/sha3_224.rst +0 -0
  198. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/Doc/src/hash/sha3_256.rst +0 -0
  199. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/Doc/src/hash/sha3_384.rst +0 -0
  200. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/Doc/src/hash/sha3_512.rst +0 -0
  201. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/Doc/src/hash/sha512.rst +0 -0
  202. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/Doc/src/hash/shake128.rst +0 -0
  203. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/Doc/src/hash/shake256.rst +0 -0
  204. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/Doc/src/hash/tuplehash128.rst +0 -0
  205. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/Doc/src/hash/tuplehash256.rst +0 -0
  206. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/Doc/src/hash/xof.png +0 -0
  207. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/Doc/src/hash/xof.xml +0 -0
  208. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/Doc/src/installation.rst +0 -0
  209. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/Doc/src/introduction.rst +0 -0
  210. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/Doc/src/io/io.rst +0 -0
  211. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/Doc/src/io/kdf_limits.rst +0 -0
  212. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/Doc/src/io/pem.rst +0 -0
  213. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/Doc/src/io/pkcs8.rst +0 -0
  214. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/Doc/src/license.rst +0 -0
  215. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/Doc/src/protocol/dh.png +0 -0
  216. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/Doc/src/protocol/dh.rst +0 -0
  217. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/Doc/src/protocol/hpke.png +0 -0
  218. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/Doc/src/protocol/hpke.rst +0 -0
  219. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/Doc/src/protocol/hpkeAUTH.png +0 -0
  220. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/Doc/src/protocol/hpkePSK.png +0 -0
  221. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/Doc/src/protocol/protocol.rst +0 -0
  222. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/Doc/src/protocol/ss.rst +0 -0
  223. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/Doc/src/public_key/dsa.rst +0 -0
  224. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/Doc/src/public_key/ecc.rst +0 -0
  225. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/Doc/src/public_key/elgamal.rst +0 -0
  226. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/Doc/src/public_key/hybrid.rst +0 -0
  227. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/Doc/src/public_key/mldsa.rst +0 -0
  228. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/Doc/src/public_key/mlkem.rst +0 -0
  229. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/Doc/src/public_key/public_key.rst +0 -0
  230. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/Doc/src/public_key/rsa.rst +0 -0
  231. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/Doc/src/random/random.rst +0 -0
  232. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/Doc/src/signature/dsa.rst +0 -0
  233. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/Doc/src/signature/eddsa.rst +0 -0
  234. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/Doc/src/signature/mldsa.rst +0 -0
  235. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/Doc/src/signature/pkcs1_pss.rst +0 -0
  236. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/Doc/src/signature/pkcs1_v1_5.rst +0 -0
  237. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/Doc/src/signature/signature.rst +0 -0
  238. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/Doc/src/util/asn1.rst +0 -0
  239. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/Doc/src/util/counter_be.png +0 -0
  240. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/Doc/src/util/counter_be.xml +0 -0
  241. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/Doc/src/util/counter_le.png +0 -0
  242. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/Doc/src/util/counter_le.xml +0 -0
  243. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/Doc/src/util/util.rst +0 -0
  244. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/INSTALL.rst +0 -0
  245. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/LICENSE.rst +0 -0
  246. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/MANIFEST.in +0 -0
  247. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/README.rst +0 -0
  248. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/Cipher/ARC4.py +0 -0
  249. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/Cipher/ChaCha20.py +0 -0
  250. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/Cipher/ChaCha20_Poly1305.py +0 -0
  251. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/Cipher/PKCS1_OAEP.py +0 -0
  252. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/Cipher/Salsa20.py +0 -0
  253. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/Cipher/_EKSBlowfish.py +0 -0
  254. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/Cipher/__init__.py +0 -0
  255. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/Cipher/_state_machine.py +0 -0
  256. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/Cipher/oaep.py +0 -0
  257. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/Hash/BLAKE2b.py +0 -0
  258. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/Hash/BLAKE2s.py +0 -0
  259. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/Hash/CMAC.py +0 -0
  260. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/Hash/HMAC.py +0 -0
  261. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/Hash/KMAC128.py +0 -0
  262. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/Hash/KMAC256.py +0 -0
  263. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/Hash/KangarooTwelve.py +0 -0
  264. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/Hash/MD2.py +0 -0
  265. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/Hash/MD4.py +0 -0
  266. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/Hash/MD5.py +0 -0
  267. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/Hash/Poly1305.py +0 -0
  268. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/Hash/RIPEMD.py +0 -0
  269. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/Hash/RIPEMD160.py +0 -0
  270. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/Hash/SHA.py +0 -0
  271. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/Hash/SHA1.py +0 -0
  272. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/Hash/SHA3_224.py +0 -0
  273. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/Hash/SHA3_256.py +0 -0
  274. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/Hash/SHA3_384.py +0 -0
  275. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/Hash/SHA3_512.py +0 -0
  276. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/Hash/SHAKE128.py +0 -0
  277. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/Hash/SHAKE256.py +0 -0
  278. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/Hash/TupleHash128.py +0 -0
  279. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/Hash/TupleHash256.py +0 -0
  280. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/Hash/TurboSHAKE128.py +0 -0
  281. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/Hash/TurboSHAKE256.py +0 -0
  282. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/Hash/__init__.py +0 -0
  283. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/Hash/cSHAKE128.py +0 -0
  284. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/Hash/cSHAKE256.py +0 -0
  285. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/Hash/keccak.py +0 -0
  286. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/IO/PEM.py +0 -0
  287. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/IO/PKCS8.py +0 -0
  288. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/IO/_PBES.py +0 -0
  289. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/IO/__init__.py +0 -0
  290. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/Math/Numbers.py +0 -0
  291. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/Math/Primality.py +0 -0
  292. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/Math/_IntegerNative.py +0 -0
  293. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/Math/__init__.py +0 -0
  294. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/Protocol/DH.py +0 -0
  295. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/Protocol/HPKE.py +0 -0
  296. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/Protocol/KDF.py +0 -0
  297. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/Protocol/SecretSharing.py +0 -0
  298. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/Protocol/__init__.py +0 -0
  299. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/PublicKey/ECC.py +0 -0
  300. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/PublicKey/ElGamal.py +0 -0
  301. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/PublicKey/Hybrid.py +0 -0
  302. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/PublicKey/MLDSA.py +0 -0
  303. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/PublicKey/MLKEM.py +0 -0
  304. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/PublicKey/__init__.py +0 -0
  305. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/PublicKey/_curve.py +0 -0
  306. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/PublicKey/_ec_lib.py +0 -0
  307. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/PublicKey/_edwards.py +0 -0
  308. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/PublicKey/_montgomery.py +0 -0
  309. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/PublicKey/_nist_ecc.py +0 -0
  310. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/PublicKey/_openssh.py +0 -0
  311. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/PublicKey/_point.py +0 -0
  312. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/Random/__init__.py +0 -0
  313. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/Random/random.py +0 -0
  314. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/SelfTest/Cipher/__init__.py +0 -0
  315. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/SelfTest/Cipher/common.py +0 -0
  316. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/SelfTest/Cipher/test_ARC2.py +0 -0
  317. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/SelfTest/Cipher/test_ARC4.py +0 -0
  318. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/SelfTest/Cipher/test_Blowfish.py +0 -0
  319. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/SelfTest/Cipher/test_CAST.py +0 -0
  320. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/SelfTest/Cipher/test_CBC.py +0 -0
  321. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/SelfTest/Cipher/test_CCM.py +0 -0
  322. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/SelfTest/Cipher/test_CFB.py +0 -0
  323. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/SelfTest/Cipher/test_CTR.py +0 -0
  324. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/SelfTest/Cipher/test_ChaCha20_Poly1305.py +0 -0
  325. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/SelfTest/Cipher/test_DES.py +0 -0
  326. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/SelfTest/Cipher/test_DES3.py +0 -0
  327. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/SelfTest/Cipher/test_EAX.py +0 -0
  328. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/SelfTest/Cipher/test_KW.py +0 -0
  329. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/SelfTest/Cipher/test_OCB.py +0 -0
  330. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/SelfTest/Cipher/test_OFB.py +0 -0
  331. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/SelfTest/Cipher/test_OpenPGP.py +0 -0
  332. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/SelfTest/Cipher/test_SIV.py +0 -0
  333. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/SelfTest/Cipher/test_Salsa20.py +0 -0
  334. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/SelfTest/Cipher/test_message_too_long.py +0 -0
  335. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/SelfTest/Cipher/test_pkcs1_oaep.py +0 -0
  336. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/SelfTest/Cipher/test_shared_objects.py +0 -0
  337. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/SelfTest/Hash/__init__.py +0 -0
  338. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/SelfTest/Hash/test_BLAKE2.py +0 -0
  339. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/SelfTest/Hash/test_CMAC.py +0 -0
  340. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/SelfTest/Hash/test_HMAC.py +0 -0
  341. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/SelfTest/Hash/test_KMAC.py +0 -0
  342. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/SelfTest/Hash/test_KangarooTwelve.py +0 -0
  343. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/SelfTest/Hash/test_MD2.py +0 -0
  344. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/SelfTest/Hash/test_MD4.py +0 -0
  345. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/SelfTest/Hash/test_MD5.py +0 -0
  346. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/SelfTest/Hash/test_Poly1305.py +0 -0
  347. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/SelfTest/Hash/test_RIPEMD160.py +0 -0
  348. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/SelfTest/Hash/test_SHA1.py +0 -0
  349. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/SelfTest/Hash/test_SHA3_224.py +0 -0
  350. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/SelfTest/Hash/test_SHA3_256.py +0 -0
  351. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/SelfTest/Hash/test_SHA3_384.py +0 -0
  352. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/SelfTest/Hash/test_SHA3_512.py +0 -0
  353. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/SelfTest/Hash/test_SHAKE.py +0 -0
  354. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/SelfTest/Hash/test_TupleHash.py +0 -0
  355. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/SelfTest/Hash/test_TurboSHAKE.py +0 -0
  356. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/SelfTest/Hash/test_cSHAKE.py +0 -0
  357. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/SelfTest/Hash/test_keccak.py +0 -0
  358. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/SelfTest/Hash/test_oneshot_digest.py +0 -0
  359. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/SelfTest/Hash/test_shared_objects.py +0 -0
  360. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/SelfTest/IO/__init__.py +0 -0
  361. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/SelfTest/IO/test_PBES.py +0 -0
  362. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/SelfTest/IO/test_PKCS8.py +0 -0
  363. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/SelfTest/Math/__init__.py +0 -0
  364. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/SelfTest/Math/test_Primality.py +0 -0
  365. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/SelfTest/Math/test_nat.py +0 -0
  366. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/SelfTest/Protocol/__init__.py +0 -0
  367. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/SelfTest/Protocol/test_HPKE.py +0 -0
  368. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/SelfTest/Protocol/test_KDF.py +0 -0
  369. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/SelfTest/Protocol/test_SecretSharing.py +0 -0
  370. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/SelfTest/Protocol/test_ecdh.py +0 -0
  371. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/SelfTest/Protocol/test_rfc1751.py +0 -0
  372. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/SelfTest/PublicKey/__init__.py +0 -0
  373. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/SelfTest/PublicKey/test_DSA.py +0 -0
  374. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/SelfTest/PublicKey/test_ECC_Curve25519.py +0 -0
  375. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/SelfTest/PublicKey/test_ECC_Curve448.py +0 -0
  376. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/SelfTest/PublicKey/test_ECC_Ed25519.py +0 -0
  377. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/SelfTest/PublicKey/test_ECC_Ed448.py +0 -0
  378. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/SelfTest/PublicKey/test_ECC_NIST.py +0 -0
  379. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/SelfTest/PublicKey/test_ElGamal.py +0 -0
  380. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/SelfTest/PublicKey/test_Hybrid.py +0 -0
  381. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/SelfTest/PublicKey/test_MLDSA.py +0 -0
  382. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/SelfTest/PublicKey/test_MLKEM.py +0 -0
  383. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/SelfTest/PublicKey/test_import_Curve25519.py +0 -0
  384. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/SelfTest/PublicKey/test_import_Curve448.py +0 -0
  385. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/SelfTest/PublicKey/test_import_DSA.py +0 -0
  386. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/SelfTest/PublicKey/test_import_ECC.py +0 -0
  387. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/SelfTest/PublicKey/test_import_MLDSA.py +0 -0
  388. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/SelfTest/PublicKey/test_import_MLKEM.py +0 -0
  389. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/SelfTest/PublicKey/test_import_RSA.py +0 -0
  390. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/SelfTest/PublicKey/test_import_passphrase.py +0 -0
  391. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/SelfTest/Random/__init__.py +0 -0
  392. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/SelfTest/Random/test_random.py +0 -0
  393. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/SelfTest/Signature/__init__.py +0 -0
  394. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/SelfTest/Signature/test_dss.py +0 -0
  395. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/SelfTest/Signature/test_eddsa.py +0 -0
  396. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/SelfTest/Signature/test_mldsa.py +0 -0
  397. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/SelfTest/Signature/test_pkcs1_15.py +0 -0
  398. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/SelfTest/Signature/test_pss.py +0 -0
  399. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/SelfTest/Util/__init__.py +0 -0
  400. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/SelfTest/Util/test_Counter.py +0 -0
  401. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/SelfTest/Util/test_Padding.py +0 -0
  402. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/SelfTest/Util/test_cpu_features.py +0 -0
  403. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/SelfTest/Util/test_number.py +0 -0
  404. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/SelfTest/Util/test_raw_api.py +0 -0
  405. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/SelfTest/Util/test_rfc1751.py +0 -0
  406. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/SelfTest/Util/test_strxor.py +0 -0
  407. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/SelfTest/Util/test_threads.py +0 -0
  408. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/SelfTest/__init__.py +0 -0
  409. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/SelfTest/__main__.py +0 -0
  410. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/SelfTest/loader.py +0 -0
  411. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/SelfTest/plugin.py +0 -0
  412. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/SelfTest/st_common.py +0 -0
  413. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/Signature/PKCS1_PSS.py +0 -0
  414. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/Signature/PKCS1_v1_5.py +0 -0
  415. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/Signature/__init__.py +0 -0
  416. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/Signature/eddsa.py +0 -0
  417. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/Signature/mldsa.py +0 -0
  418. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/Util/Counter.py +0 -0
  419. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/Util/Padding.py +0 -0
  420. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/Util/RFC1751.py +0 -0
  421. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/Util/__init__.py +0 -0
  422. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/Util/_bytes.py +0 -0
  423. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/Util/_file_system.py +0 -0
  424. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/Util/_raw_api.py +0 -0
  425. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/Util/_threads.py +0 -0
  426. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/Util/number.py +0 -0
  427. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/Util/strxor.py +0 -0
  428. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/Crypto/py.typed +0 -0
  429. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/pycryptodome.egg-info/dependency_links.txt +0 -0
  430. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/pycryptodome.egg-info/requires.txt +0 -0
  431. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/lib/pycryptodome.egg-info/top_level.txt +0 -0
  432. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/pct-speedtest.py +0 -0
  433. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/pyproject.toml +0 -0
  434. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/setup.cfg +0 -0
  435. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/AES.c +0 -0
  436. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/AESNI.c +0 -0
  437. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/ARC2.c +0 -0
  438. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/ARC4.c +0 -0
  439. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/CAST.c +0 -0
  440. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/DES.c +0 -0
  441. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/DES3.c +0 -0
  442. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/MD2.c +0 -0
  443. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/MD4.c +0 -0
  444. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/MD5.c +0 -0
  445. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/RIPEMD160.c +0 -0
  446. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/SHA1.c +0 -0
  447. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/SHA224.c +0 -0
  448. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/SHA224_shani.c +0 -0
  449. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/SHA256.c +0 -0
  450. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/SHA256_shani.c +0 -0
  451. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/SHA384.c +0 -0
  452. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/SHA512.c +0 -0
  453. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/Salsa20_avx2_bmi2.c +0 -0
  454. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/blake2.c +0 -0
  455. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/blake2b.c +0 -0
  456. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/blake2s.c +0 -0
  457. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/block_base.h +0 -0
  458. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/block_common.c +0 -0
  459. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/blowfish.c +0 -0
  460. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/blowfish_eks.c +0 -0
  461. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/blowfish_init.c +0 -0
  462. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/cast5.c +0 -0
  463. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/chacha20.c +0 -0
  464. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/chacha20_avx2_bmi2.c +0 -0
  465. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/common.h +0 -0
  466. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/curve25519.c +0 -0
  467. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/curve25519.h +0 -0
  468. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/curve448.c +0 -0
  469. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/curve448.h +0 -0
  470. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/des_tables.h +0 -0
  471. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/ec_common.h +0 -0
  472. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/ec_field.h +0 -0
  473. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/ec_nat.c +0 -0
  474. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/ec_nat.h +0 -0
  475. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/ec_nat_bmi2_adx.c +0 -0
  476. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/ec_nat_module.c +0 -0
  477. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/ec_special.h +0 -0
  478. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/ed25519.h +0 -0
  479. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/ed25519_perf.c +0 -0
  480. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/ed25519_table.h +0 -0
  481. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/ed448.c +0 -0
  482. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/ed448.h +0 -0
  483. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/endianess.h +0 -0
  484. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/errors.h +0 -0
  485. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/ghash_clmul.c +0 -0
  486. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/ghash_portable.c +0 -0
  487. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/k12_avx2_bmi2.c +0 -0
  488. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/keccak.c +0 -0
  489. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/keccak_avx2_bmi2.c +0 -0
  490. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/mldsa-native/LICENSE +0 -0
  491. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/mldsa-native/README.md +0 -0
  492. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/mldsa-native/mldsa_native.c +0 -0
  493. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/mldsa-native/mldsa_native.h +0 -0
  494. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/mldsa-native/mldsa_native_config.h +0 -0
  495. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/mldsa-native/src/cbmc.h +0 -0
  496. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/mldsa-native/src/common.h +0 -0
  497. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/mldsa-native/src/context.h +0 -0
  498. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/mldsa-native/src/ct.c +0 -0
  499. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/mldsa-native/src/ct.h +0 -0
  500. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/mldsa-native/src/debug.c +0 -0
  501. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/mldsa-native/src/debug.h +0 -0
  502. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/mldsa-native/src/fips202/fips202.c +0 -0
  503. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/mldsa-native/src/fips202/fips202.h +0 -0
  504. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/mldsa-native/src/fips202/fips202x4.c +0 -0
  505. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/mldsa-native/src/fips202/fips202x4.h +0 -0
  506. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/mldsa-native/src/fips202/keccakf1600.c +0 -0
  507. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/mldsa-native/src/fips202/keccakf1600.h +0 -0
  508. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/mldsa-native/src/fips202/native/aarch64/src/keccakf1600_round_constants.c +0 -0
  509. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/mldsa-native/src/fips202/native/armv81m/src/keccak_f1600_x4_mve.c +0 -0
  510. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/mldsa-native/src/fips202/native/armv81m/src/keccakf1600_round_constants.c +0 -0
  511. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/mldsa-native/src/fips202/native/x86_64/src/keccakf1600_constants.c +0 -0
  512. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/mldsa-native/src/packing.c +0 -0
  513. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/mldsa-native/src/packing.h +0 -0
  514. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/mldsa-native/src/params.h +0 -0
  515. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/mldsa-native/src/poly.c +0 -0
  516. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/mldsa-native/src/poly.h +0 -0
  517. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/mldsa-native/src/poly_kl.c +0 -0
  518. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/mldsa-native/src/poly_kl.h +0 -0
  519. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/mldsa-native/src/polyvec.c +0 -0
  520. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/mldsa-native/src/polyvec.h +0 -0
  521. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/mldsa-native/src/polyvec_lazy.c +0 -0
  522. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/mldsa-native/src/polyvec_lazy.h +0 -0
  523. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/mldsa-native/src/randombytes.h +0 -0
  524. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/mldsa-native/src/reduce.h +0 -0
  525. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/mldsa-native/src/rounding.h +0 -0
  526. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/mldsa-native/src/sign.c +0 -0
  527. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/mldsa-native/src/sign.h +0 -0
  528. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/mldsa-native/src/symmetric.h +0 -0
  529. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/mldsa-native/src/sys.h +0 -0
  530. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/mldsa-native/src/zetas.inc +0 -0
  531. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/mldsa.c +0 -0
  532. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/mldsa_avx2_bmi2.c +0 -0
  533. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/mlkem-native/LICENSE +0 -0
  534. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/mlkem-native/README.md +0 -0
  535. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/mlkem-native/mlkem_native.c +0 -0
  536. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/mlkem-native/mlkem_native.h +0 -0
  537. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/mlkem-native/mlkem_native_config.h +0 -0
  538. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/mlkem-native/src/cbmc.h +0 -0
  539. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/mlkem-native/src/common.h +0 -0
  540. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/mlkem-native/src/compress.c +0 -0
  541. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/mlkem-native/src/compress.h +0 -0
  542. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/mlkem-native/src/context.h +0 -0
  543. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/mlkem-native/src/debug.c +0 -0
  544. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/mlkem-native/src/debug.h +0 -0
  545. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/mlkem-native/src/fips202/fips202.c +0 -0
  546. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/mlkem-native/src/fips202/fips202.h +0 -0
  547. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/mlkem-native/src/fips202/fips202x4.c +0 -0
  548. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/mlkem-native/src/fips202/fips202x4.h +0 -0
  549. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/mlkem-native/src/fips202/keccakf1600.c +0 -0
  550. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/mlkem-native/src/fips202/keccakf1600.h +0 -0
  551. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/mlkem-native/src/fips202/native/aarch64/src/keccakf1600_round_constants.c +0 -0
  552. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/mlkem-native/src/fips202/native/armv81m/src/keccak_f1600_x4_mve.c +0 -0
  553. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/mlkem-native/src/fips202/native/armv81m/src/keccakf1600_round_constants.c +0 -0
  554. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/mlkem-native/src/fips202/native/x86_64/src/keccakf1600_constants.c +0 -0
  555. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/mlkem-native/src/indcpa.c +0 -0
  556. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/mlkem-native/src/indcpa.h +0 -0
  557. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/mlkem-native/src/kem.c +0 -0
  558. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/mlkem-native/src/kem.h +0 -0
  559. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/mlkem-native/src/params.h +0 -0
  560. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/mlkem-native/src/poly.c +0 -0
  561. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/mlkem-native/src/poly.h +0 -0
  562. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/mlkem-native/src/poly_k.c +0 -0
  563. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/mlkem-native/src/poly_k.h +0 -0
  564. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/mlkem-native/src/randombytes.h +0 -0
  565. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/mlkem-native/src/sampling.c +0 -0
  566. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/mlkem-native/src/sampling.h +0 -0
  567. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/mlkem-native/src/symmetric.h +0 -0
  568. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/mlkem-native/src/sys.h +0 -0
  569. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/mlkem-native/src/verify.c +0 -0
  570. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/mlkem-native/src/verify.h +0 -0
  571. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/mlkem-native/src/zetas.inc +0 -0
  572. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/mlkem.c +0 -0
  573. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/mlkem_avx2_bmi2.c +0 -0
  574. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/mod25519.c +0 -0
  575. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/nat_bmi2_adx.c +0 -0
  576. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/nat_div.c +0 -0
  577. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/nat_gcd.c +0 -0
  578. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/nat_prime.c +0 -0
  579. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/nat_rows.c +0 -0
  580. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/poly1305.c +0 -0
  581. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/raw_cbc.c +0 -0
  582. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/raw_cfb.c +0 -0
  583. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/raw_ecb.c +0 -0
  584. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/raw_ocb.c +0 -0
  585. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/raw_ofb.c +0 -0
  586. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/salsa20_core.h +0 -0
  587. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/scrypt.c +0 -0
  588. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/siphash.h +0 -0
  589. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/sse2_unaligned.h +0 -0
  590. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/strxor.c +0 -0
  591. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/test/README.txt +0 -0
  592. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/test/common.py +0 -0
  593. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/test/ec_group_tests.c +0 -0
  594. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/test/make_tests_ladder_step.py +0 -0
  595. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/test/make_tests_mul_25519.py +0 -0
  596. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/test/make_tests_poly1305_accumulate.py +0 -0
  597. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/test/make_tests_poly1305_load_m.py +0 -0
  598. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/test/make_tests_poly1305_load_r.py +0 -0
  599. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/test/make_tests_poly1305_multiply.py +0 -0
  600. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/test/make_tests_poly1305_reduce.py +0 -0
  601. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/test/test_aesni.c +0 -0
  602. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/test/test_clmul.c +0 -0
  603. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/test/test_curve25519.c +0 -0
  604. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/test/test_curve25519_ct.c +0 -0
  605. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/test/test_curve448.c +0 -0
  606. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/test/test_des_ct.c +0 -0
  607. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/test/test_ec_nat.c +0 -0
  608. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/test/test_ec_nat_ct.c +0 -0
  609. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/test/test_ed25519.c +0 -0
  610. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/test/test_ed25519_ct.c +0 -0
  611. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/test/test_ed448.c +0 -0
  612. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/test/test_endianess.c +0 -0
  613. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/test/test_mod25519.c +0 -0
  614. {pycryptodome-4.2.0 → pycryptodome-4.3.0}/src/test/test_salsa20.c +0 -0
@@ -23,7 +23,7 @@ on:
23
23
  jobs:
24
24
  analyze:
25
25
  name: Analyze
26
- runs-on: ubuntu-latest
26
+ runs-on: ubuntu-24.04
27
27
 
28
28
  strategy:
29
29
  fail-fast: false
@@ -7,19 +7,19 @@ jobs:
7
7
  runs-on: ${{ matrix.os }}
8
8
  strategy:
9
9
  matrix:
10
- os: [ ubuntu-latest ]
10
+ os: [ ubuntu-24.04 ]
11
11
  python-version: [ 3.9, "3.10", "3.11", "3.12", "3.13", "3.14", "3.15", "3.15t" ]
12
12
  cffi: [ yes, no ]
13
13
  include:
14
- - os: ubuntu-latest
15
- python-version: pypy3.9
16
- cffi: yes
17
- - os: ubuntu-latest
14
+ - os: ubuntu-24.04
18
15
  python-version: pypy3.10
19
16
  cffi: yes
20
- - os: ubuntu-latest
17
+ - os: ubuntu-24.04
21
18
  python-version: pypy3.11
22
19
  cffi: yes
20
+ - os: ubuntu-24.04
21
+ python-version: pypy3.12
22
+ cffi: yes
23
23
  env:
24
24
  CFLAGS: "-Wconversion"
25
25
 
@@ -115,6 +115,9 @@ jobs:
115
115
  PYCRYPTODOME_REQUIRE_SHA_NI: ${{ matrix.os == 'windows-latest' && '1' || '' }}
116
116
  # Likewise for AVX2, BMI2 and ADX, when built with clang-cl
117
117
  PYCRYPTODOME_REQUIRE_AVX2_BMI2: ${{ matrix.os == 'windows-latest' && '1' || '' }}
118
+ # The Windows ARM64 runners support the SHA-512 instructions of ARMv8.2:
119
+ # fail if they are not used (module not built, or CPU feature not detected)
120
+ PYCRYPTODOME_REQUIRE_SHA512_ARMV8: ${{ matrix.os == 'windows-11-arm' && '1' || '' }}
118
121
  run: |
119
122
  python -m Crypto.SelfTest
120
123
 
@@ -156,7 +159,7 @@ jobs:
156
159
  python -m Crypto.SelfTest
157
160
 
158
161
  ruff:
159
- runs-on: ubuntu-latest
162
+ runs-on: ubuntu-24.04
160
163
  steps:
161
164
  - uses: actions/checkout@v7
162
165
  - name: Set up Python
@@ -174,7 +177,7 @@ jobs:
174
177
  ruff format --check .
175
178
 
176
179
  mypy:
177
- runs-on: ubuntu-latest
180
+ runs-on: ubuntu-24.04
178
181
  steps:
179
182
  - uses: actions/checkout@v7
180
183
  - name: Set up Python
@@ -189,7 +192,7 @@ jobs:
189
192
  mypy lib/
190
193
 
191
194
  test_c_linux:
192
- runs-on: ubuntu-latest
195
+ runs-on: ubuntu-24.04
193
196
  strategy:
194
197
  matrix:
195
198
  sse: [0, 1]
@@ -218,6 +221,24 @@ jobs:
218
221
  cmake -B build -DSSE=${{ matrix.sse }} $EXTRA
219
222
  make -C build all test
220
223
 
224
+ test_c_linux_arm:
225
+ runs-on: ubuntu-24.04-arm
226
+ steps:
227
+ - uses: actions/checkout@v7
228
+ - name: Install dependencies
229
+ run: |
230
+ sudo apt-get update
231
+ # Valgrind: without it, the constant-time tests (*_ct) are skipped
232
+ sudo apt-get install libubsan1 valgrind
233
+ - name: Test Linux ARM64
234
+ env:
235
+ PYTHON: python3
236
+ run: |
237
+ cd src/test
238
+ mkdir build
239
+ cmake -B build
240
+ make -C build all test
241
+
221
242
  test_c_windows:
222
243
  runs-on: ${{ matrix.os }}
223
244
  strategy:
@@ -8,7 +8,7 @@ on:
8
8
  jobs:
9
9
  build_source:
10
10
  name: Build source package
11
- runs-on: [ ubuntu-latest ]
11
+ runs-on: [ ubuntu-24.04 ]
12
12
  steps:
13
13
  - uses: actions/checkout@v7
14
14
 
@@ -44,12 +44,12 @@ jobs:
44
44
  echo 'CIBW_ARCHS=x86_64 universal2' >> $GITHUB_ENV
45
45
  if: runner.os == 'macOS'
46
46
 
47
- - uses: pypa/cibuildwheel@v4.3.1
47
+ - uses: pypa/cibuildwheel@v4.3.4
48
48
  name: Build wheels
49
49
  env:
50
50
  # cibuildwheel will build wheel once and test it for each CPython version
51
51
  # and for PyPy >= 3.10
52
- CIBW_BUILD: "cp39-* cp314-* cp315-* cp315t-* pp310-* pp311-*"
52
+ CIBW_BUILD: "cp39-* cp314-* cp315-* cp315t-* pp310-* pp311-* pp312*"
53
53
  # The manylinux images are set in pyproject.toml ([tool.cibuildwheel])
54
54
  CIBW_ENABLE: "pypy pypy-eol"
55
55
 
@@ -66,6 +66,10 @@ jobs:
66
66
  PYCRYPTODOME_CLANG_CL: ${{ matrix.os == 'windows-2025' && '1' || '' }}
67
67
  PYCRYPTODOME_REQUIRE_AVX2_BMI2: ${{ matrix.os == 'windows-2025' && '1' || '' }}
68
68
 
69
+ # The Windows ARM64 runners support the SHA-512 instructions of ARMv8.2:
70
+ # fail if they are not used (module not built, or CPU feature not detected)
71
+ PYCRYPTODOME_REQUIRE_SHA512_ARMV8: ${{ matrix.os == 'windows-11-arm' && '1' || '' }}
72
+
69
73
  - name: Delete manylinux1 wheels
70
74
  if: runner.os == 'Linux'
71
75
  run: |
@@ -1,6 +1,67 @@
1
1
  Changelog
2
2
  =========
3
3
 
4
+ 4.3.0 (2 November 2026)
5
+ ++++++++++++++++++++++++++
6
+
7
+ New features
8
+ ------------
9
+ * CTR mode is 2.5-3.5x faster on large data (and GCM about 2x),
10
+ on all platforms.
11
+ * On 64-bit ARM CPUs (Linux, macOS and Windows), AES and GHASH use the instructions
12
+ of the ARMv8 Cryptography Extensions (AES and PMULL), when available.
13
+ On a Graviton3, AES-ECB is about 35x faster, GCM 7x, OCB 10-12x,
14
+ and CTR, CBC, CFB and OFB 3-6x.
15
+ * ``Integer.random_range()`` is about 2x faster when the bounds are public,
16
+ with the same output: ECDSA signatures are about 13% faster (P-256),
17
+ DSA signatures about 4%, and ECC key generation about 35%.
18
+ The RSA modulus and the DSA subgroup order are now public ``Integer`` objects.
19
+ * Faster RSA: on x86-64, signatures and decryption are 35-40% faster
20
+ (RSA-2048 to RSA-4096), verification and encryption 2-2.7x.
21
+ Modular exponentiation with a public exponent (like the RSA public exponent)
22
+ no longer uses the slower constant-time algorithm, which is only needed for
23
+ secret exponents, and the Montgomery context of a modulus is kept with it.
24
+ The RSA blinding factor is squared between uses (a new one every 32 uses,
25
+ and after a fork).
26
+ * The Montgomery multiplication for x86-64 CPUs with BMI2 and ADX is about 20%
27
+ faster: DSA signatures and verification are about 25% faster.
28
+ * ECDSA signatures are 3-6% faster for P-256 and P-384: the field inversion
29
+ uses the faster power for public exponents (the exponent p - 2 is public).
30
+ * On 64-bit ARM CPUs, SHA-224 and SHA-256 use the SHA-256 instructions
31
+ of the ARMv8 Cryptography Extensions, and SHA-384 and SHA-512 the SHA-512
32
+ instructions of ARMv8.2, when available.
33
+ On a Graviton3, SHA-256 is about 3.8x faster, and SHA-512 2x.
34
+ * On 64-bit ARM CPUs, KangarooTwelve, ML-KEM and ML-DSA compute 4 Keccak states at once
35
+ (2 with scalar code and 2 with NEON).
36
+ On a Graviton3, KangarooTwelve is 1.9x faster, ML-DSA 7-20% and ML-KEM 7-8%.
37
+ * PKCS#1 v1.5 decryption (``Crypto.Cipher.PKCS1_v1_5``) performs implicit rejection,
38
+ as defined in section 7.2 of ``draft-irtf-cfrg-rsa-guidance``,
39
+ when ``decrypt()`` is called without a ``sentinel`` (which is now optional):
40
+ when the padding of a ciphertext is not correct, it returns a pseudo-random
41
+ message, which only depends on the private key and on the ciphertext.
42
+ With a ``sentinel``, ``decrypt()`` behaves as before.
43
+
44
+ Other changes
45
+ -------------
46
+ * Updated the Wycheproof test vectors (new Ed25519 tests and the new ``chacha20_counter_test.json``).
47
+ XChaCha20 keeps the construction of draft-irtf-cfrg-xchacha (HChaCha20 and the ChaCha20
48
+ of RFC 8439), with a 32-bit block counter: the key stream ends after 256 GiB,
49
+ whereas libsodium and Wycheproof use a 64-bit counter.
50
+
51
+ Resolved issues
52
+ ---------------
53
+ * GH#481: PKCS#1 v1.5 decryption could be used as a Bleichenbacher oracle,
54
+ through the ``sentinel`` returned for ciphertexts with incorrect padding.
55
+ Calling ``decrypt()`` without ``sentinel`` (implicit rejection) is now
56
+ recommended. Thanks to tomato42 and eslerm.
57
+ * PKCS#1 v1.5 ``decrypt()`` never returned a ``sentinel`` that is not a byte string
58
+ (such as ``None``), and it returned an empty byte string instead.
59
+ * GH#954: ``Crypto.Util.asn1.DerObjectId`` accepted an ASN.1 OBJECT IDENTIFIER where an arc
60
+ is encoded with the initial octet 0x80 (invalid, as that would violate the minimal
61
+ encoding rule for BER) or where the last octet encoding the last arc has bit 7 set
62
+ (invalid, and that arc would also be dropped). In those cases, decoding now fails.
63
+ Thanks to Zulfareen Shaikh.
64
+
4
65
  4.2.0 (24 October 2026)
5
66
  ++++++++++++++++++++++++++
6
67
 
@@ -3,7 +3,7 @@
3
3
 
4
4
  # You can set these variables from the command line.
5
5
  SPHINXOPTS =
6
- SPHINXBUILD = python -m sphinx
6
+ SPHINXBUILD = python3 -m sphinx
7
7
  PAPER =
8
8
  BUILDDIR = _build
9
9
 
@@ -0,0 +1,29 @@
1
+ // Search scorer: the defaults of Sphinx, plus a boost for the guides,
2
+ // so that a search for a task ("encrypt", "sign", "password", ...)
3
+ // shows the guide before the many API methods with the same name.
4
+ var Scorer = {
5
+ score: (result) => {
6
+ const [docname, title, anchor, descr, score, filename, kind] = result;
7
+ return docname.startsWith("src/guides/") ? score + 8 : score;
8
+ },
9
+
10
+ // query matches the full name of an object
11
+ objNameMatch: 11,
12
+ // or matches in the last dotted part of the object name
13
+ objPartialMatch: 6,
14
+ // Additive scores depending on the priority of the object
15
+ objPrio: {
16
+ 0: 15, // used to be importantResults
17
+ 1: 5, // used to be objectResults
18
+ 2: -5, // used to be unimportantResults
19
+ },
20
+ // Used when the priority is not in the mapping.
21
+ objPrioDefault: 0,
22
+
23
+ // query found in title
24
+ title: 15,
25
+ partialTitle: 7,
26
+ // query found in terms
27
+ term: 5,
28
+ partialTerm: 2,
29
+ };
@@ -27,6 +27,8 @@ class MockLib:
27
27
  ghash_clmul = None
28
28
  ghash_expand_clmul = None
29
29
  ghash_destroy_clmul = None
30
+ AESNI_start_operation = None
31
+ AESNI_stop_operation = None
30
32
 
31
33
  def have_aes_ni(self):
32
34
  return True
@@ -41,6 +43,11 @@ class MockLib:
41
43
  have_bmi2 = have_avx2
42
44
  have_sha_ni = have_avx2
43
45
  have_adx = have_avx2
46
+ have_aes_armv8 = have_avx2
47
+ have_pmull = have_avx2
48
+ have_sha256_armv8 = have_avx2
49
+ have_sha512_armv8 = have_avx2
50
+ have_sha3_armv8 = have_avx2
44
51
  ec_nat_new_curve = lambda *x: 0
45
52
  ec_nat_free_curve = lambda *x: None
46
53
  ec_nat_new_point = lambda *x: 0
@@ -117,7 +124,7 @@ release = ".".join(str(x) for x in version_tuple)
117
124
  exclude_patterns = ["_build"]
118
125
 
119
126
  # The reST default role (used for this markup: `text`) to use for all documents.
120
- # default_role = None
127
+ default_role = "py:obj"
121
128
 
122
129
  # If true, '()' will be appended to :func: etc. cross-reference text.
123
130
  # add_function_parentheses = True
@@ -199,6 +206,9 @@ html_title = "PyCryptodome"
199
206
  # relative to this directory. They are copied after the builtin static files,
200
207
  # so a file named "default.css" will overwrite the builtin "default.css".
201
208
  html_static_path = ["_static"]
209
+
210
+ # Rank the guides first in the search results
211
+ html_search_scorer = "_static/scorer.js"
202
212
  html_css_files = ["custom.css"]
203
213
 
204
214
 
@@ -320,3 +330,36 @@ texinfo_documents = [
320
330
 
321
331
  # How to display URL addresses: 'footnote', 'no', or 'inline'.
322
332
  # texinfo_show_urls = 'footnote'
333
+
334
+
335
+ def _hide_cipher_mode_signature(app, what, name, obj, options, signature, return_annotation):
336
+ """The cipher objects of the modes of operation are created by the
337
+ ``new()`` function of the cipher module, never directly by the user:
338
+ do not show the internal parameters of their constructor."""
339
+
340
+ if what == "class" and name.startswith("Crypto.Cipher._mode_"):
341
+ return "", None
342
+ return None
343
+
344
+
345
+ def _lower_search_priority_of_cipher_modes():
346
+ """The methods of the cipher objects (like ``GcmMode.encrypt``) would
347
+ otherwise be the first results when searching for common words
348
+ like "encrypt", ahead of the guides."""
349
+
350
+ from sphinx.domains.python import PythonDomain
351
+
352
+ get_objects = PythonDomain.get_objects
353
+
354
+ def patched_get_objects(self):
355
+ for name, dispname, objtype, docname, anchor, prio in get_objects(self):
356
+ if name.startswith("Crypto.Cipher._mode_"):
357
+ prio = 2 # "unimportant"
358
+ yield name, dispname, objtype, docname, anchor, prio
359
+
360
+ PythonDomain.get_objects = patched_get_objects
361
+
362
+
363
+ def setup(app):
364
+ app.connect("autodoc-process-signature", _hide_cipher_mode_signature, priority=400)
365
+ _lower_search_priority_of_cipher_modes()
@@ -0,0 +1,74 @@
1
+ PyCryptodome
2
+ ============
3
+
4
+ PyCryptodome is a self-contained Python package of low-level
5
+ cryptographic primitives, for Python 3.9 and newer.
6
+ It needs no system libraries: install it with ``pip install pycryptodome``.
7
+
8
+ What do you want to do?
9
+ -----------------------
10
+
11
+ .. include:: src/guides/tasks.rst.inc
12
+
13
+ For instance, this is how to encrypt and authenticate a message
14
+ with AES in GCM mode, and then decrypt it
15
+ (see :doc:`src/guides/symmetric` for the details):
16
+
17
+ .. code-block:: python
18
+
19
+ from Crypto.Cipher import AES
20
+ from Crypto.Random import get_random_bytes
21
+
22
+ key = get_random_bytes(32)
23
+ nonce = get_random_bytes(12)
24
+ cipher = AES.new(key, AES.MODE_GCM, nonce=nonce)
25
+ ciphertext, tag = cipher.encrypt_and_digest(b"Attack at dawn")
26
+
27
+ # The receiver needs the key, the nonce, the ciphertext and the tag
28
+ cipher = AES.new(key, AES.MODE_GCM, nonce=nonce)
29
+ plaintext = cipher.decrypt_and_verify(ciphertext, tag)
30
+
31
+ Where to go next
32
+ ----------------
33
+
34
+ * :doc:`src/guides/index`, for the common tasks, step by step.
35
+ * :doc:`src/api`, for all the algorithms and their parameters, grouped by package.
36
+ * :doc:`src/installation`, for the details of the installation.
37
+ * :doc:`src/faq`, for the most frequent questions.
38
+
39
+ .. toctree::
40
+ :hidden:
41
+ :caption: Getting started
42
+
43
+ Home <self>
44
+ Introduction <src/introduction>
45
+ src/features
46
+ src/installation
47
+
48
+ .. toctree::
49
+ :hidden:
50
+ :caption: Guides
51
+
52
+ Overview <src/guides/index>
53
+ src/guides/symmetric
54
+ src/guides/passwords
55
+ src/guides/public_key_encryption
56
+ src/guides/signatures
57
+ src/guides/hashing
58
+ src/guides/keys
59
+
60
+ .. toctree::
61
+ :hidden:
62
+ :caption: Reference
63
+
64
+ src/api
65
+ src/exceptions
66
+
67
+ .. toctree::
68
+ :hidden:
69
+ :caption: Project
70
+
71
+ src/faq
72
+ src/contribute_support
73
+ src/changelog
74
+ src/license
@@ -16,6 +16,10 @@ API documentation
16
16
  All cryptographic functionalities are organized in sub-packages;
17
17
  each sub-package is dedicated to solving a specific class of problems.
18
18
 
19
+ This is the reference for all algorithms and their parameters.
20
+ If you are looking for how to accomplish a task, like encrypting or signing data,
21
+ start from the :doc:`guides <guides/index>`.
22
+
19
23
  .. csv-table::
20
24
  :header: Package, Description
21
25
  :widths: 25, 75
@@ -0,0 +1,196 @@
1
+ AES
2
+ ===
3
+
4
+ .. py:currentmodule:: Crypto.Cipher.AES
5
+
6
+ AES `(Advanced Encryption Standard)`__ is a symmetric block cipher standardized
7
+ by NIST_ . It has a fixed data block size of 16 bytes.
8
+ Its keys can be 128, 192, or 256 bits long.
9
+
10
+ AES is very fast and secure, and it is the de facto standard for symmetric
11
+ encryption.
12
+
13
+ On its own, a block cipher can only encrypt a single block of 16 bytes.
14
+ To protect messages of any length, you combine it with a *mode of operation*,
15
+ which you select with the ``mode`` parameter of :func:`new`.
16
+ The table in :ref:`aes_modes` lists the modes you can choose from.
17
+
18
+ .. tip::
19
+
20
+ For a step-by-step explanation of how to encrypt data with AES,
21
+ including large files, see the guide :doc:`../guides/symmetric`.
22
+
23
+ For instance, you can encrypt and authenticate a message with AES in GCM mode::
24
+
25
+ >>> from Crypto.Cipher import AES
26
+ >>> from Crypto.Random import get_random_bytes
27
+ >>>
28
+ >>> data = b'The secret message'
29
+ >>> key = get_random_bytes(16)
30
+ >>> nonce = get_random_bytes(12)
31
+ >>> cipher = AES.new(key, AES.MODE_GCM, nonce=nonce)
32
+ >>> ciphertext, tag = cipher.encrypt_and_digest(data)
33
+
34
+ You must deliver the triple ``(nonce, ciphertext, tag)`` to the recipient.
35
+ The nonce and the tag are not secret, but the key is.
36
+ With the same key, the recipient decrypts the message and checks that it is authentic::
37
+
38
+ >>> from Crypto.Cipher import AES
39
+ >>>
40
+ >>> cipher = AES.new(key, AES.MODE_GCM, nonce=nonce)
41
+ >>> try:
42
+ ... plaintext = cipher.decrypt_and_verify(ciphertext, tag)
43
+ ... print("The message is authentic:", plaintext)
44
+ ... except ValueError:
45
+ ... print("Key incorrect or message corrupted")
46
+
47
+ .. __: http://en.wikipedia.org/wiki/Advanced_Encryption_Standard
48
+ .. _NIST: http://csrc.nist.gov/publications/fips/fips197/fips-197.pdf
49
+
50
+ .. _aes_modes:
51
+
52
+ Modes of operation
53
+ ------------------
54
+
55
+ The object returned by :func:`new` depends on the mode of operation:
56
+ follow the link in the last column for its methods and attributes.
57
+
58
+ .. list-table::
59
+ :header-rows: 1
60
+ :widths: 20 30 25 25
61
+
62
+ * - ``mode``
63
+ - Mode of operation
64
+ - Protects
65
+ - Cipher object
66
+ * - .. py:data:: MODE_GCM
67
+ :no-typesetting:
68
+
69
+ ``MODE_GCM``
70
+ - :ref:`Galois/Counter Mode <gcm_mode>`
71
+ - confidentiality + authenticity
72
+ - :class:`~Crypto.Cipher._mode_gcm.GcmMode`
73
+ * - .. py:data:: MODE_EAX
74
+ :no-typesetting:
75
+
76
+ ``MODE_EAX``
77
+ - :ref:`EAX mode <eax_mode>`
78
+ - confidentiality + authenticity
79
+ - :class:`~Crypto.Cipher._mode_eax.EaxMode`
80
+ * - .. py:data:: MODE_OCB
81
+ :no-typesetting:
82
+
83
+ ``MODE_OCB``
84
+ - :ref:`Offset CodeBook <ocb_mode>`
85
+ - confidentiality + authenticity
86
+ - :class:`~Crypto.Cipher._mode_ocb.OcbMode`
87
+ * - .. py:data:: MODE_SIV
88
+ :no-typesetting:
89
+
90
+ ``MODE_SIV``
91
+ - :ref:`Synthetic Initialization Vector <siv_mode>`
92
+ - confidentiality + authenticity
93
+ - :class:`~Crypto.Cipher._mode_siv.SivMode`
94
+ * - .. py:data:: MODE_CCM
95
+ :no-typesetting:
96
+
97
+ ``MODE_CCM``
98
+ - :ref:`Counter with CBC-MAC <ccm_mode>`
99
+ - confidentiality + authenticity
100
+ - :class:`~Crypto.Cipher._mode_ccm.CcmMode`
101
+ * - .. py:data:: MODE_CTR
102
+ :no-typesetting:
103
+
104
+ ``MODE_CTR``
105
+ - :ref:`Counter mode <ctr_mode>`
106
+ - confidentiality only
107
+ - :class:`~Crypto.Cipher._mode_ctr.CtrMode`
108
+ * - .. py:data:: MODE_CBC
109
+ :no-typesetting:
110
+
111
+ ``MODE_CBC``
112
+ - :ref:`Cipher-Block Chaining <cbc_mode>`
113
+ - confidentiality only
114
+ - :class:`~Crypto.Cipher._mode_cbc.CbcMode`
115
+ * - .. py:data:: MODE_CFB
116
+ :no-typesetting:
117
+
118
+ ``MODE_CFB``
119
+ - :ref:`Cipher FeedBack <cfb_mode>`
120
+ - confidentiality only
121
+ - :class:`~Crypto.Cipher._mode_cfb.CfbMode`
122
+ * - .. py:data:: MODE_OFB
123
+ :no-typesetting:
124
+
125
+ ``MODE_OFB``
126
+ - :ref:`Output FeedBack <ofb_mode>`
127
+ - confidentiality only
128
+ - :class:`~Crypto.Cipher._mode_ofb.OfbMode`
129
+ * - .. py:data:: MODE_OPENPGP
130
+ :no-typesetting:
131
+
132
+ ``MODE_OPENPGP``
133
+ - :ref:`OpenPGP mode <openpgp_mode>`
134
+ - confidentiality only
135
+ - :class:`~Crypto.Cipher._mode_openpgp.OpenPgpMode`
136
+ * - .. py:data:: MODE_ECB
137
+ :no-typesetting:
138
+
139
+ ``MODE_ECB``
140
+ - :ref:`Electronic CodeBook <ecb_mode>`
141
+ - confidentiality only (weak)
142
+ - :class:`~Crypto.Cipher._mode_ecb.EcbMode`
143
+ * - .. py:data:: MODE_KW
144
+ :no-typesetting:
145
+
146
+ ``MODE_KW``
147
+ - :ref:`Key Wrap <kw_mode>`
148
+ - keys (confidentiality + authenticity)
149
+ - :class:`~Crypto.Cipher._mode_kw.KWMode`
150
+ * - .. py:data:: MODE_KWP
151
+ :no-typesetting:
152
+
153
+ ``MODE_KWP``
154
+ - :ref:`Key Wrap with Padding <kwp_mode>`
155
+ - keys (confidentiality + authenticity)
156
+ - :class:`~Crypto.Cipher._mode_kwp.KWPMode`
157
+
158
+ Which mode should I use?
159
+ ~~~~~~~~~~~~~~~~~~~~~~~~
160
+
161
+ * If in doubt, use **GCM**, with a random 12-byte nonce.
162
+ It is an *authenticated* mode (AEAD):
163
+ the recipient detects if the message was modified or encrypted with a different key.
164
+ It is also the most widely supported by other libraries.
165
+ The other authenticated modes (EAX, OCB, CCM) are equally secure.
166
+ * Use **SIV** if you cannot guarantee that a nonce is never reused with the same key.
167
+ * Use the *confidentiality only* modes, like CTR or CBC, only to interoperate with existing
168
+ protocols, and then combine them with a MAC (like :mod:`Crypto.Hash.HMAC`).
169
+ Never use ECB to encrypt more than one block.
170
+ * Use **KW** or **KWP** only to wrap other cryptographic keys.
171
+
172
+ Using the cipher object
173
+ -----------------------
174
+
175
+ * :meth:`encrypt` and :meth:`decrypt` process data.
176
+ You can call them several times, each with the next piece of the message.
177
+ * The authenticated modes also have :meth:`update` (for associated data, that is,
178
+ data that is authenticated but not encrypted, like a header),
179
+ :meth:`digest` and :meth:`verify` (to create and check the MAC tag),
180
+ and :meth:`encrypt_and_digest` and :meth:`decrypt_and_verify` (to do everything in one call).
181
+ See the :ref:`introduction to modern modes <modern_cipher_modes>`.
182
+ * KW and KWP only have :meth:`seal` and :meth:`unseal`.
183
+ * The object also holds the parameters you must deliver to the recipient,
184
+ such as :attr:`nonce` or :attr:`iv`, which :func:`new` generates if you don't pass them.
185
+
186
+ A cipher object is *stateful* and it can only process one message,
187
+ either for encryption or for decryption.
188
+ Create a new object (with a new nonce or IV) for each message.
189
+
190
+ API
191
+ ---
192
+
193
+ .. automodule:: Crypto.Cipher.AES
194
+ :members:
195
+ :exclude-members: MODE_ECB, MODE_CBC, MODE_CFB, MODE_OFB, MODE_CTR, MODE_OPENPGP, MODE_CCM, MODE_EAX, MODE_SIV, MODE_GCM, MODE_OCB, MODE_KW, MODE_KWP
196
+ :member-order: bysource
@@ -4,14 +4,15 @@
4
4
  Introduction
5
5
  ------------
6
6
 
7
- .. toctree::
8
- :hidden:
9
-
10
- oaep
11
-
12
7
  The :mod:`Crypto.Cipher` package contains algorithms for protecting the confidentiality
13
8
  of data.
14
9
 
10
+ .. tip::
11
+
12
+ To learn how to encrypt data, start from the guides
13
+ :doc:`../guides/symmetric`, :doc:`../guides/passwords`,
14
+ and :doc:`../guides/public_key_encryption`.
15
+
15
16
  There are three types of encryption algorithms:
16
17
 
17
18
  1. **Symmetric ciphers**: all parties use the same key, for both
@@ -121,6 +122,11 @@ authentication (MAC). For instance:
121
122
  salsa20
122
123
  chacha20_poly1305
123
124
 
125
+ .. toctree::
126
+ :hidden:
127
+
128
+ oaep
129
+
124
130
  Legacy ciphers
125
131
  --------------
126
132