some changes idk
This commit is contained in:
parent
cc1116c2ca
commit
ebfce5ac7f
|
@ -1,6 +1,6 @@
|
||||||
[package]
|
[package]
|
||||||
name = "plexcryptool"
|
name = "plexcryptool"
|
||||||
version = "0.2.0"
|
version = "0.2.1"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
|
|
||||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||||
|
|
|
@ -38,6 +38,7 @@ fn register_binary_module(py: Python, parent_module: &PyModule) -> PyResult<()>
|
||||||
fn register_math_module(py: Python, parent_module: &PyModule) -> PyResult<()> {
|
fn register_math_module(py: Python, parent_module: &PyModule) -> PyResult<()> {
|
||||||
let math_module = PyModule::new(py, "math")?;
|
let math_module = PyModule::new(py, "math")?;
|
||||||
math_module.add_function(wrap_pyfunction!(math::modexp::py_modular_exponentiation, math_module)?)?;
|
math_module.add_function(wrap_pyfunction!(math::modexp::py_modular_exponentiation, math_module)?)?;
|
||||||
|
math_module.add_function(wrap_pyfunction!(math::pm1::py_p_minus_one, math_module)?)?;
|
||||||
parent_module.add_submodule(math_module)?;
|
parent_module.add_submodule(math_module)?;
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
|
@ -31,7 +31,7 @@ use num_bigint;
|
||||||
/*************************************************************************************************/
|
/*************************************************************************************************/
|
||||||
// This is just structures for parsing Cli args
|
// This is just structures for parsing Cli args
|
||||||
#[derive(Parser, Debug)]
|
#[derive(Parser, Debug)]
|
||||||
#[command(author, version, about, long_about = None)]
|
#[clap(name="plexcryptool", author="Christoph J. Scherr", version, about="Various tools for use with math and cryptology, includes executable and a library.")]
|
||||||
struct Cli {
|
struct Cli {
|
||||||
/// Which submodule to use
|
/// Which submodule to use
|
||||||
#[command(subcommand)]
|
#[command(subcommand)]
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
/// License: MIT
|
/// License: MIT
|
||||||
/// Source: <https://git.cscherr.de/PlexSheep/plexcryptool/>
|
/// Source: <https://git.cscherr.de/PlexSheep/plexcryptool/>
|
||||||
|
|
||||||
use pyo3::prelude::*;
|
use pyo3::{prelude::*, exceptions::PyArithmeticError};
|
||||||
|
|
||||||
use num::integer::gcd;
|
use num::integer::gcd;
|
||||||
|
|
||||||
|
@ -93,6 +93,17 @@ pub fn p_minus_one(n: u128, max_prime: u128, verbose: bool) -> Result<Vec<u128>,
|
||||||
return Ok(prime_parts);
|
return Ok(prime_parts);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[pyfunction]
|
||||||
|
#[pyo3(name = "p_minus_one")]
|
||||||
|
/// python wrapper for p_minus_one
|
||||||
|
pub fn py_p_minus_one(n: u128, max_prime: u128, verbose: bool)-> PyResult<Vec<u128>> {
|
||||||
|
let res = p_minus_one(n, max_prime, verbose);
|
||||||
|
match res {
|
||||||
|
Ok(vec) => Ok(vec),
|
||||||
|
Err(e) => Err(PyArithmeticError::new_err(e))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// alternative simple implementation for gcd
|
/// alternative simple implementation for gcd
|
||||||
pub fn alt_gcd(mut a: u128, mut b: u128) -> u128 {
|
pub fn alt_gcd(mut a: u128, mut b: u128) -> u128 {
|
||||||
let mut tmp: u128;
|
let mut tmp: u128;
|
||||||
|
|
Loading…
Reference in New Issue