pub struct VerificationData { /* private fields */ }Expand description
The non-encoded data for the first mode of QR code verification.
This mode is used for verification between two users using their master cross signing keys.
Implementations§
Source§impl VerificationData
impl VerificationData
Sourcepub fn new(
event_id: OwnedEventId,
first_key: Ed25519PublicKey,
second_key: Ed25519PublicKey,
shared_secret: Base64,
) -> VerificationData
pub fn new( event_id: OwnedEventId, first_key: Ed25519PublicKey, second_key: Ed25519PublicKey, shared_secret: Base64, ) -> VerificationData
Create a new VerificationData struct that can be encoded as a QR code.
§Arguments
-
event_id- The event id of them.key.verification.requestevent that initiated the verification flow this QR code should be part of. -
first_key- Our own cross signing master key. Needs to be encoded as unpadded base64 -
second_key- The cross signing master key of the other user. -
shared_secret- A random bytestring encoded as unpadded base64, needs to be at least 8 bytes long.
Sourcepub fn to_bytes(&self) -> Result<Vec<u8>, EncodingError>
pub fn to_bytes(&self) -> Result<Vec<u8>, EncodingError>
Encode the VerificationData into a vector of bytes that can be
encoded as a QR code.
The encoding can fail if the master keys that should be encoded are not valid base64.
§Example
let data = b"MATRIX\
\x02\x00\x00\x0f\
$test:localhost\
kS /\x92i\x1e6\xcd'g\xf9#\x11\xd8\x8a\xa2\xf61\x05\x1b6\xef\xfc\xa4%\x80\x1a\x0c\xd2\xe8\x04\
\xbdR|\xf8n\x07\xa4\x1f\xb4\xcc3\x0eBT\xe7[~\xfd\x87\xd06B\xdfoVv%\x9b\x86\xae\xbcM\
SHARED_SECRET";
let result = QrVerificationData::from_bytes(data)?;
if let QrVerificationData::Verification(decoded) = result {
let encoded = decoded.to_bytes().unwrap();
assert_eq!(data.as_ref(), encoded.as_slice());
} else {
panic!("Data was encoded as an incorrect mode");
}Sourcepub fn to_qr_code(&self) -> Result<QrCode, EncodingError>
pub fn to_qr_code(&self) -> Result<QrCode, EncodingError>
Encode the VerificationData into a QrCode.
This method turns the VerificationData into a QR code that can be
rendered and presented to be scanned.
The encoding can fail if the data doesn’t fit into a QR code or if the keys that should be encoded into the QR code are not valid base64.
Trait Implementations§
Source§impl Clone for VerificationData
impl Clone for VerificationData
Source§fn clone(&self) -> VerificationData
fn clone(&self) -> VerificationData
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for VerificationData
impl Debug for VerificationData
Source§impl From<VerificationData> for QrVerificationData
impl From<VerificationData> for QrVerificationData
Source§fn from(data: VerificationData) -> QrVerificationData
fn from(data: VerificationData) -> QrVerificationData
Source§impl PartialEq for VerificationData
impl PartialEq for VerificationData
impl StructuralPartialEq for VerificationData
Auto Trait Implementations§
impl Freeze for VerificationData
impl RefUnwindSafe for VerificationData
impl Send for VerificationData
impl Sync for VerificationData
impl Unpin for VerificationData
impl UnwindSafe for VerificationData
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
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>
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>
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 more