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.
version = 3
[[package]]
name = "adler"
version = "1.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe"
[[package]]
name = "aho-corasick"
version = "0.7.18"
@ -126,6 +132,15 @@ dependencies = [
"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]]
name = "crunchy"
version = "0.2.2"
@ -140,6 +155,7 @@ dependencies = [
"bigdecimal",
"clap",
"env_logger",
"flate2",
"log",
"primitive-types",
"rand 0.7.3",
@ -175,6 +191,16 @@ dependencies = [
"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]]
name = "funty"
version = "2.0.0"
@ -302,6 +328,15 @@ version = "2.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
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]]
name = "num-bigint"
version = "0.4.3"

View File

@ -18,3 +18,4 @@ serde = { version = "1.0", features = ["derive"] }
serde_json = "*"
base64 = "*"
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="
public_key = "eyJQb2ludCI6eyJ4Ijp7InZhbHVlIjoiMHg1NDhlZWQwYzNlYzc5OTJlMzhhODkyNGJjMDk4NTZmZDcwOTNjZDIyZjQ3N2ZjNjA0OGQ3ZWYxNjJhNDM3Y2UiLCJwIjoiMHhmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZWZmZmZmYzJmIn0sInkiOnsidmFsdWUiOiIweGU3OTVlNGZmMDdlOTYyYmUzNzFlYmJhYWVlYWI2ZDBkZmVlNjg5YmQ3MzlmYjk5MGI1NmE0NDQxZTJhZGFiNzIiLCJwIjoiMHhmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZWZmZmZmYzJmIn0sImEiOnsidmFsdWUiOiIweDAiLCJwIjoiMHhmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZWZmZmZmYzJmIn0sImIiOnsidmFsdWUiOiIweDciLCJwIjoiMHhmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZWZmZmZmYzJmIn19fQ=="
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

View File

@ -112,6 +112,7 @@ pub const STD_FUNC: fn(
};
let ec = encryption.plain_to_ec_point(plain);
let eep = encryption.encrypt(ec, data.public_key.unwrap(), None);
println!("{}", ec);
ExternalFuncReturn {
status: ExternalFuncStatus::SUCCESS,
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"),
};
let plain = Encryption::decrypt(eep, data.private_key.unwrap());
println!("{}", plain);
let plain = encryption.ec_point_to_plain(plain);
ExternalFuncReturn {
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::EllipticCurvePoint;
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::ExternalFuncStatus;
use gpsl::node::Node;
@ -17,6 +20,7 @@ use serde::Deserialize;
use serde::Serialize;
use std::env;
use std::fs::File;
use std::io::prelude::*;
use std::io::BufRead;
use std::io::BufReader;
use std::io::Read;
@ -71,9 +75,12 @@ struct Config {
impl Config {
fn read_file(file: &str) -> String {
let mut file = fs::File::open(file).unwrap();
let mut contents = String::new();
file.read_to_string(&mut contents).unwrap();
contents
let mut contents = Vec::new();
file.read_to_end(&mut contents).unwrap();
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 {
let file = Config::read_file(file);
@ -83,7 +90,7 @@ impl Config {
if let Some(private_key) = config.private_key {
let decoded = base64::decode(&private_key).unwrap();
let s = std::str::from_utf8(&decoded).unwrap();
Some(U512::from_str(s).unwrap())
Some(U512::from_str_radix(s, 10).unwrap())
} else {
None
}
@ -93,7 +100,8 @@ impl Config {
if let Some(public_key) = config.public_key {
let decoded = base64::decode(&public_key).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 {
None
}
@ -113,7 +121,7 @@ impl Config {
[Mod(4767914906170010398, 6139062703770505681), Mod(2445476831433994309, 6139062703770505681)]]]
*/
fn main() {
fn o_main() {
let p = U512::from_str_radix("1009", 10).unwrap();
let secp256_k1_a = FiniteFieldElement::new(U512::from(37u8), p);
@ -139,6 +147,7 @@ fn main() {
b: secp256_k1_b,
}
};
let r = U512::from_str_radix("7", 10).unwrap();
let f = EllipticCurvePoint::weil(pp, pd, r);
@ -149,11 +158,11 @@ fn main() {
let q = pp * s;
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 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 t1 = pp * ra;
@ -264,7 +273,7 @@ fn generate_encryption() -> Encryption {
}
}
fn o_main() {
fn main() {
env::set_var("RUST_LOG", "info");
env_logger::init();
let args = Args::parse();
@ -434,8 +443,10 @@ fn client(args: Args) {
let mut file = File::create("gpsl_conf.toml").unwrap();
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();
file.write_all(&e.finish().unwrap()).unwrap();
config
};