pycryptodome 4.2.0__tar.gz → 4.4.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 (615) hide show
  1. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/.github/workflows/codeql-analysis.yml +1 -1
  2. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/.github/workflows/integration.yml +32 -11
  3. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/.github/workflows/wheels.yml +7 -3
  4. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/Changelog.rst +100 -0
  5. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/Doc/Makefile +1 -1
  6. pycryptodome-4.4.0/Doc/_static/scorer.js +29 -0
  7. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/Doc/conf.py +45 -1
  8. pycryptodome-4.4.0/Doc/index.rst +74 -0
  9. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/Doc/src/api.rst +4 -0
  10. pycryptodome-4.4.0/Doc/src/cipher/aes.rst +196 -0
  11. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/Doc/src/cipher/cipher.rst +11 -5
  12. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/Doc/src/cipher/classic.rst +62 -17
  13. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/Doc/src/cipher/modern.rst +98 -85
  14. pycryptodome-4.4.0/Doc/src/cipher/pkcs1_v1_5.rst +54 -0
  15. pycryptodome-4.4.0/Doc/src/examples.rst +32 -0
  16. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/Doc/src/features.rst +5 -4
  17. pycryptodome-4.4.0/Doc/src/guides/hashing.rst +118 -0
  18. pycryptodome-4.4.0/Doc/src/guides/index.rst +10 -0
  19. pycryptodome-4.4.0/Doc/src/guides/keys.rst +141 -0
  20. pycryptodome-4.4.0/Doc/src/guides/passwords.rst +169 -0
  21. pycryptodome-4.4.0/Doc/src/guides/public_key_encryption.rst +130 -0
  22. pycryptodome-4.4.0/Doc/src/guides/signatures.rst +140 -0
  23. pycryptodome-4.4.0/Doc/src/guides/symmetric.rst +203 -0
  24. pycryptodome-4.4.0/Doc/src/guides/tasks.rst.inc +34 -0
  25. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/Doc/src/hash/turboshake.rst +2 -2
  26. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/Doc/src/protocol/kdf.rst +2 -2
  27. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/Doc/src/public_key/ecc.rst +12 -1
  28. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/INSTALL.rst +3 -3
  29. {pycryptodome-4.2.0/lib/pycryptodome.egg-info → pycryptodome-4.4.0}/PKG-INFO +2 -2
  30. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/README.rst +1 -1
  31. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/compiler_opt.py +153 -0
  32. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/Cipher/AES.py +30 -17
  33. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/Cipher/ARC2.py +2 -1
  34. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/Cipher/Blowfish.py +2 -1
  35. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/Cipher/CAST.py +2 -1
  36. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/Cipher/DES.py +2 -1
  37. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/Cipher/DES3.py +2 -1
  38. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/Cipher/PKCS1_v1_5.py +122 -29
  39. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/Cipher/_mode_cbc.py +39 -41
  40. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/Cipher/_mode_ccm.py +93 -93
  41. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/Cipher/_mode_cfb.py +44 -46
  42. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/Cipher/_mode_ctr.py +77 -79
  43. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/Cipher/_mode_eax.py +86 -86
  44. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/Cipher/_mode_ecb.py +28 -30
  45. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/Cipher/_mode_gcm.py +107 -101
  46. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/Cipher/_mode_kw.py +2 -2
  47. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/Cipher/_mode_kwp.py +2 -2
  48. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/Cipher/_mode_ocb.py +71 -71
  49. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/Cipher/_mode_ofb.py +40 -42
  50. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/Cipher/_mode_openpgp.py +26 -22
  51. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/Cipher/_mode_siv.py +64 -64
  52. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/Cipher/_pkcs1_oaep_decode.py +27 -0
  53. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/Hash/SHA224.py +6 -0
  54. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/Hash/SHA256.py +5 -0
  55. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/Hash/SHA384.py +13 -4
  56. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/Hash/SHA512.py +13 -4
  57. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/Math/_IntegerBase.py +26 -4
  58. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/Math/_IntegerNat.py +70 -8
  59. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/Protocol/HPKE.py +8 -5
  60. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/PublicKey/DSA.py +2 -0
  61. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/PublicKey/ECC.py +28 -16
  62. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/PublicKey/RSA.py +50 -6
  63. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/PublicKey/_ec_lib.py +2 -2
  64. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/PublicKey/_nist_ecc.py +25 -0
  65. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/PublicKey/_point.py +6 -2
  66. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/SelfTest/Cipher/test_AES.py +10 -4
  67. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/SelfTest/Cipher/test_ChaCha20.py +51 -0
  68. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/SelfTest/Cipher/test_GCM.py +12 -6
  69. pycryptodome-4.4.0/lib/Crypto/SelfTest/Cipher/test_pkcs1_15.py +514 -0
  70. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/SelfTest/Hash/common.py +15 -0
  71. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/SelfTest/Hash/test_SHA224.py +9 -0
  72. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/SelfTest/Hash/test_SHA256.py +9 -0
  73. pycryptodome-4.4.0/lib/Crypto/SelfTest/Hash/test_SHA384.py +118 -0
  74. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/SelfTest/Hash/test_SHA512.py +69 -1
  75. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/SelfTest/Math/test_Numbers.py +51 -0
  76. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/SelfTest/Protocol/test_HPKE.py +21 -2
  77. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/SelfTest/Protocol/test_ecdh.py +3 -2
  78. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/SelfTest/PublicKey/test_ECC_NIST.py +4 -4
  79. pycryptodome-4.4.0/lib/Crypto/SelfTest/PublicKey/test_ECC_secp256k1.py +337 -0
  80. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/SelfTest/PublicKey/test_RSA.py +68 -0
  81. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/SelfTest/PublicKey/test_import_ECC.py +163 -0
  82. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/SelfTest/Signature/test_dss.py +176 -4
  83. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/SelfTest/Util/test_asn1.py +27 -0
  84. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/Signature/DSS.py +86 -18
  85. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/Signature/pkcs1_15.py +1 -1
  86. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/Signature/pss.py +1 -1
  87. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/Util/_cpu_features.py +42 -0
  88. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/Util/asn1.py +11 -1
  89. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/__init__.py +1 -1
  90. {pycryptodome-4.2.0 → pycryptodome-4.4.0/lib/pycryptodome.egg-info}/PKG-INFO +2 -2
  91. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/pycryptodome.egg-info/SOURCES.txt +23 -0
  92. pycryptodome-4.4.0/requirements-test.txt +2 -0
  93. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/setup.py +34 -1
  94. pycryptodome-4.4.0/src/AES_armv8.c +344 -0
  95. pycryptodome-4.4.0/src/SHA224_armv8.c +17 -0
  96. pycryptodome-4.4.0/src/SHA256_armv8.c +17 -0
  97. pycryptodome-4.4.0/src/SHA384_armv8.c +17 -0
  98. pycryptodome-4.4.0/src/SHA512_armv8.c +17 -0
  99. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/Salsa20.c +3 -2
  100. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/cpuid.c +119 -0
  101. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/ec_common.c +37 -6
  102. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/ec_common.h +23 -8
  103. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/ec_field.h +1 -0
  104. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/ec_nat.c +291 -15
  105. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/ec_nat.h +5 -3
  106. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/ec_nat_bmi2_adx.c +1 -1
  107. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/ec_nat_module.c +1 -1
  108. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/ec_special.h +124 -1
  109. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/ed25519.c +5 -11
  110. pycryptodome-4.4.0/src/ghash_pmull.c +311 -0
  111. pycryptodome-4.4.0/src/hash_SHA2_compress_armv8.c +151 -0
  112. pycryptodome-4.4.0/src/hash_SHA2_compress_portable.c +172 -0
  113. pycryptodome-4.4.0/src/hash_SHA2_compress_shani.c +92 -0
  114. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/hash_SHA2_template.c +28 -290
  115. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/k12.c +34 -10
  116. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/keccak_x4_avx2.c +6 -0
  117. pycryptodome-4.4.0/src/keccak_x4_neon.c +299 -0
  118. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/mldsa_config.h +2 -1
  119. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/mldsa_fips202.h +18 -9
  120. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/mlkem_config.h +2 -1
  121. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/mlkem_fips202.h +18 -9
  122. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/nat.c +1 -4
  123. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/nat.h +18 -1
  124. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/nat_ct.h +33 -0
  125. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/nat_mod.c +280 -64
  126. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/pkcs1_decode.c +127 -17
  127. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/pq_fips202.h +39 -1
  128. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/raw_ctr.c +66 -20
  129. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/test/CMakeLists.txt +45 -2
  130. pycryptodome-4.4.0/src/test/test_aes_armv8.c +118 -0
  131. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/test/test_chacha20.c +1 -1
  132. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/test/test_ec_common.c +93 -20
  133. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/test/test_ec_nat.c +99 -9
  134. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/test/test_ec_nat_ct.c +47 -1
  135. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/test/test_ghash.c +16 -2
  136. pycryptodome-4.4.0/src/test/test_keccak_x4.c +94 -0
  137. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/test/test_nat.c +107 -0
  138. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/test/test_nat_ct.c +23 -0
  139. pycryptodome-4.4.0/src/test/test_pkcs1.c +285 -0
  140. pycryptodome-4.4.0/src/test/test_pkcs1_ct.c +92 -0
  141. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/test/test_raw_ctr.c +8 -0
  142. pycryptodome-4.2.0/Doc/index.rst +0 -44
  143. pycryptodome-4.2.0/Doc/src/cipher/aes.rst +0 -42
  144. pycryptodome-4.2.0/Doc/src/cipher/pkcs1_v1_5.rst +0 -41
  145. pycryptodome-4.2.0/Doc/src/examples.rst +0 -241
  146. pycryptodome-4.2.0/lib/Crypto/SelfTest/Cipher/test_pkcs1_15.py +0 -259
  147. pycryptodome-4.2.0/lib/Crypto/SelfTest/Hash/test_SHA384.py +0 -58
  148. pycryptodome-4.2.0/requirements-test.txt +0 -2
  149. pycryptodome-4.2.0/src/test/test_pkcs1.c +0 -164
  150. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/AUTHORS.rst +0 -0
  151. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/Doc/Changelog.pycrypto +0 -0
  152. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/Doc/LEGAL/00INDEX +0 -0
  153. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/Doc/LEGAL/COPYRIGHT.pycrypto +0 -0
  154. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/Doc/LEGAL/copy/00INDEX +0 -0
  155. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/Doc/LEGAL/copy/LICENSE.orig +0 -0
  156. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/Doc/LEGAL/copy/LICENSE.python-2.2 +0 -0
  157. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/Doc/LEGAL/copy/stmts/Andrew_M_Kuchling.mbox +0 -0
  158. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/Doc/LEGAL/copy/stmts/Barry_A_Warsaw.mbox +0 -0
  159. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/Doc/LEGAL/copy/stmts/Jeethu_Rao.mbox +0 -0
  160. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/Doc/LEGAL/copy/stmts/Joris_Bontje.mbox +0 -0
  161. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/Doc/LEGAL/copy/stmts/Mark_Moraes.mbox +0 -0
  162. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/Doc/LEGAL/copy/stmts/Paul_Swartz.mbox +0 -0
  163. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/Doc/LEGAL/copy/stmts/Robey_Pointer.asc +0 -0
  164. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/Doc/LEGAL/copy/stmts/Wim_Lewis.asc +0 -0
  165. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/Doc/LEGAL/tsu-notify.mbox +0 -0
  166. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/Doc/_static/custom.css +0 -0
  167. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/Doc/_static/pycryptodome-favicon-32.png +0 -0
  168. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/Doc/_static/pycryptodome-favicon.svg +0 -0
  169. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/Doc/_static/pycryptodome-logo-dark.svg +0 -0
  170. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/Doc/_static/pycryptodome-logo-light.svg +0 -0
  171. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/Doc/_templates/base.html +0 -0
  172. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/Doc/make.bat +0 -0
  173. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/Doc/requirements-docs.txt +0 -0
  174. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/Doc/src/changelog.rst +0 -0
  175. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/Doc/src/cipher/aead.png +0 -0
  176. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/Doc/src/cipher/aead.xml +0 -0
  177. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/Doc/src/cipher/arc2.rst +0 -0
  178. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/Doc/src/cipher/arc4.rst +0 -0
  179. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/Doc/src/cipher/blowfish.rst +0 -0
  180. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/Doc/src/cipher/cast.rst +0 -0
  181. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/Doc/src/cipher/chacha20.rst +0 -0
  182. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/Doc/src/cipher/chacha20_poly1305.rst +0 -0
  183. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/Doc/src/cipher/ctr_mode.png +0 -0
  184. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/Doc/src/cipher/ctr_mode.xml +0 -0
  185. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/Doc/src/cipher/des.rst +0 -0
  186. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/Doc/src/cipher/des3.rst +0 -0
  187. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/Doc/src/cipher/oaep.rst +0 -0
  188. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/Doc/src/cipher/ocb_mode.png +0 -0
  189. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/Doc/src/cipher/ocb_mode.xml +0 -0
  190. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/Doc/src/cipher/salsa20.rst +0 -0
  191. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/Doc/src/cipher/simple_mode.png +0 -0
  192. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/Doc/src/cipher/simple_mode.xml +0 -0
  193. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/Doc/src/cipher/siv.png +0 -0
  194. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/Doc/src/cipher/siv.xml +0 -0
  195. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/Doc/src/contribute_support.rst +0 -0
  196. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/Doc/src/exceptions.rst +0 -0
  197. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/Doc/src/faq.rst +0 -0
  198. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/Doc/src/hash/blake2b.rst +0 -0
  199. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/Doc/src/hash/blake2s.rst +0 -0
  200. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/Doc/src/hash/cmac.rst +0 -0
  201. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/Doc/src/hash/cshake128.rst +0 -0
  202. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/Doc/src/hash/cshake256.rst +0 -0
  203. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/Doc/src/hash/hash.rst +0 -0
  204. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/Doc/src/hash/hashing.png +0 -0
  205. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/Doc/src/hash/hashing.xml +0 -0
  206. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/Doc/src/hash/hmac.rst +0 -0
  207. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/Doc/src/hash/k12.rst +0 -0
  208. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/Doc/src/hash/keccak.rst +0 -0
  209. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/Doc/src/hash/kmac128.rst +0 -0
  210. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/Doc/src/hash/kmac256.rst +0 -0
  211. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/Doc/src/hash/md2.rst +0 -0
  212. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/Doc/src/hash/md4.rst +0 -0
  213. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/Doc/src/hash/md5.rst +0 -0
  214. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/Doc/src/hash/poly1305.rst +0 -0
  215. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/Doc/src/hash/ripemd160.rst +0 -0
  216. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/Doc/src/hash/sha1.rst +0 -0
  217. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/Doc/src/hash/sha224.rst +0 -0
  218. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/Doc/src/hash/sha256.rst +0 -0
  219. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/Doc/src/hash/sha384.rst +0 -0
  220. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/Doc/src/hash/sha3_224.rst +0 -0
  221. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/Doc/src/hash/sha3_256.rst +0 -0
  222. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/Doc/src/hash/sha3_384.rst +0 -0
  223. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/Doc/src/hash/sha3_512.rst +0 -0
  224. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/Doc/src/hash/sha512.rst +0 -0
  225. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/Doc/src/hash/shake128.rst +0 -0
  226. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/Doc/src/hash/shake256.rst +0 -0
  227. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/Doc/src/hash/tuplehash128.rst +0 -0
  228. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/Doc/src/hash/tuplehash256.rst +0 -0
  229. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/Doc/src/hash/xof.png +0 -0
  230. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/Doc/src/hash/xof.xml +0 -0
  231. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/Doc/src/installation.rst +0 -0
  232. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/Doc/src/introduction.rst +0 -0
  233. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/Doc/src/io/io.rst +0 -0
  234. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/Doc/src/io/kdf_limits.rst +0 -0
  235. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/Doc/src/io/pem.rst +0 -0
  236. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/Doc/src/io/pkcs8.rst +0 -0
  237. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/Doc/src/license.rst +0 -0
  238. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/Doc/src/protocol/dh.png +0 -0
  239. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/Doc/src/protocol/dh.rst +0 -0
  240. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/Doc/src/protocol/hpke.png +0 -0
  241. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/Doc/src/protocol/hpke.rst +0 -0
  242. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/Doc/src/protocol/hpkeAUTH.png +0 -0
  243. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/Doc/src/protocol/hpkePSK.png +0 -0
  244. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/Doc/src/protocol/protocol.rst +0 -0
  245. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/Doc/src/protocol/ss.rst +0 -0
  246. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/Doc/src/public_key/dsa.rst +0 -0
  247. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/Doc/src/public_key/elgamal.rst +0 -0
  248. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/Doc/src/public_key/hybrid.rst +0 -0
  249. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/Doc/src/public_key/mldsa.rst +0 -0
  250. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/Doc/src/public_key/mlkem.rst +0 -0
  251. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/Doc/src/public_key/public_key.rst +0 -0
  252. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/Doc/src/public_key/rsa.rst +0 -0
  253. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/Doc/src/random/random.rst +0 -0
  254. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/Doc/src/signature/dsa.rst +0 -0
  255. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/Doc/src/signature/eddsa.rst +0 -0
  256. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/Doc/src/signature/mldsa.rst +0 -0
  257. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/Doc/src/signature/pkcs1_pss.rst +0 -0
  258. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/Doc/src/signature/pkcs1_v1_5.rst +0 -0
  259. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/Doc/src/signature/signature.rst +0 -0
  260. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/Doc/src/util/asn1.rst +0 -0
  261. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/Doc/src/util/counter_be.png +0 -0
  262. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/Doc/src/util/counter_be.xml +0 -0
  263. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/Doc/src/util/counter_le.png +0 -0
  264. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/Doc/src/util/counter_le.xml +0 -0
  265. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/Doc/src/util/util.rst +0 -0
  266. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/LICENSE.rst +0 -0
  267. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/MANIFEST.in +0 -0
  268. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/Cipher/ARC4.py +0 -0
  269. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/Cipher/ChaCha20.py +0 -0
  270. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/Cipher/ChaCha20_Poly1305.py +0 -0
  271. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/Cipher/PKCS1_OAEP.py +0 -0
  272. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/Cipher/Salsa20.py +0 -0
  273. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/Cipher/_EKSBlowfish.py +0 -0
  274. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/Cipher/__init__.py +0 -0
  275. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/Cipher/_state_machine.py +0 -0
  276. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/Cipher/oaep.py +0 -0
  277. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/Hash/BLAKE2b.py +0 -0
  278. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/Hash/BLAKE2s.py +0 -0
  279. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/Hash/CMAC.py +0 -0
  280. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/Hash/HMAC.py +0 -0
  281. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/Hash/KMAC128.py +0 -0
  282. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/Hash/KMAC256.py +0 -0
  283. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/Hash/KangarooTwelve.py +0 -0
  284. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/Hash/MD2.py +0 -0
  285. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/Hash/MD4.py +0 -0
  286. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/Hash/MD5.py +0 -0
  287. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/Hash/Poly1305.py +0 -0
  288. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/Hash/RIPEMD.py +0 -0
  289. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/Hash/RIPEMD160.py +0 -0
  290. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/Hash/SHA.py +0 -0
  291. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/Hash/SHA1.py +0 -0
  292. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/Hash/SHA3_224.py +0 -0
  293. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/Hash/SHA3_256.py +0 -0
  294. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/Hash/SHA3_384.py +0 -0
  295. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/Hash/SHA3_512.py +0 -0
  296. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/Hash/SHAKE128.py +0 -0
  297. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/Hash/SHAKE256.py +0 -0
  298. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/Hash/TupleHash128.py +0 -0
  299. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/Hash/TupleHash256.py +0 -0
  300. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/Hash/TurboSHAKE128.py +0 -0
  301. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/Hash/TurboSHAKE256.py +0 -0
  302. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/Hash/__init__.py +0 -0
  303. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/Hash/cSHAKE128.py +0 -0
  304. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/Hash/cSHAKE256.py +0 -0
  305. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/Hash/keccak.py +0 -0
  306. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/IO/PEM.py +0 -0
  307. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/IO/PKCS8.py +0 -0
  308. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/IO/_PBES.py +0 -0
  309. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/IO/__init__.py +0 -0
  310. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/Math/Numbers.py +0 -0
  311. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/Math/Primality.py +0 -0
  312. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/Math/_IntegerNative.py +0 -0
  313. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/Math/__init__.py +0 -0
  314. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/Protocol/DH.py +0 -0
  315. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/Protocol/KDF.py +0 -0
  316. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/Protocol/SecretSharing.py +0 -0
  317. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/Protocol/__init__.py +0 -0
  318. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/PublicKey/ElGamal.py +0 -0
  319. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/PublicKey/Hybrid.py +0 -0
  320. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/PublicKey/MLDSA.py +0 -0
  321. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/PublicKey/MLKEM.py +0 -0
  322. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/PublicKey/__init__.py +0 -0
  323. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/PublicKey/_curve.py +0 -0
  324. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/PublicKey/_edwards.py +0 -0
  325. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/PublicKey/_montgomery.py +0 -0
  326. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/PublicKey/_openssh.py +0 -0
  327. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/Random/__init__.py +0 -0
  328. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/Random/random.py +0 -0
  329. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/SelfTest/Cipher/__init__.py +0 -0
  330. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/SelfTest/Cipher/common.py +0 -0
  331. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/SelfTest/Cipher/test_ARC2.py +0 -0
  332. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/SelfTest/Cipher/test_ARC4.py +0 -0
  333. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/SelfTest/Cipher/test_Blowfish.py +0 -0
  334. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/SelfTest/Cipher/test_CAST.py +0 -0
  335. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/SelfTest/Cipher/test_CBC.py +0 -0
  336. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/SelfTest/Cipher/test_CCM.py +0 -0
  337. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/SelfTest/Cipher/test_CFB.py +0 -0
  338. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/SelfTest/Cipher/test_CTR.py +0 -0
  339. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/SelfTest/Cipher/test_ChaCha20_Poly1305.py +0 -0
  340. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/SelfTest/Cipher/test_DES.py +0 -0
  341. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/SelfTest/Cipher/test_DES3.py +0 -0
  342. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/SelfTest/Cipher/test_EAX.py +0 -0
  343. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/SelfTest/Cipher/test_KW.py +0 -0
  344. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/SelfTest/Cipher/test_OCB.py +0 -0
  345. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/SelfTest/Cipher/test_OFB.py +0 -0
  346. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/SelfTest/Cipher/test_OpenPGP.py +0 -0
  347. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/SelfTest/Cipher/test_SIV.py +0 -0
  348. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/SelfTest/Cipher/test_Salsa20.py +0 -0
  349. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/SelfTest/Cipher/test_message_too_long.py +0 -0
  350. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/SelfTest/Cipher/test_pkcs1_oaep.py +0 -0
  351. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/SelfTest/Cipher/test_shared_objects.py +0 -0
  352. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/SelfTest/Hash/__init__.py +0 -0
  353. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/SelfTest/Hash/test_BLAKE2.py +0 -0
  354. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/SelfTest/Hash/test_CMAC.py +0 -0
  355. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/SelfTest/Hash/test_HMAC.py +0 -0
  356. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/SelfTest/Hash/test_KMAC.py +0 -0
  357. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/SelfTest/Hash/test_KangarooTwelve.py +0 -0
  358. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/SelfTest/Hash/test_MD2.py +0 -0
  359. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/SelfTest/Hash/test_MD4.py +0 -0
  360. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/SelfTest/Hash/test_MD5.py +0 -0
  361. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/SelfTest/Hash/test_Poly1305.py +0 -0
  362. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/SelfTest/Hash/test_RIPEMD160.py +0 -0
  363. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/SelfTest/Hash/test_SHA1.py +0 -0
  364. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/SelfTest/Hash/test_SHA3_224.py +0 -0
  365. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/SelfTest/Hash/test_SHA3_256.py +0 -0
  366. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/SelfTest/Hash/test_SHA3_384.py +0 -0
  367. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/SelfTest/Hash/test_SHA3_512.py +0 -0
  368. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/SelfTest/Hash/test_SHAKE.py +0 -0
  369. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/SelfTest/Hash/test_TupleHash.py +0 -0
  370. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/SelfTest/Hash/test_TurboSHAKE.py +0 -0
  371. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/SelfTest/Hash/test_cSHAKE.py +0 -0
  372. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/SelfTest/Hash/test_keccak.py +0 -0
  373. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/SelfTest/Hash/test_oneshot_digest.py +0 -0
  374. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/SelfTest/Hash/test_shared_objects.py +0 -0
  375. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/SelfTest/IO/__init__.py +0 -0
  376. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/SelfTest/IO/test_PBES.py +0 -0
  377. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/SelfTest/IO/test_PKCS8.py +0 -0
  378. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/SelfTest/Math/__init__.py +0 -0
  379. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/SelfTest/Math/test_Primality.py +0 -0
  380. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/SelfTest/Math/test_nat.py +0 -0
  381. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/SelfTest/Protocol/__init__.py +0 -0
  382. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/SelfTest/Protocol/test_KDF.py +0 -0
  383. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/SelfTest/Protocol/test_SecretSharing.py +0 -0
  384. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/SelfTest/Protocol/test_rfc1751.py +0 -0
  385. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/SelfTest/PublicKey/__init__.py +0 -0
  386. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/SelfTest/PublicKey/test_DSA.py +0 -0
  387. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/SelfTest/PublicKey/test_ECC_Curve25519.py +0 -0
  388. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/SelfTest/PublicKey/test_ECC_Curve448.py +0 -0
  389. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/SelfTest/PublicKey/test_ECC_Ed25519.py +0 -0
  390. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/SelfTest/PublicKey/test_ECC_Ed448.py +0 -0
  391. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/SelfTest/PublicKey/test_ElGamal.py +0 -0
  392. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/SelfTest/PublicKey/test_Hybrid.py +0 -0
  393. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/SelfTest/PublicKey/test_MLDSA.py +0 -0
  394. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/SelfTest/PublicKey/test_MLKEM.py +0 -0
  395. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/SelfTest/PublicKey/test_import_Curve25519.py +0 -0
  396. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/SelfTest/PublicKey/test_import_Curve448.py +0 -0
  397. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/SelfTest/PublicKey/test_import_DSA.py +0 -0
  398. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/SelfTest/PublicKey/test_import_MLDSA.py +0 -0
  399. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/SelfTest/PublicKey/test_import_MLKEM.py +0 -0
  400. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/SelfTest/PublicKey/test_import_RSA.py +0 -0
  401. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/SelfTest/PublicKey/test_import_passphrase.py +0 -0
  402. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/SelfTest/Random/__init__.py +0 -0
  403. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/SelfTest/Random/test_random.py +0 -0
  404. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/SelfTest/Signature/__init__.py +0 -0
  405. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/SelfTest/Signature/test_eddsa.py +0 -0
  406. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/SelfTest/Signature/test_mldsa.py +0 -0
  407. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/SelfTest/Signature/test_pkcs1_15.py +0 -0
  408. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/SelfTest/Signature/test_pss.py +0 -0
  409. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/SelfTest/Util/__init__.py +0 -0
  410. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/SelfTest/Util/test_Counter.py +0 -0
  411. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/SelfTest/Util/test_Padding.py +0 -0
  412. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/SelfTest/Util/test_cpu_features.py +0 -0
  413. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/SelfTest/Util/test_number.py +0 -0
  414. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/SelfTest/Util/test_raw_api.py +0 -0
  415. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/SelfTest/Util/test_rfc1751.py +0 -0
  416. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/SelfTest/Util/test_strxor.py +0 -0
  417. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/SelfTest/Util/test_threads.py +0 -0
  418. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/SelfTest/__init__.py +0 -0
  419. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/SelfTest/__main__.py +0 -0
  420. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/SelfTest/loader.py +0 -0
  421. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/SelfTest/plugin.py +0 -0
  422. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/SelfTest/st_common.py +0 -0
  423. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/Signature/PKCS1_PSS.py +0 -0
  424. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/Signature/PKCS1_v1_5.py +0 -0
  425. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/Signature/__init__.py +0 -0
  426. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/Signature/eddsa.py +0 -0
  427. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/Signature/mldsa.py +0 -0
  428. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/Util/Counter.py +0 -0
  429. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/Util/Padding.py +0 -0
  430. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/Util/RFC1751.py +0 -0
  431. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/Util/__init__.py +0 -0
  432. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/Util/_bytes.py +0 -0
  433. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/Util/_file_system.py +0 -0
  434. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/Util/_raw_api.py +0 -0
  435. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/Util/_threads.py +0 -0
  436. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/Util/number.py +0 -0
  437. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/Util/strxor.py +0 -0
  438. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/Crypto/py.typed +0 -0
  439. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/pycryptodome.egg-info/dependency_links.txt +0 -0
  440. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/pycryptodome.egg-info/requires.txt +0 -0
  441. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/lib/pycryptodome.egg-info/top_level.txt +0 -0
  442. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/pct-speedtest.py +0 -0
  443. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/pyproject.toml +0 -0
  444. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/setup.cfg +0 -0
  445. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/AES.c +0 -0
  446. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/AESNI.c +0 -0
  447. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/ARC2.c +0 -0
  448. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/ARC4.c +0 -0
  449. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/CAST.c +0 -0
  450. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/DES.c +0 -0
  451. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/DES3.c +0 -0
  452. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/MD2.c +0 -0
  453. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/MD4.c +0 -0
  454. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/MD5.c +0 -0
  455. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/RIPEMD160.c +0 -0
  456. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/SHA1.c +0 -0
  457. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/SHA224.c +0 -0
  458. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/SHA224_shani.c +0 -0
  459. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/SHA256.c +0 -0
  460. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/SHA256_shani.c +0 -0
  461. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/SHA384.c +0 -0
  462. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/SHA512.c +0 -0
  463. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/Salsa20_avx2_bmi2.c +0 -0
  464. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/blake2.c +0 -0
  465. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/blake2b.c +0 -0
  466. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/blake2s.c +0 -0
  467. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/block_base.h +0 -0
  468. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/block_common.c +0 -0
  469. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/blowfish.c +0 -0
  470. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/blowfish_eks.c +0 -0
  471. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/blowfish_init.c +0 -0
  472. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/cast5.c +0 -0
  473. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/chacha20.c +0 -0
  474. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/chacha20_avx2_bmi2.c +0 -0
  475. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/common.h +0 -0
  476. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/curve25519.c +0 -0
  477. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/curve25519.h +0 -0
  478. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/curve448.c +0 -0
  479. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/curve448.h +0 -0
  480. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/des_tables.h +0 -0
  481. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/ed25519.h +0 -0
  482. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/ed25519_perf.c +0 -0
  483. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/ed25519_table.h +0 -0
  484. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/ed448.c +0 -0
  485. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/ed448.h +0 -0
  486. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/endianess.h +0 -0
  487. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/errors.h +0 -0
  488. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/ghash_clmul.c +0 -0
  489. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/ghash_portable.c +0 -0
  490. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/k12_avx2_bmi2.c +0 -0
  491. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/keccak.c +0 -0
  492. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/keccak_avx2_bmi2.c +0 -0
  493. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/mldsa-native/LICENSE +0 -0
  494. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/mldsa-native/README.md +0 -0
  495. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/mldsa-native/mldsa_native.c +0 -0
  496. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/mldsa-native/mldsa_native.h +0 -0
  497. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/mldsa-native/mldsa_native_config.h +0 -0
  498. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/mldsa-native/src/cbmc.h +0 -0
  499. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/mldsa-native/src/common.h +0 -0
  500. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/mldsa-native/src/context.h +0 -0
  501. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/mldsa-native/src/ct.c +0 -0
  502. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/mldsa-native/src/ct.h +0 -0
  503. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/mldsa-native/src/debug.c +0 -0
  504. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/mldsa-native/src/debug.h +0 -0
  505. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/mldsa-native/src/fips202/fips202.c +0 -0
  506. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/mldsa-native/src/fips202/fips202.h +0 -0
  507. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/mldsa-native/src/fips202/fips202x4.c +0 -0
  508. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/mldsa-native/src/fips202/fips202x4.h +0 -0
  509. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/mldsa-native/src/fips202/keccakf1600.c +0 -0
  510. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/mldsa-native/src/fips202/keccakf1600.h +0 -0
  511. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/mldsa-native/src/fips202/native/aarch64/src/keccakf1600_round_constants.c +0 -0
  512. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/mldsa-native/src/fips202/native/armv81m/src/keccak_f1600_x4_mve.c +0 -0
  513. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/mldsa-native/src/fips202/native/armv81m/src/keccakf1600_round_constants.c +0 -0
  514. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/mldsa-native/src/fips202/native/x86_64/src/keccakf1600_constants.c +0 -0
  515. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/mldsa-native/src/packing.c +0 -0
  516. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/mldsa-native/src/packing.h +0 -0
  517. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/mldsa-native/src/params.h +0 -0
  518. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/mldsa-native/src/poly.c +0 -0
  519. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/mldsa-native/src/poly.h +0 -0
  520. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/mldsa-native/src/poly_kl.c +0 -0
  521. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/mldsa-native/src/poly_kl.h +0 -0
  522. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/mldsa-native/src/polyvec.c +0 -0
  523. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/mldsa-native/src/polyvec.h +0 -0
  524. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/mldsa-native/src/polyvec_lazy.c +0 -0
  525. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/mldsa-native/src/polyvec_lazy.h +0 -0
  526. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/mldsa-native/src/randombytes.h +0 -0
  527. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/mldsa-native/src/reduce.h +0 -0
  528. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/mldsa-native/src/rounding.h +0 -0
  529. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/mldsa-native/src/sign.c +0 -0
  530. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/mldsa-native/src/sign.h +0 -0
  531. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/mldsa-native/src/symmetric.h +0 -0
  532. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/mldsa-native/src/sys.h +0 -0
  533. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/mldsa-native/src/zetas.inc +0 -0
  534. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/mldsa.c +0 -0
  535. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/mldsa_avx2_bmi2.c +0 -0
  536. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/mlkem-native/LICENSE +0 -0
  537. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/mlkem-native/README.md +0 -0
  538. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/mlkem-native/mlkem_native.c +0 -0
  539. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/mlkem-native/mlkem_native.h +0 -0
  540. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/mlkem-native/mlkem_native_config.h +0 -0
  541. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/mlkem-native/src/cbmc.h +0 -0
  542. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/mlkem-native/src/common.h +0 -0
  543. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/mlkem-native/src/compress.c +0 -0
  544. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/mlkem-native/src/compress.h +0 -0
  545. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/mlkem-native/src/context.h +0 -0
  546. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/mlkem-native/src/debug.c +0 -0
  547. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/mlkem-native/src/debug.h +0 -0
  548. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/mlkem-native/src/fips202/fips202.c +0 -0
  549. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/mlkem-native/src/fips202/fips202.h +0 -0
  550. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/mlkem-native/src/fips202/fips202x4.c +0 -0
  551. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/mlkem-native/src/fips202/fips202x4.h +0 -0
  552. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/mlkem-native/src/fips202/keccakf1600.c +0 -0
  553. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/mlkem-native/src/fips202/keccakf1600.h +0 -0
  554. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/mlkem-native/src/fips202/native/aarch64/src/keccakf1600_round_constants.c +0 -0
  555. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/mlkem-native/src/fips202/native/armv81m/src/keccak_f1600_x4_mve.c +0 -0
  556. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/mlkem-native/src/fips202/native/armv81m/src/keccakf1600_round_constants.c +0 -0
  557. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/mlkem-native/src/fips202/native/x86_64/src/keccakf1600_constants.c +0 -0
  558. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/mlkem-native/src/indcpa.c +0 -0
  559. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/mlkem-native/src/indcpa.h +0 -0
  560. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/mlkem-native/src/kem.c +0 -0
  561. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/mlkem-native/src/kem.h +0 -0
  562. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/mlkem-native/src/params.h +0 -0
  563. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/mlkem-native/src/poly.c +0 -0
  564. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/mlkem-native/src/poly.h +0 -0
  565. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/mlkem-native/src/poly_k.c +0 -0
  566. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/mlkem-native/src/poly_k.h +0 -0
  567. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/mlkem-native/src/randombytes.h +0 -0
  568. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/mlkem-native/src/sampling.c +0 -0
  569. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/mlkem-native/src/sampling.h +0 -0
  570. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/mlkem-native/src/symmetric.h +0 -0
  571. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/mlkem-native/src/sys.h +0 -0
  572. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/mlkem-native/src/verify.c +0 -0
  573. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/mlkem-native/src/verify.h +0 -0
  574. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/mlkem-native/src/zetas.inc +0 -0
  575. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/mlkem.c +0 -0
  576. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/mlkem_avx2_bmi2.c +0 -0
  577. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/mod25519.c +0 -0
  578. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/nat_bmi2_adx.c +0 -0
  579. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/nat_div.c +0 -0
  580. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/nat_gcd.c +0 -0
  581. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/nat_prime.c +0 -0
  582. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/nat_rows.c +0 -0
  583. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/poly1305.c +0 -0
  584. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/raw_cbc.c +0 -0
  585. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/raw_cfb.c +0 -0
  586. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/raw_ecb.c +0 -0
  587. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/raw_ocb.c +0 -0
  588. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/raw_ofb.c +0 -0
  589. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/salsa20_core.h +0 -0
  590. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/scrypt.c +0 -0
  591. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/siphash.h +0 -0
  592. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/sse2_unaligned.h +0 -0
  593. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/strxor.c +0 -0
  594. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/test/README.txt +0 -0
  595. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/test/common.py +0 -0
  596. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/test/ec_group_tests.c +0 -0
  597. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/test/make_tests_ladder_step.py +0 -0
  598. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/test/make_tests_mul_25519.py +0 -0
  599. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/test/make_tests_poly1305_accumulate.py +0 -0
  600. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/test/make_tests_poly1305_load_m.py +0 -0
  601. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/test/make_tests_poly1305_load_r.py +0 -0
  602. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/test/make_tests_poly1305_multiply.py +0 -0
  603. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/test/make_tests_poly1305_reduce.py +0 -0
  604. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/test/test_aesni.c +0 -0
  605. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/test/test_clmul.c +0 -0
  606. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/test/test_curve25519.c +0 -0
  607. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/test/test_curve25519_ct.c +0 -0
  608. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/test/test_curve448.c +0 -0
  609. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/test/test_des_ct.c +0 -0
  610. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/test/test_ed25519.c +0 -0
  611. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/test/test_ed25519_ct.c +0 -0
  612. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/test/test_ed448.c +0 -0
  613. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/test/test_endianess.c +0 -0
  614. {pycryptodome-4.2.0 → pycryptodome-4.4.0}/src/test/test_mod25519.c +0 -0
  615. {pycryptodome-4.2.0 → pycryptodome-4.4.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
 
@@ -47,8 +47,8 @@ jobs:
47
47
  pip install -v .
48
48
 
49
49
  # On x86-64, the big integer code (Crypto.Math._IntegerNat) and the
50
- # NIST curves (Crypto.PublicKey._nist_ecc) must use their builds for
51
- # CPUs with BMI2 and ADX, so that the tests cover them
50
+ # NIST curves and secp256k1 (Crypto.PublicKey._nist_ecc) must use their
51
+ # builds for CPUs with BMI2 and ADX, so that the tests cover them
52
52
  - name: Check that the BMI2/ADX build of the big integer code is used
53
53
  if: runner.arch == 'X64'
54
54
  run: |
@@ -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,92 @@
1
1
  Changelog
2
2
  =========
3
3
 
4
+ 4.4.0 (7 November 2026)
5
+ +++++++++++++++++++++++++++
6
+
7
+ New features
8
+ ------------
9
+ * Added the elliptic curve secp256k1 to ``Crypto.PublicKey.ECC``: key generation,
10
+ import and export, ECDSA with ``Crypto.Signature.DSS``, and ECDH with
11
+ ``Crypto.Protocol.DH``.
12
+ * Added the mode ``'sec1'`` to ``Crypto.Signature.DSS.new``, for randomized ECDSA on all Weierstrass
13
+ curves. Mode ``'fips-186-3'`` does not accept secp256k1, which is not a curve of that standard.
14
+ * GH#759: Added the parameter ``low_s`` to ``Crypto.Signature.DSS.new``, for ECDSA signatures
15
+ in the low-S form (for all curves): signing normalizes ``s``, and verifying rejects a high ``s``.
16
+ * ECDSA signatures in DER encoding are about 5-8x faster.
17
+
18
+ Resolved issues
19
+ ---------------
20
+ * ``ECC.import_key`` raised ``TypeError`` instead of ``ValueError`` for an OpenSSH public key
21
+ with an unsupported curve or key type, or with a malformed body.
22
+ * ``ECC.import_key`` accepted an OpenSSH key (public or private) whose curve did not match its key type.
23
+ * GH#960: In HPKE, a message rejected by ``unseal()`` consumed a sequence number, so all later
24
+ messages of that context failed too. The sequence number now only advances when ``unseal()``
25
+ succeeds (RFC 9180, Section 5.2). Thanks to Zulfareen Shaikh.
26
+ * In HPKE, a ``seal()`` that raised an exception also consumed a sequence number,
27
+ so the receiver could not unseal the messages that followed.
28
+
29
+ 4.3.0 (2 November 2026)
30
+ ++++++++++++++++++++++++++
31
+
32
+ New features
33
+ ------------
34
+ * CTR mode is 2.5-3.5x faster on large data (and GCM about 2x),
35
+ on all platforms.
36
+ * On 64-bit ARM CPUs (Linux, macOS and Windows), AES and GHASH use the instructions
37
+ of the ARMv8 Cryptography Extensions (AES and PMULL), when available.
38
+ On a Graviton3, AES-ECB is about 35x faster, GCM 7x, OCB 10-12x,
39
+ and CTR, CBC, CFB and OFB 3-6x.
40
+ * ``Integer.random_range()`` is about 2x faster when the bounds are public,
41
+ with the same output: ECDSA signatures are about 13% faster (P-256),
42
+ DSA signatures about 4%, and ECC key generation about 35%.
43
+ The RSA modulus and the DSA subgroup order are now public ``Integer`` objects.
44
+ * Faster RSA: on x86-64, signatures and decryption are 35-40% faster
45
+ (RSA-2048 to RSA-4096), verification and encryption 2-2.7x.
46
+ Modular exponentiation with a public exponent (like the RSA public exponent)
47
+ no longer uses the slower constant-time algorithm, which is only needed for
48
+ secret exponents, and the Montgomery context of a modulus is kept with it.
49
+ The RSA blinding factor is squared between uses (a new one every 32 uses,
50
+ and after a fork).
51
+ * The Montgomery multiplication for x86-64 CPUs with BMI2 and ADX is about 20%
52
+ faster: DSA signatures and verification are about 25% faster.
53
+ * ECDSA signatures are 3-6% faster for P-256 and P-384: the field inversion
54
+ uses the faster power for public exponents (the exponent p - 2 is public).
55
+ * On 64-bit ARM CPUs, SHA-224 and SHA-256 use the SHA-256 instructions
56
+ of the ARMv8 Cryptography Extensions, and SHA-384 and SHA-512 the SHA-512
57
+ instructions of ARMv8.2, when available.
58
+ On a Graviton3, SHA-256 is about 3.8x faster, and SHA-512 2x.
59
+ * On 64-bit ARM CPUs, KangarooTwelve, ML-KEM and ML-DSA compute 4 Keccak states at once
60
+ (2 with scalar code and 2 with NEON).
61
+ On a Graviton3, KangarooTwelve is 1.9x faster, ML-DSA 7-20% and ML-KEM 7-8%.
62
+ * PKCS#1 v1.5 decryption (``Crypto.Cipher.PKCS1_v1_5``) performs implicit rejection,
63
+ as defined in section 7.2 of ``draft-irtf-cfrg-rsa-guidance``,
64
+ when ``decrypt()`` is called without a ``sentinel`` (which is now optional):
65
+ when the padding of a ciphertext is not correct, it returns a pseudo-random
66
+ message, which only depends on the private key and on the ciphertext.
67
+ With a ``sentinel``, ``decrypt()`` behaves as before.
68
+
69
+ Other changes
70
+ -------------
71
+ * Updated the Wycheproof test vectors (new Ed25519 tests and the new ``chacha20_counter_test.json``).
72
+ XChaCha20 keeps the construction of draft-irtf-cfrg-xchacha (HChaCha20 and the ChaCha20
73
+ of RFC 8439), with a 32-bit block counter: the key stream ends after 256 GiB,
74
+ whereas libsodium and Wycheproof use a 64-bit counter.
75
+
76
+ Resolved issues
77
+ ---------------
78
+ * GH#481: PKCS#1 v1.5 decryption could be used as a Bleichenbacher oracle,
79
+ through the ``sentinel`` returned for ciphertexts with incorrect padding.
80
+ Calling ``decrypt()`` without ``sentinel`` (implicit rejection) is now
81
+ recommended. Thanks to tomato42 and eslerm.
82
+ * PKCS#1 v1.5 ``decrypt()`` never returned a ``sentinel`` that is not a byte string
83
+ (such as ``None``), and it returned an empty byte string instead.
84
+ * GH#954: ``Crypto.Util.asn1.DerObjectId`` accepted an ASN.1 OBJECT IDENTIFIER where an arc
85
+ is encoded with the initial octet 0x80 (invalid, as that would violate the minimal
86
+ encoding rule for BER) or where the last octet encoding the last arc has bit 7 set
87
+ (invalid, and that arc would also be dropped). In those cases, decoding now fails.
88
+ Thanks to Zulfareen Shaikh.
89
+
4
90
  4.2.0 (24 October 2026)
5
91
  ++++++++++++++++++++++++++
6
92
 
@@ -336,6 +422,20 @@ New features
336
422
  * Salsa20 raises ``OverflowError`` instead of silently reusing the key stream,
337
423
  when the data goes beyond its end (2\ :sup:`70` bytes per nonce).
338
424
 
425
+ 3.24.2 (5 November 2026)
426
+ ++++++++++++++++++++++++++
427
+
428
+ This release is only for ``pycryptodomex``.
429
+
430
+ Resolved issues
431
+ ---------------
432
+ * GH#958: on Windows with PyPy, native modules built with setuptools 84.2 or newer
433
+ could not be loaded because they were named ``.pyd``.
434
+
435
+ Other changes
436
+ -------------
437
+ * Build wheels for PyPy 8.0 (Python 3.11), in addition to PyPy 7.3.
438
+
339
439
  3.24.1 (11 October 2026)
340
440
  ++++++++++++++++++++++++++
341
441
 
@@ -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,7 +43,13 @@ 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
52
+ ec_nat_new_curve_secp256k1 = lambda *x: 0
45
53
  ec_nat_free_curve = lambda *x: None
46
54
  ec_nat_new_point = lambda *x: 0
47
55
  ec_nat_free_point = lambda *x: None
@@ -117,7 +125,7 @@ release = ".".join(str(x) for x in version_tuple)
117
125
  exclude_patterns = ["_build"]
118
126
 
119
127
  # The reST default role (used for this markup: `text`) to use for all documents.
120
- # default_role = None
128
+ default_role = "py:obj"
121
129
 
122
130
  # If true, '()' will be appended to :func: etc. cross-reference text.
123
131
  # add_function_parentheses = True
@@ -199,6 +207,9 @@ html_title = "PyCryptodome"
199
207
  # relative to this directory. They are copied after the builtin static files,
200
208
  # so a file named "default.css" will overwrite the builtin "default.css".
201
209
  html_static_path = ["_static"]
210
+
211
+ # Rank the guides first in the search results
212
+ html_search_scorer = "_static/scorer.js"
202
213
  html_css_files = ["custom.css"]
203
214
 
204
215
 
@@ -320,3 +331,36 @@ texinfo_documents = [
320
331
 
321
332
  # How to display URL addresses: 'footnote', 'no', or 'inline'.
322
333
  # texinfo_show_urls = 'footnote'
334
+
335
+
336
+ def _hide_cipher_mode_signature(app, what, name, obj, options, signature, return_annotation):
337
+ """The cipher objects of the modes of operation are created by the
338
+ ``new()`` function of the cipher module, never directly by the user:
339
+ do not show the internal parameters of their constructor."""
340
+
341
+ if what == "class" and name.startswith("Crypto.Cipher._mode_"):
342
+ return "", None
343
+ return None
344
+
345
+
346
+ def _lower_search_priority_of_cipher_modes():
347
+ """The methods of the cipher objects (like ``GcmMode.encrypt``) would
348
+ otherwise be the first results when searching for common words
349
+ like "encrypt", ahead of the guides."""
350
+
351
+ from sphinx.domains.python import PythonDomain
352
+
353
+ get_objects = PythonDomain.get_objects
354
+
355
+ def patched_get_objects(self):
356
+ for name, dispname, objtype, docname, anchor, prio in get_objects(self):
357
+ if name.startswith("Crypto.Cipher._mode_"):
358
+ prio = 2 # "unimportant"
359
+ yield name, dispname, objtype, docname, anchor, prio
360
+
361
+ PythonDomain.get_objects = patched_get_objects
362
+
363
+
364
+ def setup(app):
365
+ app.connect("autodoc-process-signature", _hide_cipher_mode_signature, priority=400)
366
+ _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