pub struct QuantumSignature { /* private fields */ }Expand description
Quantum digital signature
Implementations§
Source§impl QuantumSignature
impl QuantumSignature
Sourcepub fn new(security_bits: usize, algorithm: &str) -> Result<Self>
pub fn new(security_bits: usize, algorithm: &str) -> Result<Self>
Creates a new quantum signature
Examples found in repository?
examples/quantum_crypto.rs (line 136)
121fn run_signature_example() -> Result<()> {
122 println!("\nQuantum Digital Signatures");
123 println!("-------------------------");
124
125 // Create quantum signature with 256 qubits
126 let num_qubits = 256;
127 println!(
128 "Creating quantum signature scheme with {} qubits",
129 num_qubits
130 );
131
132 // Choose a quantum-resistant algorithm
133 let algorithm = "Dilithium";
134 println!("Using algorithm: {}", algorithm);
135
136 let signature = QuantumSignature::new(num_qubits, algorithm)?;
137 println!("Quantum signature scheme created");
138
139 // Sign a message
140 let message = b"This message is quantum-signed";
141 println!(
142 "Signing message: '{}'",
143 std::str::from_utf8(message).unwrap()
144 );
145
146 let start = Instant::now();
147 let sig = signature.sign(message)?;
148 println!("Signature generated in {:.2?}", start.elapsed());
149 println!("Signature size: {} bytes", sig.len());
150
151 // Verify signature
152 println!("Verifying signature...");
153 let start = Instant::now();
154 let is_valid = signature.verify(message, &sig)?;
155 println!("Verification completed in {:.2?}", start.elapsed());
156
157 if is_valid {
158 println!("✓ Signature verification successful!");
159 } else {
160 println!("✗ Signature verification failed!");
161 }
162
163 // Try with tampered message
164 let tampered = b"This message has been modified";
165 println!("Verifying signature with tampered message...");
166 let is_valid = signature.verify(tampered, &sig)?;
167
168 if is_valid {
169 println!("✗ Signature incorrectly verified on tampered message!");
170 } else {
171 println!("✓ Signature correctly rejected tampered message!");
172 }
173
174 Ok(())
175}Sourcepub fn sign(&self, message: &[u8]) -> Result<Vec<u8>>
pub fn sign(&self, message: &[u8]) -> Result<Vec<u8>>
Signs a message
Examples found in repository?
examples/quantum_crypto.rs (line 147)
121fn run_signature_example() -> Result<()> {
122 println!("\nQuantum Digital Signatures");
123 println!("-------------------------");
124
125 // Create quantum signature with 256 qubits
126 let num_qubits = 256;
127 println!(
128 "Creating quantum signature scheme with {} qubits",
129 num_qubits
130 );
131
132 // Choose a quantum-resistant algorithm
133 let algorithm = "Dilithium";
134 println!("Using algorithm: {}", algorithm);
135
136 let signature = QuantumSignature::new(num_qubits, algorithm)?;
137 println!("Quantum signature scheme created");
138
139 // Sign a message
140 let message = b"This message is quantum-signed";
141 println!(
142 "Signing message: '{}'",
143 std::str::from_utf8(message).unwrap()
144 );
145
146 let start = Instant::now();
147 let sig = signature.sign(message)?;
148 println!("Signature generated in {:.2?}", start.elapsed());
149 println!("Signature size: {} bytes", sig.len());
150
151 // Verify signature
152 println!("Verifying signature...");
153 let start = Instant::now();
154 let is_valid = signature.verify(message, &sig)?;
155 println!("Verification completed in {:.2?}", start.elapsed());
156
157 if is_valid {
158 println!("✓ Signature verification successful!");
159 } else {
160 println!("✗ Signature verification failed!");
161 }
162
163 // Try with tampered message
164 let tampered = b"This message has been modified";
165 println!("Verifying signature with tampered message...");
166 let is_valid = signature.verify(tampered, &sig)?;
167
168 if is_valid {
169 println!("✗ Signature incorrectly verified on tampered message!");
170 } else {
171 println!("✓ Signature correctly rejected tampered message!");
172 }
173
174 Ok(())
175}Sourcepub fn verify(&self, message: &[u8], signature: &[u8]) -> Result<bool>
pub fn verify(&self, message: &[u8], signature: &[u8]) -> Result<bool>
Verifies a signature
Examples found in repository?
examples/quantum_crypto.rs (line 154)
121fn run_signature_example() -> Result<()> {
122 println!("\nQuantum Digital Signatures");
123 println!("-------------------------");
124
125 // Create quantum signature with 256 qubits
126 let num_qubits = 256;
127 println!(
128 "Creating quantum signature scheme with {} qubits",
129 num_qubits
130 );
131
132 // Choose a quantum-resistant algorithm
133 let algorithm = "Dilithium";
134 println!("Using algorithm: {}", algorithm);
135
136 let signature = QuantumSignature::new(num_qubits, algorithm)?;
137 println!("Quantum signature scheme created");
138
139 // Sign a message
140 let message = b"This message is quantum-signed";
141 println!(
142 "Signing message: '{}'",
143 std::str::from_utf8(message).unwrap()
144 );
145
146 let start = Instant::now();
147 let sig = signature.sign(message)?;
148 println!("Signature generated in {:.2?}", start.elapsed());
149 println!("Signature size: {} bytes", sig.len());
150
151 // Verify signature
152 println!("Verifying signature...");
153 let start = Instant::now();
154 let is_valid = signature.verify(message, &sig)?;
155 println!("Verification completed in {:.2?}", start.elapsed());
156
157 if is_valid {
158 println!("✓ Signature verification successful!");
159 } else {
160 println!("✗ Signature verification failed!");
161 }
162
163 // Try with tampered message
164 let tampered = b"This message has been modified";
165 println!("Verifying signature with tampered message...");
166 let is_valid = signature.verify(tampered, &sig)?;
167
168 if is_valid {
169 println!("✗ Signature incorrectly verified on tampered message!");
170 } else {
171 println!("✓ Signature correctly rejected tampered message!");
172 }
173
174 Ok(())
175}Trait Implementations§
Source§impl Clone for QuantumSignature
impl Clone for QuantumSignature
Source§fn clone(&self) -> QuantumSignature
fn clone(&self) -> QuantumSignature
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreAuto Trait Implementations§
impl Freeze for QuantumSignature
impl RefUnwindSafe for QuantumSignature
impl Send for QuantumSignature
impl Sync for QuantumSignature
impl Unpin for QuantumSignature
impl UnwindSafe for QuantumSignature
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
The inverse inclusion map: attempts to construct
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
Checks if
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
Use with care! Same as
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
The inclusion map: converts
self to the equivalent element of its superset.Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
The inverse inclusion map: attempts to construct
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
Checks if
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
Use with care! Same as
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
The inclusion map: converts
self to the equivalent element of its superset.