This commit is contained in:
Brandon Thomas committed 2025-10-28 20:12:48 -04:00
1 parent b7739295a8
commit 0eb2f9f79c
4 files changed
+109 -7

No files matched your search

Generated
+62 -6
View File
@@ -1523,6 +1523,15 @@ dependencies = [
"generic-array",
]
[[package]]
name = "block-buffer"
version = "0.11.0-rc.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e9ef36a6fcdb072aa548f3da057640ec10859eb4e91ddf526ee648d50c76a949"
dependencies = [
"hybrid-array",
]
[[package]]
name = "block-modes"
version = "0.8.1"
@@ -2088,7 +2097,7 @@ version = "0.4.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad"
dependencies = [
"crypto-common",
"crypto-common 0.1.6",
"inout",
]
@@ -2349,6 +2358,12 @@ version = "0.9.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8"
[[package]]
name = "const-oid"
version = "0.10.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0dabb6555f92fb9ee4140454eb5dcd14c7960e1225c6d1a6cc361f032947713e"
[[package]]
name = "const-random"
version = "0.1.18"
@@ -2657,6 +2672,15 @@ dependencies = [
"typenum",
]
[[package]]
name = "crypto-common"
version = "0.2.0-rc.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6a8235645834fbc6832939736ce2f2d08192652269e11010a6240f61b908a1c6"
dependencies = [
"hybrid-array",
]
[[package]]
name = "crypto-mac"
version = "0.10.0"
@@ -2960,7 +2984,7 @@ version = "0.7.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fffa369a668c8af7dbf8b5e56c9f744fbd399949ed171606040001947de40b1c"
dependencies = [
"const-oid",
"const-oid 0.9.6",
"pem-rfc7468",
"zeroize",
]
@@ -3184,11 +3208,22 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292"
dependencies = [
"block-buffer 0.10.4",
"const-oid",
"crypto-common",
"const-oid 0.9.6",
"crypto-common 0.1.6",
"subtle",
]
[[package]]
name = "digest"
version = "0.11.0-rc.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dac89f8a64533a9b0eaa73a68e424db0fb1fd6271c74cc0125336a05f090568d"
dependencies = [
"block-buffer 0.11.0-rc.5",
"const-oid 0.10.1",
"crypto-common 0.2.0-rc.4",
]
[[package]]
name = "diligent-date-parser"
version = "0.1.4"
@@ -4697,6 +4732,7 @@ dependencies = [
"scraper 0.24.0",
"serde",
"serde_json",
"sha2 0.11.0-rc.2",
"test_data",
"testing",
"tokio",
@@ -5160,6 +5196,15 @@ version = "2.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4"
[[package]]
name = "hybrid-array"
version = "0.4.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f471e0a81b2f90ffc0cb2f951ae04da57de8baa46fa99112b062a5173a5088d0"
dependencies = [
"typenum",
]
[[package]]
name = "hyper"
version = "0.14.28"
@@ -9225,7 +9270,7 @@ version = "0.9.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5d0e5124fcb30e76a7e79bfee683a2746db83784b86289f6251b54b7950a0dfc"
dependencies = [
"const-oid",
"const-oid 0.9.6",
"digest 0.10.7",
"num-bigint-dig",
"num-integer",
@@ -10206,6 +10251,17 @@ dependencies = [
"digest 0.10.7",
]
[[package]]
name = "sha2"
version = "0.11.0-rc.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d1e3878ab0f98e35b2df35fe53201d088299b41a6bb63e3e34dada2ac4abd924"
dependencies = [
"cfg-if 1.0.0",
"cpufeatures",
"digest 0.11.0-rc.3",
]
[[package]]
name = "sha3"
version = "0.10.8"
@@ -13984,7 +14040,7 @@ dependencies = [
"cookie 0.18.1",
"core-foundation-sys",
"crossbeam-utils 0.8.20",
"crypto-common",
"crypto-common 0.1.6",
"deranged",
"derive_more 0.99.17",
"digest 0.10.7",
+1
View File
@@ -250,6 +250,7 @@ serde = { version = "1.0.219", features = ["derive"] }
serde_derive = "1.0.219"
serde_json = "1.0.140"
serde_yaml = "0.9.34+deprecated"
sha2 = "0.11.0-rc.2"
sha3 = "0.10.8"
tauri = { version = "2.8.3", features = ["unstable", "devtools"] } # NB: "devtools" prevents App Store distribution; "ubstable" is needed for window access
tauri-plugin-dialog = "2.3.3"
@@ -33,6 +33,7 @@ regex.workspace = true
scraper = "0.24.0"
serde.workspace = true
serde_json.workspace = true
sha2.workspace = true
tokio = { version = "1", features = ["full"] }
url.workspace = true
uuid.workspace = true
@@ -4,9 +4,10 @@ use base64::prelude::BASE64_STANDARD;
use byteorder::{LittleEndian, WriteBytesExt};
use chrono::{TimeDelta, Utc};
use log::error;
use sha2::{Digest, Sha256};
use crate::error::grok_client_error::GrokClientError;
use crate::requests::index_page::index_parsers::parse_index_verification_token::VerificationToken;
use crate::requests::index_page::signature::signature_xs::signature_xs;
/*
xsid: str = Signature.generate_sign('/rest/app-chat/conversations/new', 'POST', self.verification_token, self.svg_data, self.numbers)
@@ -46,6 +47,7 @@ pub struct GenerateSignArgs<'a> {
pub svg_data: &'a str,
// "x_values"
pub numbers: &'a [u8],
}
@@ -75,6 +77,48 @@ pub fn generate_sign(args: GenerateSignArgs<'_>) -> Result<(), GrokClientError>
println!("r = {:?}", r);
// o = Signature.xs(r, svg, x_values)
let o = signature_xs(&r, &args.svg_data, &args.numbers)?;
// generate_sign.o 4320e30fd70a3d70a3d7028f5c28f5c28f6028f5c28f5c28f60fd70a3d70a3d700
println!("o = {:?}", o);
//msg = "!".join([method, path, str(n)]) + "obfiowerehiring" + o
let method = args.method;
let path = args.path;
let msg = format!("{method}!{path}!{n}obfiowerehiring{o}");
// POST!/rest/app-chat/conversations/new!78721673obfiowerehiring4320e30fd70a3d70a3d7028f5c28f5c28f6028f5c28f5c28f60fd70a3d70a3d700
println!("msg = {}", msg);
//digest = sha256(msg.encode('utf-8')).digest()[:16]
let digest_all_bytes = Sha256::digest(msg.as_bytes()).to_vec();
println!("digest_all_bytes = {:?}", digest_all_bytes);
if digest_all_bytes.len() < 16 {
error!("Digest is too short: {}", digest_all_bytes.len());
return Err(GrokClientError::BadSignatureInputs);
}
let digest : &[u8] = &digest_all_bytes[.. 16];
println!("digest = {:?}", digest);
//prefix_byte = int(floor(random() if not random_float else random_float * 256))
let prefix_byte = 0; // NB: This is bad code? floor(random) = 0 always.
//assembled = bytes([prefix_byte]) + r + t + digest + bytes([3])
let mut assembled = vec![prefix_byte];
assembled.extend(r);
assembled.extend(t);
assembled.extend(digest);
assembled.extend([3]);
println!("assembled = {:?}", assembled);
Ok(())
}