use std::sync::Arc; use std::hash::{Hash, Hasher};
use std::collections::hash_map::DefaultHasher; use std::error::Error;
use std::fmt;
use sha2::{Sha512, Digest};
pub mod zkp;
pub use zkp::{ ZkpChallenge, ZkpValidityResponse, establish_zkp_sqs, generate_zkp_challenge };
pub type Sha512Hash = [u8; 64];
const PHI: f64 = 1.618033988749895;
const RESONANCE_FREQ: f64 = PHI / (2.0 * std::f64::consts::PI);
#[derive(Debug, Clone, PartialEq)] pub struct EncodedUnit {
pub modulated_phase: f64,
pub integrity_hash: [u8; 64],
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum QfeError {
SqsEstablishmentFailed(String),
EncodingFailed(String),
DecodingFailed(String),
InvalidUtf8(std::string::FromUtf8Error),
FrameInvalid,
SqsMissing,
InternalError(String),
}
impl fmt::Display for QfeError {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
QfeError::SqsEstablishmentFailed(s) => write!(f, "SQS Establishment Failed: {}", s),
QfeError::EncodingFailed(s) => write!(f, "Encoding Failed: {}", s),
QfeError::DecodingFailed(s) => write!(f, "Decoding Failed: {}", s),
QfeError::InvalidUtf8(e) => write!(f, "Decoded data is not valid UTF-8: {}", e),
QfeError::FrameInvalid => write!(f, "Operation failed: Frame is in an invalid state"),
QfeError::SqsMissing => write!(f, "Operation failed: SQS component is missing"),
QfeError::InternalError(s) => write!(f, "Internal QFE error: {}", s),
}
}
}
impl Error for QfeError {}
#[derive(Clone, PartialEq)] pub struct Sqs {
pattern_type: PatternType,
pub components: Vec<u8>,
pub shared_phase_lock: f64,
resonance_freq: f64,
validation: bool,
}
impl fmt::Debug for Sqs {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
f.debug_struct("Sqs")
.field("pattern_type", &self.pattern_type)
.field("components_len", &self.components.len())
.field("components_hash", &{
let mut hasher = DefaultHasher::new(); self.components.hash(&mut hasher);
format!("{:x}", hasher.finish())
})
.field("shared_phase_lock", &self.shared_phase_lock)
.field("resonance_freq", &self.resonance_freq)
.field("validation", &self.validation)
.finish()
}
}
#[derive(Debug, Clone)]
pub struct Frame {
id: String,
node: DistinctionNode,
frame_structure: ReferenceFrame,
phase: f64,
sqs_component: Option<Arc<Sqs>>,
validation_status: bool,
pub zkp_witness: Option<Vec<u8>>,
}
#[derive(Clone, Hash, PartialEq, Eq)]
struct DistinctionNode {
id: u64,
}
impl fmt::Debug for DistinctionNode {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
f.debug_struct("DistinctionNode")
.field("id", &format!("{:x}", self.id)) .finish()
}
}
#[derive(Clone, Hash, PartialEq, Eq)]
struct ReferenceFrame {
structural_id: u128,
}
impl ReferenceFrame {
fn new(seed: u64) -> Self {
let mut hasher = DefaultHasher::new();
seed.hash(&mut hasher);
PHI.to_bits().hash(&mut hasher);
ReferenceFrame {
structural_id: hasher.finish() as u128,
}
}
}
impl fmt::Debug for ReferenceFrame {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
f.debug_struct("ReferenceFrame")
.field("structural_id", &format!("{:x}", self.structural_id)) .finish()
}
}
#[derive(Debug, Clone, PartialEq)]
enum PatternType {
Sqs, }
impl Frame {
pub fn initialize(id: String, initial_seed: u64) -> Self {
let mut node_hasher = DefaultHasher::new();
initial_seed.hash(&mut node_hasher);
"node".hash(&mut node_hasher); let node = DistinctionNode { id: node_hasher.finish() };
let frame_structure = ReferenceFrame::new(initial_seed);
let mut phase_hasher = DefaultHasher::new();
initial_seed.hash(&mut phase_hasher);
"phase".hash(&mut phase_hasher); PHI.to_bits().hash(&mut phase_hasher);
let phase = (phase_hasher.finish() as f64 / u64::MAX as f64) * 2.0 * std::f64::consts::PI;
Frame {
id,
node,
frame_structure,
phase,
sqs_component: None,
validation_status: true, zkp_witness: None,
}
}
pub fn has_sqs(&self) -> bool {
self.sqs_component.is_some() && self.validation_status
}
pub fn get_sqs(&self) -> Option<&Arc<Sqs>> {
if !self.validation_status { return None; }
self.sqs_component.as_ref()
}
fn calculate_interaction_aspect(&self) -> u64 {
let mut hasher = DefaultHasher::new();
self.node.hash(&mut hasher);
self.frame_structure.hash(&mut hasher);
self.phase.to_bits().hash(&mut hasher); hasher.finish()
}
pub fn id(&self) -> &str {
&self.id
}
pub fn encode(&self, message: &[u8]) -> Result<Vec<EncodedUnit>, QfeError> {
if !self.has_sqs() {
return Err(QfeError::SqsMissing);
}
if !self.validation_status {
return Err(QfeError::FrameInvalid); }
let sqs = self.sqs_component.as_ref()
.ok_or(QfeError::InternalError("SQS missing despite check.".to_string()))?;
let mut encoded_signal = Vec::with_capacity(message.len());
let mut current_phase = sqs.shared_phase_lock;
for &byte in message {
let phase_shift = calculate_phase_shift_from_byte(byte);
let next_phase = (current_phase + phase_shift).rem_euclid(2.0 * std::f64::consts::PI);
let integrity_hash = calculate_integrity_hash_sha512(byte, &sqs.components);
encoded_signal.push(EncodedUnit {
modulated_phase: next_phase,
integrity_hash,
});
current_phase = next_phase;
}
Ok(encoded_signal)
}
pub fn decode(&mut self, encoded_signal: &[EncodedUnit]) -> Result<Vec<u8>, QfeError> {
if !self.has_sqs() {
return Err(QfeError::SqsMissing);
}
if !self.validation_status {
return Err(QfeError::FrameInvalid);
}
let sqs = self.sqs_component.as_ref()
.ok_or(QfeError::InternalError("SQS missing despite check.".to_string()))?;
let mut decoded_message = Vec::with_capacity(encoded_signal.len());
let mut previous_phase = sqs.shared_phase_lock;
for (index, unit) in encoded_signal.iter().enumerate() {
let current_modulated_phase = unit.modulated_phase;
let phase_shift = (current_modulated_phase - previous_phase)
.rem_euclid(2.0 * std::f64::consts::PI);
let Some(reconstructed_byte) = reconstruct_byte_from_phase_shift(phase_shift) else {
self.validation_status = false;
return Err(QfeError::DecodingFailed(format!(
"At index {}: Invalid phase shift ({:.4}) detected. Possible tampering or transmission error.",
index, phase_shift
)));
};
let expected_hash = calculate_integrity_hash_sha512(reconstructed_byte, &sqs.components);
if expected_hash != unit.integrity_hash {
self.validation_status = false; return Err(QfeError::DecodingFailed(format!(
"At index {}: Integrity check mismatch. Tampering suspected or wrong SQS used.",
index
)));
}
decoded_message.push(reconstructed_byte);
previous_phase = current_modulated_phase;
}
Ok(decoded_message)
}
pub fn encode_str(&self, message: &str) -> Result<Vec<EncodedUnit>, QfeError> {
if !self.validation_status { return Err(QfeError::FrameInvalid); }
self.encode(message.as_bytes())
}
pub fn decode_to_str(&mut self, encoded_signal: &[EncodedUnit]) -> Result<String, QfeError> {
if !self.validation_status { return Err(QfeError::FrameInvalid); } let decoded_bytes = self.decode(encoded_signal)?;
String::from_utf8(decoded_bytes).map_err(QfeError::InvalidUtf8)
}
pub fn is_valid(&self) -> bool {
self.validation_status
}
}
pub fn setup_qfe_pair(
id_a: String,
seed_a: u64,
id_b: String,
seed_b: u64,
) -> Result<(Frame, Frame), QfeError> {
let mut frame_a = Frame::initialize(id_a, seed_a);
let mut frame_b = Frame::initialize(id_b, seed_b);
establish_sqs(&mut frame_a, &mut frame_b)?;
Ok((frame_a, frame_b))
}
pub fn establish_sqs(frame_a: &mut Frame, frame_b: &mut Frame) -> Result<(), QfeError> {
if !frame_a.validation_status || !frame_b.validation_status {
return Err(QfeError::FrameInvalid);
}
if frame_a.sqs_component.is_some() || frame_b.sqs_component.is_some() {
return Err(QfeError::SqsEstablishmentFailed(
"SQS already established".to_string(),
));
}
let aspect_a = frame_a.calculate_interaction_aspect(); let aspect_b = frame_b.calculate_interaction_aspect();
let shared_components = derive_shared_components_sha512(aspect_a, frame_a.phase, aspect_b, frame_b.phase);
let weight_a = (aspect_a % 1000 + 1) as f64;
let weight_b = (aspect_b % 1000 + 1) as f64;
let total_weight = weight_a + weight_b;
let shared_phase_lock = (frame_a.phase * weight_a + frame_b.phase * weight_b) / total_weight;
let shared_phase_lock = shared_phase_lock.rem_euclid(2.0 * std::f64::consts::PI);
let c1_check = shared_phase_lock.is_finite();
let c3_check = !shared_components.is_empty() && shared_components.len() == 64;
let validation_passed = c1_check && c3_check;
if validation_passed {
let sqs = Arc::new(Sqs {
pattern_type: PatternType::Sqs,
components: shared_components, shared_phase_lock,
resonance_freq: RESONANCE_FREQ,
validation: true,
});
frame_a.sqs_component = Some(Arc::clone(&sqs));
frame_b.sqs_component = Some(sqs);
Ok(())
} else {
frame_a.validation_status = false;
frame_b.validation_status = false;
Err(QfeError::SqsEstablishmentFailed(format!(
"Validation failed: PhaseCoherenceCheck(ValidNumber)={}, PatternResonanceCheck(NonTrivial SHA512)={}", c1_check, c3_check
)))
}
}
fn calculate_integrity_hash_sha512(byte: u8, sqs_components: &[u8]) -> [u8; 64] {
let mut hasher = Sha512::new();
hasher.update([byte]); hasher.update(sqs_components); hasher.update(RESONANCE_FREQ.to_le_bytes()); hasher.update(PHI.to_le_bytes());
hasher.finalize().into()
}
fn derive_shared_components_sha512(aspect1: u64, phase1: f64, aspect2: u64, phase2: f64) -> Vec<u8> {
let mut hasher = Sha512::new();
if aspect1 < aspect2 {
hasher.update(aspect1.to_le_bytes());
hasher.update(aspect2.to_le_bytes());
} else {
hasher.update(aspect2.to_le_bytes());
hasher.update(aspect1.to_le_bytes());
}
let phase_combined = (phase1 + phase2) * PHI;
hasher.update(phase_combined.to_le_bytes());
hasher.update(RESONANCE_FREQ.to_le_bytes());
hasher.update(PHI.to_le_bytes());
hasher.finalize().to_vec()
}
const MAX_PHASE_SHIFT_PER_BYTE: f64 = (2.0 * std::f64::consts::PI) / (PHI * PHI * 4.0);
fn calculate_phase_shift_from_byte(byte: u8) -> f64 {
(byte as f64 / 255.0) * MAX_PHASE_SHIFT_PER_BYTE
}
fn reconstruct_byte_from_phase_shift(shift: f64) -> Option<u8> {
let tolerance = 1e-9;
if !(0.0..=MAX_PHASE_SHIFT_PER_BYTE + tolerance).contains(&shift) {
return None;
}
let byte_f = (shift / MAX_PHASE_SHIFT_PER_BYTE) * 255.0;
Some(byte_f.round().clamp(0.0, 255.0) as u8)
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_frame_initialization_deterministic() {
let frame1 = Frame::initialize("Test".to_string(), 12345);
let frame2 = Frame::initialize("Test".to_string(), 12345);
assert_eq!(frame1.node, frame2.node);
assert_eq!(frame1.frame_structure, frame2.frame_structure);
assert_eq!(frame1.phase, frame2.phase);
assert_eq!(frame1.id, frame2.id);
}
#[test]
fn test_frame_initialization_unique() {
let frame1 = Frame::initialize("Test1".to_string(), 12345);
let frame2 = Frame::initialize("Test2".to_string(), 54321);
assert_ne!(frame1.node, frame2.node); assert_ne!(frame1.frame_structure, frame2.frame_structure);
assert_ne!(frame1.phase, frame2.phase); }
#[test]
fn test_sqs_establishment_success_and_shared() {
let mut frame_a = Frame::initialize("FrameA".to_string(), 111);
let mut frame_b = Frame::initialize("FrameB".to_string(), 222);
let result = establish_sqs(&mut frame_a, &mut frame_b);
println!("Sqs Establishment Result: {:?}", result); assert!(result.is_ok());
assert!(frame_a.has_sqs());
assert!(frame_b.has_sqs());
assert!(frame_a.validation_status);
assert!(frame_b.validation_status);
let sqs_a = frame_a.get_sqs().unwrap();
let sqs_b = frame_b.get_sqs().unwrap();
assert!(Arc::ptr_eq(sqs_a, sqs_b));
println!("Sqs A: {:?}", sqs_a);
println!("Sqs B: {:?}", sqs_b);
assert_eq!(sqs_a.pattern_type, PatternType::Sqs);
assert!(!sqs_a.components.is_empty());
assert!(sqs_a.components.len() >= 8); assert_eq!(sqs_a.resonance_freq, RESONANCE_FREQ);
assert_eq!(sqs_a.components.len(), 64, "SQS components should be 64 bytes for SHA-512");
assert!(sqs_a.validation); }
#[test]
fn test_sqs_establishment_deterministic_result() {
let mut frame_a1 = Frame::initialize("A1".to_string(), 111);
let mut frame_b1 = Frame::initialize("B1".to_string(), 222);
let _ = establish_sqs(&mut frame_a1, &mut frame_b1);
let sqs1_data = frame_a1.get_sqs().unwrap().as_ref().clone();
let mut frame_a2 = Frame::initialize("A2".to_string(), 111); let mut frame_b2 = Frame::initialize("B2".to_string(), 222); let _ = establish_sqs(&mut frame_a2, &mut frame_b2);
let sqs2_data = frame_a2.get_sqs().unwrap().as_ref().clone();
assert_eq!(sqs1_data.components, sqs2_data.components);
assert_eq!(sqs1_data.shared_phase_lock, sqs2_data.shared_phase_lock);
assert_eq!(sqs1_data.validation, sqs2_data.validation);
}
#[test]
fn test_sqs_establishment_different_seeds_produce_different_sqs() {
let mut frame_a1 = Frame::initialize("A".to_string(), 111);
let mut frame_b1 = Frame::initialize("B".to_string(), 222);
let _ = establish_sqs(&mut frame_a1, &mut frame_b1);
let sqs1_data = frame_a1.get_sqs().unwrap().as_ref().clone();
let mut frame_a2 = Frame::initialize("A".to_string(), 333); let mut frame_b2 = Frame::initialize("B".to_string(), 444);
let _ = establish_sqs(&mut frame_a2, &mut frame_b2);
let sqs2_data = frame_a2.get_sqs().unwrap().as_ref().clone();
assert_ne!(sqs1_data.components, sqs2_data.components);
}
#[test]
fn test_establish_sqs_fails_if_already_established() {
let mut frame_a = Frame::initialize("A".to_string(), 1);
let mut frame_b = Frame::initialize("B".to_string(), 2);
assert!(establish_sqs(&mut frame_a, &mut frame_b).is_ok()); let result = establish_sqs(&mut frame_a, &mut frame_b);
assert!(result.is_err());
assert_eq!(result.unwrap_err(), QfeError::SqsEstablishmentFailed("SQS already established".to_string()));
}
#[test]
fn test_establish_sqs_fails_if_validation_fails() {
let mut frame_a = Frame::initialize("A_fail".to_string(), 0); let mut frame_b = Frame::initialize("B_fail".to_string(), 0);
let result = establish_sqs(&mut frame_a, &mut frame_b);
if result.is_err() {
println!("Sqs Establishment failed as expected: {}", result.unwrap_err());
assert!(!frame_a.validation_status); assert!(!frame_b.validation_status);
assert!(!frame_a.has_sqs());
assert!(!frame_b.has_sqs());
} else {
println!("Warning: Test designed to fail validation passed instead.");
}
}
fn setup_frames_for_encoding() -> (Frame, Frame) {
let mut frame_a = Frame::initialize("A_encdec".to_string(), 987);
let mut frame_b = Frame::initialize("B_encdec".to_string(), 654);
establish_sqs(&mut frame_a, &mut frame_b).expect("Sqs setup failed for encoding test");
(frame_a, frame_b)
}
#[test]
fn test_encode_decode_basic_string() {
let (frame_a, mut frame_b) = setup_frames_for_encoding();
let message_str = "Hello, QFE World!";
let message_bytes = message_str.as_bytes();
let encoded = frame_a.encode(message_bytes).expect("Encoding failed");
assert_eq!(encoded.len(), message_bytes.len(), "Encoded length mismatch");
if let Some(unit) = encoded.first() {
assert_eq!(unit.integrity_hash.len(), 64, "Integrity hash should be 64 bytes");
}
let decoded_bytes = frame_b.decode(&encoded).expect("Decoding failed");
assert_eq!(decoded_bytes, message_bytes, "Decoded bytes mismatch");
let decoded_str = String::from_utf8(decoded_bytes).expect("Invalid UTF-8");
assert_eq!(decoded_str, message_str, "Decoded string mismatch");
}
#[test]
fn test_encode_decode_all_byte_values() {
let (frame_a, mut frame_b) = setup_frames_for_encoding();
let all_bytes: Vec<u8> = (0..=255).collect();
let encoded = frame_a.encode(&all_bytes).expect("Encoding all bytes failed");
assert_eq!(encoded.len(), all_bytes.len());
let decoded = frame_b.decode(&encoded).expect("Decoding all bytes failed");
assert_eq!(decoded, all_bytes);
}
#[test]
fn test_encode_decode_empty_message() {
let (frame_a, mut frame_b) = setup_frames_for_encoding();
let empty_message: Vec<u8> = Vec::new();
let encoded = frame_a.encode(&empty_message).expect("Encoding empty failed");
assert!(encoded.is_empty());
let decoded = frame_b.decode(&encoded).expect("Decoding empty failed");
assert!(decoded.is_empty());
assert_eq!(decoded, empty_message);
}
#[test]
fn test_decode_fails_on_tampered_integrity_hash() {
let (frame_a, mut frame_b) = setup_frames_for_encoding();
let message = b"Secret Data";
let mut encoded = frame_a.encode(message).expect("Encoding failed");
if !encoded.is_empty() {
encoded[0].integrity_hash[0] ^= 0x01; }
let result = frame_b.decode(&encoded);
assert!(result.is_err());
let err = result.unwrap_err();
println!("Tampered Hash Decode Error: {}", err); if let QfeError::DecodingFailed(msg) = &err {
assert!(msg.contains("Integrity check mismatch"), "Expected integrity error msg, got: {}", msg);
assert!(msg.contains("index 0"), "Error should mention index 0");
} else {
panic!("Expected DecodingFailed error variant, got {:?}", err);
}
assert!(!frame_b.validation_status); }
#[test]
fn test_decode_fails_on_tampered_modulated_phase() {
let (frame_a, mut frame_b) = setup_frames_for_encoding();
let message = b"Top Secret";
let mut encoded = frame_a.encode(message).expect("Encoding failed");
if encoded.len() > 1 {
encoded[1].modulated_phase = (encoded[1].modulated_phase + std::f64::consts::PI) .rem_euclid(2.0 * std::f64::consts::PI);
}
let result = frame_b.decode(&encoded);
assert!(result.is_err());
let err = result.unwrap_err();
println!("Tampered Phase Decode Error: {}", err); assert!(
matches!(&err, QfeError::DecodingFailed(s) if s.contains("Invalid phase shift") || s.contains("Integrity check mismatch")),
"Expected DecodingFailed (phase or integrity), got {:?}", err
);
assert!(!frame_b.validation_status); }
#[test]
fn test_decode_fails_with_wrong_sqs_context() {
let (frame_a, _frame_b) = setup_frames_for_encoding();
let message = b"Intended for B";
let encoded = frame_a.encode(message).expect("Encoding failed");
let mut frame_c = Frame::initialize("C_decode".to_string(), 1122);
let mut frame_d = Frame::initialize("D_decode".to_string(), 3344);
establish_sqs(&mut frame_c, &mut frame_d).expect("Sqs C-D setup failed");
let result = frame_c.decode(&encoded); assert!(result.is_err());
let err = result.unwrap_err();
println!("Wrong SQS Decode Error: {}", err);
assert!(
matches!(
&err, QfeError::DecodingFailed(s) if s.contains("Integrity check mismatch") ||
s.contains("Invalid phase shift")
),
"Expected DecodingFailed (integrity or phase shift) for wrong SQS, got {:?}", err
);
assert!(!frame_c.validation_status); }
#[test]
fn encode_fails_if_frame_has_no_sqs() {
let frame_no_sqs = Frame::initialize("NoSqs_Enc".to_string(), 1);
let message = b"test";
let result = frame_no_sqs.encode(message);
assert!(result.is_err());
assert_eq!(result.unwrap_err(), QfeError::SqsMissing);
}
#[test]
fn decode_fails_if_frame_has_no_sqs() {
let mut frame_no_sqs = Frame::initialize("NoSqs_Dec".to_string(), 1);
let encoded_signal = vec![EncodedUnit { modulated_phase: 1.0, integrity_hash: [0u8; 64] }];
let result = frame_no_sqs.decode(&encoded_signal);
assert!(result.is_err());
assert_eq!(result.unwrap_err(), QfeError::SqsMissing);
}
}