the official imp™ lib!!
Find a file
2025-07-06 21:40:49 +10:00
celeste Project is now named Celeste 2025-07-06 19:20:20 +10:00
ctf-solutions Project is now named Celeste 2025-07-06 19:20:20 +10:00
examples Project is now named Celeste 2025-07-06 19:20:20 +10:00
research/aparith Project is now named Celeste 2025-07-06 19:20:20 +10:00
sandbox init 2025-06-24 16:42:17 +10:00
src Project is now named Celeste 2025-07-06 19:20:20 +10:00
.gitignore Project is now named Celeste 2025-07-06 19:20:20 +10:00
celeste.nimble Project is now named Celeste 2025-07-06 19:20:20 +10:00
config.nims Project is now named Celeste 2025-07-06 19:20:20 +10:00
default.nix added default.nix and various ctf examples 2025-06-27 03:08:31 +10:00
poetry.lock Added padding oracle attack vector 2025-06-26 00:20:13 +10:00
primegen.nim Moved (VERY incomplete) primefac reimplementation 2025-07-06 21:40:03 +10:00
pyproject.toml Project is now named Celeste 2025-07-06 19:20:20 +10:00
README Project is now named Celeste 2025-07-06 19:20:20 +10:00
README-primefac Moved (VERY incomplete) primefac reimplementation 2025-07-06 21:40:03 +10:00

The "imbaud python library" (imp lib), or just imp for short!

TODO:
- define a getPrime function like PyCryptodome's
- rewrite nim-lang/bigints to implement features like Karatsuba multiplication, or even Toom-3 multiplication


PyCryptodome defines getPrime as follows:
```py
def getPrime(N, randfunc=None):
    """Return a random N-bit prime number.

    N must be an integer larger than 1.
    If randfunc is omitted, then :meth:`Random.get_random_bytes` is used.
    """
    if randfunc is None:
        randfunc = Random.get_random_bytes

    if N < 2:
        raise ValueError("N must be larger than 1")

    while True:
        number = getRandomNBitInteger(N, randfunc) | 1
        if isPrime(number, randfunc=randfunc):
            break
    return number
```
in essence infinite random generation until a prime is found