mirror of
https://github.com/mii443/encrypt.git
synced 2025-08-22 15:05:33 +00:00
86 lines
2.7 KiB
Rust
86 lines
2.7 KiB
Rust
|
|
use std::{fs, collections::HashMap};
|
|
|
|
use encrypt::{elliptic_curve::elliptic_curve::EllipticCurvePoint, common::finite_field::FiniteFieldElement};
|
|
use gpsl::{source::Source, tokenizer::Tokenizer, vm::gpsl::GPSL, external_function::STD_FUNC};
|
|
use primitive_types::U512;
|
|
/*
|
|
[6139062701328441600,
|
|
[258929920560, 23709360],
|
|
[[Mod(3308825380872319861, 6139062703770505681), Mod(4839630718792142583, 6139062703770505681)],
|
|
[Mod(4767914906170010398, 6139062703770505681), Mod(2445476831433994309, 6139062703770505681)]]]
|
|
*/
|
|
/*
|
|
fn main() {
|
|
let p = U512::from_str_radix("6717051393902806321", 10).unwrap();
|
|
|
|
let secp256_k1_a = FiniteFieldElement::new(U512::from(0u8), p);
|
|
let secp256_k1_b = FiniteFieldElement::new(U512::from_str_radix("1603830326921046894", 10).unwrap(), p);
|
|
|
|
let P = {
|
|
let x = FiniteFieldElement::new(U512::from_str_radix("3410381082791005532", 10).unwrap(), p);
|
|
let y = FiniteFieldElement::new(U512::from_str_radix("3959394867921462649", 10).unwrap(), p);
|
|
EllipticCurvePoint::Point { x, y, a: secp256_k1_a, b: secp256_k1_b }
|
|
};
|
|
let Q = {
|
|
let x = FiniteFieldElement::new(U512::from_str_radix("6030658041738565471", 10).unwrap(), p);
|
|
let y = FiniteFieldElement::new(U512::from_str_radix("34549622697239310", 10).unwrap(), p);
|
|
EllipticCurvePoint::Point { x, y, a: secp256_k1_a, b: secp256_k1_b }
|
|
};
|
|
let r = U512::from_str_radix("1135596179020030", 10).unwrap();
|
|
|
|
let f = EllipticCurvePoint::weil(P, Q, r);
|
|
|
|
println!("{}", f);
|
|
}
|
|
|
|
pub fn search(base: FiniteFieldElement, target: FiniteFieldElement) -> U512 {
|
|
let mut i = U512::one();
|
|
let mut b = base;
|
|
println!("{}, {}", base, target);
|
|
while b != target {
|
|
b = b * base;
|
|
i += U512::one();
|
|
}
|
|
i
|
|
}*/
|
|
|
|
use clap::Parser;
|
|
|
|
#[derive(Parser, Debug)]
|
|
#[clap(author, version, about, long_about = None)]
|
|
struct Args {
|
|
#[clap(short, long, value_parser)]
|
|
mode: String,
|
|
|
|
#[clap(short, long, value_parser)]
|
|
file: String,
|
|
}
|
|
|
|
fn main() {
|
|
let args = Args::parse();
|
|
|
|
match &*args.mode {
|
|
"gpsl" => {
|
|
let mut source = Source::new(fs::read_to_string(&(args.file)).expect("Cannot read file."));
|
|
|
|
let mut tokenizer = Tokenizer::new();
|
|
tokenizer.tokenize(&mut source).unwrap();
|
|
|
|
let mut parser = gpsl::parser::Parser {
|
|
tokenizer,
|
|
local_vars: HashMap::new()
|
|
};
|
|
|
|
let mut gpsl = GPSL::new(source, Some(parser.functions().unwrap()), vec![STD_FUNC]);
|
|
let res = gpsl.run("main".to_string(), vec![]);
|
|
if let Err(err) = res {
|
|
println!("Error: {:?}", err);
|
|
}
|
|
}
|
|
_ => {
|
|
|
|
}
|
|
}
|
|
}
|