Commit graph

45 commits

Author SHA1 Message Date
Helder Eijs
3b20e96ffa Add PYCRYPTODOME_DISABLE_GMP flag and simplify to_bytes() for GMP 2024-01-13 18:41:36 +01:00
Helder Eijs
afb5e27a15 Fix side-channel leakage in RSA decryption 2023-12-25 01:30:40 +01:00
Helder Eijs
764c1e81b9 Add Ed25519 keys and EdDSA signatures 2022-05-08 22:35:37 +02:00
Helder Eijs
2e7dad9a9f Fix GH#505 and GH#509: Fix segmentation faults with GMP on Aarch64
Do not use GMP sscanf and snprintf. Instead, convert integers into
and from GMP using pure arithmetic operations.
2021-09-22 00:46:56 +02:00
Helder Eijs
f499fd3756 Better message when avoiding GMP on Windows 2020-06-14 23:35:31 +02:00
Helder Eijs
9583c3b8d8 Allow hex() on custom integers 2019-02-11 12:12:41 +01:00
Helder Eijs
fa933ab29e Make mypy test pass
In the process, refactor Crypto.Math to make use of inheritance.
2018-11-23 23:07:14 +01:00
Helder Eijs
cd7f0128b6 Make code base suitable for Python 2 and 3 - stop using 2to3 2018-11-04 15:04:23 +01:00
Helder Eijs
066b8969ee More cleanup 2018-10-16 22:09:53 +02:00
Helder Eijs
9990033025 Jacobi symbol not defined for negative n, add more test vectors 2018-08-10 12:58:41 +02:00
Helder Eijs
4242e82e9e Modern syntax for except statement 2018-06-12 14:15:39 +02:00
Helder Eijs
3f2be587f3 Add square root modulo prime 2018-02-14 23:50:54 +01:00
Helder Eijs
7b1249e718 Add custom implementation for modexp 2018-01-22 00:41:09 +01:00
Helder Eijs
88595c6fa3 Remove OverflowError from right shift 2018-01-08 12:01:49 +01:00
Helder Eijs
7d03599c65 Fix Integer.get_bit for negative values and overflows
It is not possible anymore to get a specific bit from a negative
integer (representation cannot be intuitive).

OverFlowError is not raised anymore (in line with
https://bugs.python.org/issue29816)
2018-01-08 11:49:10 +01:00
Legrandin
e7112fa9d4 Add Math.Integer.size_in_bytes 2016-01-26 04:47:29 -05:00
Legrandin
c0176c8d32 Add in-place invert operation 2016-01-11 22:55:39 +01:00
Legrandin
92cbf23eba Added in-place subtraction 2016-01-11 22:35:45 +01:00
Legrandin
8b15b12a81 Add in-place exponentiation for Integer 2016-01-11 08:33:00 +01:00
Legrandin
1cca0ff6c1 Add Integer.lcm() method 2015-03-05 21:54:07 +01:00
Legrandin
f928741c77 Add square root to Integer 2015-02-25 22:39:10 +01:00
Legrandin
f08e5f9506 On Windows, do not rely on ctypes.util.find_library(). 2015-02-20 14:40:56 +00:00
Legrandin
0564cb7c3e On Win64, use ulonglong instead ulong for MPIR 2015-02-10 12:50:02 +00:00
Legrandin
70e6625800 More tests for Integer initialization 2015-02-10 10:39:11 +00:00
Legrandin
c965c1ee84 Simplified Integer initialization with GMP 2015-02-09 22:22:21 +01:00
Legrandin
eb49715608 pow(), gcd() and inverse() methods return Integer
The three functions erroneously return a Python
integer and not an Crypto.Number.Integer when
using the fallback implementation (non-GMP).
2015-02-03 21:55:25 +01:00
Legrandin
fffdf87c4d Fixed to test cases when GMP is missing 2015-02-02 22:32:54 +01:00
Legrandin
92d6fc6c08 Explicitly export symbols on Windows 2015-02-02 22:18:02 +01:00
Legrandin
0d0e37a6f0 random_range takes only explicit keywords args 2014-12-06 12:04:12 +01:00
Legrandin
3e374a58c7 Bugfix: mpz_set() called on uninitialized MPZ 2014-12-06 12:04:12 +01:00
Legrandin
40fe460735 Added inverse, gcd, left shift and floor division to Integer 2014-12-06 12:04:11 +01:00
Legrandin
354ed29fba Revisited tests, docs and added generate_probable_safe_prime 2014-12-06 12:04:11 +01:00
Legrandin
7efa10ed59 Additional optimizations for prime generation. 2014-12-06 12:04:11 +01:00
Legrandin
1c609d77c6 More complete set of tests for Math.Number 2014-12-06 12:04:11 +01:00
Legrandin
6f28a6007d Optimize prime generation (Lucas test) 2014-12-06 12:04:11 +01:00
Legrandin
e6771764de Add is_divisible_by_ulong method to Integer 2014-12-06 12:04:11 +01:00
Legrandin
6f6bfe785a Add or operator to Integer 2014-12-06 12:04:11 +01:00
Legrandin
2e40ae0f14 Change Math.Numbers.Natural into Integer 2014-12-06 12:04:10 +01:00
Legrandin
81e9b240a0 Added more methods to Natural.
Methods and operators added are:
* jacobi_symbol()
* multiplication
* simple exponentiation
* right shift
2014-12-06 12:04:10 +01:00
Legrandin
8847d4b700 Add is_perfect_square method to Natural 2014-12-06 12:04:10 +01:00
Legrandin
36bec9d410 Added more methods to Natural
Methods and operators added:
* random()
* and
* comparison
* bool
* in-place right shift
* size_in_bits()
* str
* is_even()
* is_odd()
2014-12-06 12:04:10 +01:00
Legrandin
4969bd2b66 Unit test will cover both Natural implementations 2014-12-06 12:04:10 +01:00
Legrandin
1b6ad42925 Added exponentiation to Natural 2014-12-06 12:04:10 +01:00
Legrandin
87e2f82965 Initial support for GMP 2014-12-06 12:04:10 +01:00
Legrandin
6f310bc021 First implementation based on int 2014-12-06 12:04:10 +01:00