Struct fuzzytags::Tag [−][src]
pub struct Tag<const GAMMA: u8> { /* fields omitted */ }
Expand description
A tag is a probabilistic cryptographic structure. When constructed for a given TaggingKey
it will pass the DetectionKey::test_tag
100% of the time. For other tagging keys
it will pass the test with probability GAMMA
related to the security parameter of the system.
This system provides the following security properties:
- Correctness: Valid tags constructed for a specific tagging key will always validate when tested using the detection key
- Fuzziness: Invalid tags will produce false positives with probability p related to the security property (γ)
- Security: An adversarial server with access to the detection key is unable to distinguish false positives from true positives. (Detection Ambiguity)
Implementations
An optimal sized copy of the tag
Compressed u || y || ciphertext
Ciphertext is right-padded with zeros to the nearest byte
You probably want to use one of the many serde serialize
apis instead (see README)
use rand::rngs::OsRng; use fuzzytags::RootSecret; let mut rng = OsRng; let secret = RootSecret::<24>::generate(&mut rng); let tagging_key = secret.tagging_key(); // extract a detection key let detection_key = secret.extract_detection_key(5); // Give tagging key to a another party... // and then they can do... let tag = tagging_key.generate_tag(&mut rng); let compressed_tag = tag.compress();
decompress an optimally encoded fuzzytag byte array, returns None if invalid
You probably want to use one of the many serde deserialize
apis instead (see README)
use fuzzytags::{RootSecret, Tag}; use rand::rngs::OsRng; let mut rng = OsRng; let secret = RootSecret::<24>::generate(&mut rng); let tagging_key = secret.tagging_key(); // extract a detection key let detection_key = secret.extract_detection_key(5); // Give tagging key to a another party... // and then they can do... let tag = tagging_key.generate_tag(&mut rng); let compressed_tag = tag.compress(); let decompressed_tag = Tag::decompress(&compressed_tag).unwrap(); assert_eq!(tag, decompressed_tag);
Trait Implementations
Auto Trait Implementations
impl<const GAMMA: u8> RefUnwindSafe for Tag<GAMMA>
impl<const GAMMA: u8> UnwindSafe for Tag<GAMMA>
Blanket Implementations
Mutably borrows from an owned value. Read more
type Output = T
type Output = T
Should always be Self