add config file compression

This commit is contained in:
Masato Imai
2022-08-16 11:38:24 +09:00
parent 96709e504a
commit 1b82fd3a59
6 changed files with 75 additions and 12 deletions

35
Cargo.lock generated
View File

@ -2,6 +2,12 @@
# It is not intended for manual editing. # It is not intended for manual editing.
version = 3 version = 3
[[package]]
name = "adler"
version = "1.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe"
[[package]] [[package]]
name = "aho-corasick" name = "aho-corasick"
version = "0.7.18" version = "0.7.18"
@ -126,6 +132,15 @@ dependencies = [
"os_str_bytes", "os_str_bytes",
] ]
[[package]]
name = "crc32fast"
version = "1.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d"
dependencies = [
"cfg-if",
]
[[package]] [[package]]
name = "crunchy" name = "crunchy"
version = "0.2.2" version = "0.2.2"
@ -140,6 +155,7 @@ dependencies = [
"bigdecimal", "bigdecimal",
"clap", "clap",
"env_logger", "env_logger",
"flate2",
"log", "log",
"primitive-types", "primitive-types",
"rand 0.7.3", "rand 0.7.3",
@ -175,6 +191,16 @@ dependencies = [
"static_assertions", "static_assertions",
] ]
[[package]]
name = "flate2"
version = "1.0.24"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f82b0f4c27ad9f8bfd1f3208d882da2b09c301bc1c828fd3a00d0216d2fbbff6"
dependencies = [
"crc32fast",
"miniz_oxide",
]
[[package]] [[package]]
name = "funty" name = "funty"
version = "2.0.0" version = "2.0.0"
@ -302,6 +328,15 @@ version = "2.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d"
[[package]]
name = "miniz_oxide"
version = "0.5.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6f5c75688da582b8ffc1f1799e9db273f32133c49e048f614d22ec3256773ccc"
dependencies = [
"adler",
]
[[package]] [[package]]
name = "num-bigint" name = "num-bigint"
version = "0.4.3" version = "0.4.3"

View File

@ -18,3 +18,4 @@ serde = { version = "1.0", features = ["derive"] }
serde_json = "*" serde_json = "*"
base64 = "*" base64 = "*"
toml = "*" toml = "*"
flate2 = "1.0.24"

15
client2.gpsl Normal file
View File

@ -0,0 +1,15 @@
fn main() {
let a = encrypt(16)
println("a: " + decrypt(a))
let b = encrypt(60)
println("b: " + b)
let c = encrypt(48)
println("c: " + c)
let d = encrypt(2)
println("d: " + d)
let e = encrypt(24)
println("e: " + e)
let r = a + b + c + d + e
println("r: " + decrypt(r));
println(decrypt(r) - 15)
}

View File

@ -1,2 +1 @@
private_key = "NDM1ODIxMjU2NDA1MTc3NjExNTc0MTk2NjQ5MjUyMzMxMDA5MTMyMjMwNTA1MjA1MTA1OTMzMTA0NjEwODU3MzU3NDg3NDA1Njk5ODU=" x<EFBFBD><EFBFBD>RAN<EFBFBD>0<EFBFBD><EFBFBD><EFBFBD><EFBFBD>/HSġ<EFBFBD><EFBFBD>NSG<EFBFBD>Z<EFBFBD><EFBFBD><EFBFBD><EFBFBD>hZ; T<EFBFBD><EFBFBD>į<EFBFBD> <EFBFBD><EFBFBD><EFBFBD>*<EFBFBD>ڙ<EFBFBD>hf<EFBFBD><EFBFBD><EFBFBD>?<EFBFBD>?<EFBFBD>O<EFBFBD>q<EFBFBD>,&S-<EFBFBD><EFBFBD><EFBFBD><EFBFBD>s.<EFBFBD><EFBFBD><EFBFBD>?<EFBFBD>fИ <EFBFBD>Fp̢<EFBFBD><EFBFBD><EFBFBD><EFBFBD>d<EFBFBD>|ZH<EFBFBD><EFBFBD><EFBFBD><EFBFBD>a5<<EFBFBD>cK?<EFBFBD>0<EFBFBD>]<EFBFBD>g<EFBFBD><EFBFBD><EFBFBD><EFBFBD>t<EFBFBD>w<EFBFBD><EFBFBD><EFBFBD>=<EFBFBD>i<EFBFBD><EFBFBD><EFBFBD>a<EFBFBD>n<EFBFBD><EFBFBD>0s<EFBFBD>c<EFBFBD><EFBFBD><EFBFBD>o<EFBFBD><EFBFBD><EFBFBD>7
public_key = "eyJQb2ludCI6eyJ4Ijp7InZhbHVlIjoiMHg1NDhlZWQwYzNlYzc5OTJlMzhhODkyNGJjMDk4NTZmZDcwOTNjZDIyZjQ3N2ZjNjA0OGQ3ZWYxNjJhNDM3Y2UiLCJwIjoiMHhmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZWZmZmZmYzJmIn0sInkiOnsidmFsdWUiOiIweGU3OTVlNGZmMDdlOTYyYmUzNzFlYmJhYWVlYWI2ZDBkZmVlNjg5YmQ3MzlmYjk5MGI1NmE0NDQxZTJhZGFiNzIiLCJwIjoiMHhmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZWZmZmZmYzJmIn0sImEiOnsidmFsdWUiOiIweDAiLCJwIjoiMHhmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZWZmZmZmYzJmIn0sImIiOnsidmFsdWUiOiIweDciLCJwIjoiMHhmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZWZmZmZmYzJmIn19fQ=="

