summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCoprDistGit <infra@openeuler.org>2023-05-15 03:42:51 +0000
committerCoprDistGit <infra@openeuler.org>2023-05-15 03:42:51 +0000
commit85fb996b8ae126b04fe2ec1bf2d9831806113a0d (patch)
treeb801a62b30df01ca8592a9737bee4b02d3cfb970
parentedb4386ea796a4b4e34b968584dfb95ae4d5f086 (diff)
automatic import of python-libnum
-rw-r--r--.gitignore1
-rw-r--r--python-libnum.spec378
-rw-r--r--sources1
3 files changed, 380 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
index e69de29..3c197fe 100644
--- a/.gitignore
+++ b/.gitignore
@@ -0,0 +1 @@
+/libnum-1.7.1.tar.gz
diff --git a/python-libnum.spec b/python-libnum.spec
new file mode 100644
index 0000000..a404eaa
--- /dev/null
+++ b/python-libnum.spec
@@ -0,0 +1,378 @@
+%global _empty_manifest_terminate_build 0
+Name: python-libnum
+Version: 1.7.1
+Release: 1
+Summary: Working with numbers (primes, modular, etc.)
+License: MIT
+URL: https://pypi.org/project/libnum/
+Source0: https://mirrors.nju.edu.cn/pypi/web/packages/d1/b3/25a3af3537d5dbcd23c651b942e6715b55f3ffeada97a5be328c0f1ac7a1/libnum-1.7.1.tar.gz
+BuildArch: noarch
+
+
+%description
+# libnum
+
+This is a python library for some numbers functions:
+
+* working with primes (generating, primality tests)
+* common maths (gcd, lcm, n'th root)
+* modular arithmetics (inverse, Jacobi symbol, square root, solve CRT)
+* converting strings to numbers or binary strings
+
+Library may be used for learning/experimenting/research purposes. Should NOT be used for secure crypto implementations.
+
+## Installation
+
+```bash
+$ pip install libnum
+```
+
+Note that only Python 3 version is maintained.
+
+## Development
+
+For development or building this repository, [poetry](https://python-poetry.org/) is needed.
+
+Tests can be ran with
+
+```bash
+$ pytest --doctest-modules .
+```
+
+## List of functions
+
+<b>Common maths</b>
+
+* len\_in\_bits(n) - number of bits in binary representation of @n
+* randint\_bits(size) - random number with a given bit size
+* extract\_prime\_power(a, p) - s,t such that a = p**s * t
+* nroot(x, n) - truncated n'th root of x
+* gcd(a, b, ...) - greatest common divisor of all arguments
+* lcm(a, b, ...) - least common multiplier of all arguments
+* xgcd(a, b) - Extented Euclid GCD algorithm, returns (x, y, g) : a * x + b * y = gcd(a, b) = g
+
+<b>Modular</b>
+
+* has\_invmod(a, n) - checks if a has modulo inverse
+* invmod(a, n) - modulo inverse
+* solve\_crt(remainders, modules) - solve Chinese Remainder Theoreme
+* factorial\_mod(n, factors) - compute factorial modulo composite number, needs factorization
+* nCk\_mod(n, k, factors) - compute combinations number modulo composite number, needs factorization
+* nCk\_mod\_prime\_power(n, k, p, e) - compute combinations number modulo prime power
+
+<b>Modular square roots</b>
+
+* jacobi(a, b) - Jacobi symbol
+* has\_sqrtmod\_prime\_power(a, p, k) - checks if a number has modular square root, modulus is p**k
+* sqrtmod\_prime\_power(a, p, k) - modular square root by p**k
+* has\_sqrtmod(a, factors) - checks if a composite number has modular square root, needs factorization
+* sqrtmod(a, factors) - modular square root by a composite modulus, needs factorization
+
+<b>Primes</b>
+
+* primes(n) - list of primes not greater than @n, slow method
+* generate\_prime(size, k=25) - generates a pseudo-prime with @size bits length. @k is a number of tests.
+* generate\_prime\_from\_string(s, size=None, k=25) - generate a pseudo-prime starting with @s in string representation
+
+<b>Factorization</b>
+* is\_power(n) - check if @n is p**k, k >= 2: return (p, k) or False
+* factorize(n) - factorize @n (currently with rho-Pollard method)
+warning: format of factorization is now dict like {p1: e1, p2: e2, ...}
+
+<b>ECC</b>
+
+* Curve(a, b, p, g, order, cofactor, seed) - class for representing elliptic curve. Methods:
+* .is\_null(p) - checks if point is null
+* .is\_opposite(p1, p2) - checks if 2 points are opposite
+* .check(p) - checks if point is on the curve
+* .check\_x(x) - checks if there are points with given x on the curve (and returns them if any)
+* .find\_points\_in\_range(start, end) - list of points in range of x coordinate
+* .find\_points\_rand(count) - list of count random points
+* .add(p1, p2) - p1 + p2 on elliptic curve
+* .power(p, n) - n✕P or (P + P + ... + P) n times
+* .generate(n) - n✕G
+* .get\_order(p, limit) - slow method, trying to determine order of p; limit is max order to try
+
+<b>Converting</b>
+
+* s2n(s) - packed string to number
+* n2s(n) - number to packed string
+* s2b(s) - packed string to binary string
+* b2s(b) - binary string to packed string
+
+<b>Stuff</b>
+
+* grey\_code(n) - number in Grey code
+* rev\_grey\_code(g) - number from Grey code
+* nCk(n, k) - number of combinations
+* factorial(n) - factorial
+
+## About
+
+Author: hellman
+
+License: [MIT License](http://opensource.org/licenses/MIT)
+
+
+%package -n python3-libnum
+Summary: Working with numbers (primes, modular, etc.)
+Provides: python-libnum
+BuildRequires: python3-devel
+BuildRequires: python3-setuptools
+BuildRequires: python3-pip
+%description -n python3-libnum
+# libnum
+
+This is a python library for some numbers functions:
+
+* working with primes (generating, primality tests)
+* common maths (gcd, lcm, n'th root)
+* modular arithmetics (inverse, Jacobi symbol, square root, solve CRT)
+* converting strings to numbers or binary strings
+
+Library may be used for learning/experimenting/research purposes. Should NOT be used for secure crypto implementations.
+
+## Installation
+
+```bash
+$ pip install libnum
+```
+
+Note that only Python 3 version is maintained.
+
+## Development
+
+For development or building this repository, [poetry](https://python-poetry.org/) is needed.
+
+Tests can be ran with
+
+```bash
+$ pytest --doctest-modules .
+```
+
+## List of functions
+
+<b>Common maths</b>
+
+* len\_in\_bits(n) - number of bits in binary representation of @n
+* randint\_bits(size) - random number with a given bit size
+* extract\_prime\_power(a, p) - s,t such that a = p**s * t
+* nroot(x, n) - truncated n'th root of x
+* gcd(a, b, ...) - greatest common divisor of all arguments
+* lcm(a, b, ...) - least common multiplier of all arguments
+* xgcd(a, b) - Extented Euclid GCD algorithm, returns (x, y, g) : a * x + b * y = gcd(a, b) = g
+
+<b>Modular</b>
+
+* has\_invmod(a, n) - checks if a has modulo inverse
+* invmod(a, n) - modulo inverse
+* solve\_crt(remainders, modules) - solve Chinese Remainder Theoreme
+* factorial\_mod(n, factors) - compute factorial modulo composite number, needs factorization
+* nCk\_mod(n, k, factors) - compute combinations number modulo composite number, needs factorization
+* nCk\_mod\_prime\_power(n, k, p, e) - compute combinations number modulo prime power
+
+<b>Modular square roots</b>
+
+* jacobi(a, b) - Jacobi symbol
+* has\_sqrtmod\_prime\_power(a, p, k) - checks if a number has modular square root, modulus is p**k
+* sqrtmod\_prime\_power(a, p, k) - modular square root by p**k
+* has\_sqrtmod(a, factors) - checks if a composite number has modular square root, needs factorization
+* sqrtmod(a, factors) - modular square root by a composite modulus, needs factorization
+
+<b>Primes</b>
+
+* primes(n) - list of primes not greater than @n, slow method
+* generate\_prime(size, k=25) - generates a pseudo-prime with @size bits length. @k is a number of tests.
+* generate\_prime\_from\_string(s, size=None, k=25) - generate a pseudo-prime starting with @s in string representation
+
+<b>Factorization</b>
+* is\_power(n) - check if @n is p**k, k >= 2: return (p, k) or False
+* factorize(n) - factorize @n (currently with rho-Pollard method)
+warning: format of factorization is now dict like {p1: e1, p2: e2, ...}
+
+<b>ECC</b>
+
+* Curve(a, b, p, g, order, cofactor, seed) - class for representing elliptic curve. Methods:
+* .is\_null(p) - checks if point is null
+* .is\_opposite(p1, p2) - checks if 2 points are opposite
+* .check(p) - checks if point is on the curve
+* .check\_x(x) - checks if there are points with given x on the curve (and returns them if any)
+* .find\_points\_in\_range(start, end) - list of points in range of x coordinate
+* .find\_points\_rand(count) - list of count random points
+* .add(p1, p2) - p1 + p2 on elliptic curve
+* .power(p, n) - n✕P or (P + P + ... + P) n times
+* .generate(n) - n✕G
+* .get\_order(p, limit) - slow method, trying to determine order of p; limit is max order to try
+
+<b>Converting</b>
+
+* s2n(s) - packed string to number
+* n2s(n) - number to packed string
+* s2b(s) - packed string to binary string
+* b2s(b) - binary string to packed string
+
+<b>Stuff</b>
+
+* grey\_code(n) - number in Grey code
+* rev\_grey\_code(g) - number from Grey code
+* nCk(n, k) - number of combinations
+* factorial(n) - factorial
+
+## About
+
+Author: hellman
+
+License: [MIT License](http://opensource.org/licenses/MIT)
+
+
+%package help
+Summary: Development documents and examples for libnum
+Provides: python3-libnum-doc
+%description help
+# libnum
+
+This is a python library for some numbers functions:
+
+* working with primes (generating, primality tests)
+* common maths (gcd, lcm, n'th root)
+* modular arithmetics (inverse, Jacobi symbol, square root, solve CRT)
+* converting strings to numbers or binary strings
+
+Library may be used for learning/experimenting/research purposes. Should NOT be used for secure crypto implementations.
+
+## Installation
+
+```bash
+$ pip install libnum
+```
+
+Note that only Python 3 version is maintained.
+
+## Development
+
+For development or building this repository, [poetry](https://python-poetry.org/) is needed.
+
+Tests can be ran with
+
+```bash
+$ pytest --doctest-modules .
+```
+
+## List of functions
+
+<b>Common maths</b>
+
+* len\_in\_bits(n) - number of bits in binary representation of @n
+* randint\_bits(size) - random number with a given bit size
+* extract\_prime\_power(a, p) - s,t such that a = p**s * t
+* nroot(x, n) - truncated n'th root of x
+* gcd(a, b, ...) - greatest common divisor of all arguments
+* lcm(a, b, ...) - least common multiplier of all arguments
+* xgcd(a, b) - Extented Euclid GCD algorithm, returns (x, y, g) : a * x + b * y = gcd(a, b) = g
+
+<b>Modular</b>
+
+* has\_invmod(a, n) - checks if a has modulo inverse
+* invmod(a, n) - modulo inverse
+* solve\_crt(remainders, modules) - solve Chinese Remainder Theoreme
+* factorial\_mod(n, factors) - compute factorial modulo composite number, needs factorization
+* nCk\_mod(n, k, factors) - compute combinations number modulo composite number, needs factorization
+* nCk\_mod\_prime\_power(n, k, p, e) - compute combinations number modulo prime power
+
+<b>Modular square roots</b>
+
+* jacobi(a, b) - Jacobi symbol
+* has\_sqrtmod\_prime\_power(a, p, k) - checks if a number has modular square root, modulus is p**k
+* sqrtmod\_prime\_power(a, p, k) - modular square root by p**k
+* has\_sqrtmod(a, factors) - checks if a composite number has modular square root, needs factorization
+* sqrtmod(a, factors) - modular square root by a composite modulus, needs factorization
+
+<b>Primes</b>
+
+* primes(n) - list of primes not greater than @n, slow method
+* generate\_prime(size, k=25) - generates a pseudo-prime with @size bits length. @k is a number of tests.
+* generate\_prime\_from\_string(s, size=None, k=25) - generate a pseudo-prime starting with @s in string representation
+
+<b>Factorization</b>
+* is\_power(n) - check if @n is p**k, k >= 2: return (p, k) or False
+* factorize(n) - factorize @n (currently with rho-Pollard method)
+warning: format of factorization is now dict like {p1: e1, p2: e2, ...}
+
+<b>ECC</b>
+
+* Curve(a, b, p, g, order, cofactor, seed) - class for representing elliptic curve. Methods:
+* .is\_null(p) - checks if point is null
+* .is\_opposite(p1, p2) - checks if 2 points are opposite
+* .check(p) - checks if point is on the curve
+* .check\_x(x) - checks if there are points with given x on the curve (and returns them if any)
+* .find\_points\_in\_range(start, end) - list of points in range of x coordinate
+* .find\_points\_rand(count) - list of count random points
+* .add(p1, p2) - p1 + p2 on elliptic curve
+* .power(p, n) - n✕P or (P + P + ... + P) n times
+* .generate(n) - n✕G
+* .get\_order(p, limit) - slow method, trying to determine order of p; limit is max order to try
+
+<b>Converting</b>
+
+* s2n(s) - packed string to number
+* n2s(n) - number to packed string
+* s2b(s) - packed string to binary string
+* b2s(b) - binary string to packed string
+
+<b>Stuff</b>
+
+* grey\_code(n) - number in Grey code
+* rev\_grey\_code(g) - number from Grey code
+* nCk(n, k) - number of combinations
+* factorial(n) - factorial
+
+## About
+
+Author: hellman
+
+License: [MIT License](http://opensource.org/licenses/MIT)
+
+
+%prep
+%autosetup -n libnum-1.7.1
+
+%build
+%py3_build
+
+%install
+%py3_install
+install -d -m755 %{buildroot}/%{_pkgdocdir}
+if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi
+if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi
+if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi
+if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi
+pushd %{buildroot}
+if [ -d usr/lib ]; then
+ find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+if [ -d usr/lib64 ]; then
+ find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+if [ -d usr/bin ]; then
+ find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+if [ -d usr/sbin ]; then
+ find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+touch doclist.lst
+if [ -d usr/share/man ]; then
+ find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst
+fi
+popd
+mv %{buildroot}/filelist.lst .
+mv %{buildroot}/doclist.lst .
+
+%files -n python3-libnum -f filelist.lst
+%dir %{python3_sitelib}/*
+
+%files help -f doclist.lst
+%{_docdir}/*
+
+%changelog
+* Mon May 15 2023 Python_Bot <Python_Bot@openeuler.org> - 1.7.1-1
+- Package Spec generated
diff --git a/sources b/sources
new file mode 100644
index 0000000..090f75b
--- /dev/null
+++ b/sources
@@ -0,0 +1 @@
+80f92bfe9b1372d73c2d7c116f861bff libnum-1.7.1.tar.gz