From d3269d185fd4a6d1891b02dbe5dcfd9232e7face Mon Sep 17 00:00:00 2001 From: Brandon Thomas Date: Tue, 28 Oct 2025 20:26:34 -0400 Subject: [PATCH] working --- .../generate_sign_for_new_conversation.rs | 55 +++++++++++++++---- 1 file changed, 44 insertions(+), 11 deletions(-) diff --git a/crates/api_clients/grok_client/src/requests/index_page/signature/generate_sign_for_new_conversation.rs b/crates/api_clients/grok_client/src/requests/index_page/signature/generate_sign_for_new_conversation.rs index 7a0c7ac39d..a30bfb1499 100644 --- a/crates/api_clients/grok_client/src/requests/index_page/signature/generate_sign_for_new_conversation.rs +++ b/crates/api_clients/grok_client/src/requests/index_page/signature/generate_sign_for_new_conversation.rs @@ -1,13 +1,13 @@ -use std::ops::Sub; -use base64::Engine; +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; use base64::prelude::BASE64_STANDARD; +use base64::Engine; 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; +use std::ops::Sub; /* xsid: str = Signature.generate_sign('/rest/app-chat/conversations/new', 'POST', self.verification_token, self.svg_data, self.numbers) @@ -51,7 +51,7 @@ pub struct GenerateSignArgs<'a> { pub numbers: &'a [u8], } -pub fn generate_sign(args: GenerateSignArgs<'_>) -> Result<(), GrokClientError> { +pub fn generate_sign(args: GenerateSignArgs<'_>) -> Result { let t = 1761646073; // TODO: REPLACE //let n = Utc::now().timestamp() - 1682924400; @@ -91,7 +91,6 @@ pub fn generate_sign(args: GenerateSignArgs<'_>) -> Result<(), GrokClientError> // 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(); @@ -119,21 +118,53 @@ pub fn generate_sign(args: GenerateSignArgs<'_>) -> Result<(), GrokClientError> println!("assembled = {:?}", assembled); - Ok(()) + /* + arr = bytearray(assembled) + if len(arr) > 0: + first = arr[0] + for i in range(1, len(arr)): + arr[i] = arr[i] ^ first + */ + + let mut arr = assembled.clone(); + + // NB: Does not appear to be needed because the first byte is always "0" (for now) + //if arr.len() > 0 { + // let first = *arr.get(0).ok_or(GrokClientError::BadSignatureInputs)?; + // for i in 1..arr.len() { + // let mut a = arr.get_mut(i).ok_or(GrokClientError::BadSignatureInputs)?; + // let av = *a; + // let bv = av ^ first; + // *a = bv; + // } + //} + + println!("arr = {:?}", arr); + + // Uses + and / + //encoded = b64encode(bytes(arr)).decode('ascii').replace('=', '') + + let encoded_bytes = BASE64_STANDARD.encode(arr); + let encoded_bytes = encoded_bytes.replace("=", ""); + + println!("encoded_bytes = {:?}", encoded_bytes); + + Ok(encoded_bytes) } #[cfg(test)] mod tests { - use errors::AnyhowResult; use crate::requests::index_page::index_parsers::parse_index_verification_token::VerificationToken; use crate::requests::index_page::signature::generate_sign_for_new_conversation::{generate_sign, GenerateSignArgs}; + use errors::AnyhowResult; #[test] fn test() -> AnyhowResult<()> { let ver = VerificationToken("yt16CWiUI42s7wGGeMxcdEIT2miPF5PVOGZF1Jcae7K7HMQrLeI4RTYufmdfBIZU".to_string()); let svg_data = "M 10,30 C 147,16 51,222 136,87 h 31 s 177,77 40,114 C 68,166 18,188 114,44 h 220 s 148,210 202,25 C 220,36 246,218 12,120 h 244 s 34,154 56,161 C 211,204 208,60 174,14 h 155 s 157,116 220,95 C 116,164 53,210 174,232 h 139 s 148,151 135,221 C 167,196 118,27 149,247 h 233 s 129,238 113,21 C 73,44 215,158 218,29 h 68 s 13,98 243,134 C 44,98 149,35 20,178 h 163 s 219,104 41,152 C 237,107 118,120 127,117 h 57 s 41,167 43,136 C 116,168 44,246 182,209 h 143 s 238,93 237,119 C 142,36 64,67 97,111 h 71 s 230,247 119,27 C 206,56 158,51 71,115 h 135 s 120,186 74,57 C 197,165 180,214 102,16 h 88 s 252,48 189,166 C 163,237 57,253 154,60 h 96 s 84,56 15,66 C 177,101 10,202 185,227 h 29 s 204,55 115,219 C 103,82 127,143 194,99 h 102 s 179,63 84,110"; - let result = generate_sign(GenerateSignArgs { + + let observed = generate_sign(GenerateSignArgs { path: "/rest/app-chat/conversations/new", method: "POST", verification_token: &ver, @@ -141,7 +172,9 @@ mod tests { numbers: &[40, 18, 3, 18], })?; - assert_eq!(1,2); + let expected = "AMrdeglolCONrO8BhnjMXHRCE9pojxeT1ThmRdSXGnuyuxzEKy3iOEU2Ln5nXwSGVIkysQRoLOMjee3yLtjtJXbPVwjgAw"; + + assert_eq!(&observed, expected); Ok(()) } }