View File

@ -112,6 +112,7 @@ pub const STD_FUNC: fn(
}; };
let ec = encryption.plain_to_ec_point(plain); let ec = encryption.plain_to_ec_point(plain);
let eep = encryption.encrypt(ec, data.public_key.unwrap(), None); let eep = encryption.encrypt(ec, data.public_key.unwrap(), None);
println!("{}", ec);
ExternalFuncReturn { ExternalFuncReturn {
status: ExternalFuncStatus::SUCCESS, status: ExternalFuncStatus::SUCCESS,
value: Some(Variable::PureEncrypted { value: eep }), value: Some(Variable::PureEncrypted { value: eep }),
@ -124,6 +125,7 @@ pub const STD_FUNC: fn(
_ => panic!("decrypt: first argument must be a pure encrypted point"), _ => panic!("decrypt: first argument must be a pure encrypted point"),
}; };
let plain = Encryption::decrypt(eep, data.private_key.unwrap()); let plain = Encryption::decrypt(eep, data.private_key.unwrap());
println!("{}", plain);
let plain = encryption.ec_point_to_plain(plain); let plain = encryption.ec_point_to_plain(plain);
ExternalFuncReturn { ExternalFuncReturn {
status: ExternalFuncStatus::SUCCESS, status: ExternalFuncStatus::SUCCESS,

View File

@ -5,6 +5,9 @@ use common::finite_field::FiniteFieldElement;
use elliptic_curve::elliptic_curve::EllipticCurve; use elliptic_curve::elliptic_curve::EllipticCurve;
use elliptic_curve::elliptic_curve::EllipticCurvePoint; use elliptic_curve::elliptic_curve::EllipticCurvePoint;
use elliptic_curve::encryption::Encryption; use elliptic_curve::encryption::Encryption;
use flate2::read::ZlibDecoder;
use flate2::write::ZlibEncoder;
use flate2::Compression;
use gpsl::external_function::ExternalFuncReturn; use gpsl::external_function::ExternalFuncReturn;
use gpsl::external_function::ExternalFuncStatus; use gpsl::external_function::ExternalFuncStatus;
use gpsl::node::Node; use gpsl::node::Node;
@ -17,6 +20,7 @@ use serde::Deserialize;
use serde::Serialize; use serde::Serialize;
use std::env; use std::env;
use std::fs::File; use std::fs::File;
use std::io::prelude::*;
use std::io::BufRead; use std::io::BufRead;
use std::io::BufReader; use std::io::BufReader;
use std::io::Read; use std::io::Read;
@ -71,9 +75,12 @@ struct Config {
impl Config { impl Config {
fn read_file(file: &str) -> String { fn read_file(file: &str) -> String {
let mut file = fs::File::open(file).unwrap(); let mut file = fs::File::open(file).unwrap();
let mut contents = String::new(); let mut contents = Vec::new();
file.read_to_string(&mut contents).unwrap(); file.read_to_end(&mut contents).unwrap();
contents let mut d = ZlibDecoder::new(&contents[..]);
let mut s = String::new();
d.read_to_string(&mut s).unwrap();
s
} }
pub fn from_file(file: &str) -> Self { pub fn from_file(file: &str) -> Self {
let file = Config::read_file(file); let file = Config::read_file(file);
@ -83,7 +90,7 @@ impl Config {
if let Some(private_key) = config.private_key { if let Some(private_key) = config.private_key {
let decoded = base64::decode(&private_key).unwrap(); let decoded = base64::decode(&private_key).unwrap();
let s = std::str::from_utf8(&decoded).unwrap(); let s = std::str::from_utf8(&decoded).unwrap();
Some(U512::from_str(s).unwrap()) Some(U512::from_str_radix(s, 10).unwrap())
} else { } else {
None None
} }
@ -93,7 +100,8 @@ impl Config {
if let Some(public_key) = config.public_key { if let Some(public_key) = config.public_key {
let decoded = base64::decode(&public_key).unwrap(); let decoded = base64::decode(&public_key).unwrap();
let s = std::str::from_utf8(&decoded).unwrap(); let s = std::str::from_utf8(&decoded).unwrap();
Some(EllipticCurvePoint::from_str(s).unwrap()) let r = EllipticCurvePoint::from_str(s).unwrap();
Some(r)
} else { } else {
None None
} }
@ -113,7 +121,7 @@ impl Config {
[Mod(4767914906170010398, 6139062703770505681), Mod(2445476831433994309, 6139062703770505681)]]] [Mod(4767914906170010398, 6139062703770505681), Mod(2445476831433994309, 6139062703770505681)]]]
*/ */
fn main() { fn o_main() {
let p = U512::from_str_radix("1009", 10).unwrap(); let p = U512::from_str_radix("1009", 10).unwrap();
let secp256_k1_a = FiniteFieldElement::new(U512::from(37u8), p); let secp256_k1_a = FiniteFieldElement::new(U512::from(37u8), p);
@ -139,6 +147,7 @@ fn main() {
b: secp256_k1_b, b: secp256_k1_b,
} }
}; };
let r = U512::from_str_radix("7", 10).unwrap(); let r = U512::from_str_radix("7", 10).unwrap();
let f = EllipticCurvePoint::weil(pp, pd, r); let f = EllipticCurvePoint::weil(pp, pd, r);
@ -149,11 +158,11 @@ fn main() {
let q = pp * s; let q = pp * s;
let qd = pd * sd; let qd = pd * sd;
let ra = U512::from_str_radix("1", 10).unwrap(); let ra = U512::from_str_radix("20", 10).unwrap();
let rad = U512::from_str_radix("26", 10).unwrap(); let rad = U512::from_str_radix("26", 10).unwrap();
let m = U512::from_str_radix("2", 10).unwrap(); let m = U512::from_str_radix("2", 10).unwrap();
let md = U512::from_str_radix("3", 10).unwrap(); let md = U512::from_str_radix("2", 10).unwrap();
let s1 = pp * m + q * ra; let s1 = pp * m + q * ra;
let t1 = pp * ra; let t1 = pp * ra;
@ -264,7 +273,7 @@ fn generate_encryption() -> Encryption {
} }
} }
fn o_main() { fn main() {
env::set_var("RUST_LOG", "info"); env::set_var("RUST_LOG", "info");
env_logger::init(); env_logger::init();
let args = Args::parse(); let args = Args::parse();
@ -434,8 +443,10 @@ fn client(args: Args) {
let mut file = File::create("gpsl_conf.toml").unwrap(); let mut file = File::create("gpsl_conf.toml").unwrap();
let config_file = ConfigFile::from_config(config.clone()); let config_file = ConfigFile::from_config(config.clone());
file.write_all(serde_json::to_string(&config_file).unwrap().as_bytes()) let mut e = ZlibEncoder::new(Vec::new(), Compression::default());
e.write_all(toml::to_string(&config_file).unwrap().as_bytes())
.unwrap(); .unwrap();
file.write_all(&e.finish().unwrap()).unwrap();
config config
}; };