pub struct SelfVerificationNoMasterKey { /* private fields */ }
Expand description
The non-encoded data for the third mode of QR code verification.
This mode is used for verification between two devices of the same user where this device, that is creating this QR code, is not trusting the cross signing master key.
Implementations§
Source§impl SelfVerificationNoMasterKey
impl SelfVerificationNoMasterKey
Sourcepub fn new(
transaction_id: String,
device_key: Ed25519PublicKey,
master_key: Ed25519PublicKey,
shared_secret: Base64,
) -> Self
pub fn new( transaction_id: String, device_key: Ed25519PublicKey, master_key: Ed25519PublicKey, shared_secret: Base64, ) -> Self
Create a new SelfVerificationData
struct that can be encoded as a QR
code.
§Arguments
-
transaction_id
- The transaction id of this verification flow, the transaction id was sent by them.key.verification.request
event that initiated the verification flow this QR code should be part of. -
device_key
- The ed25519 key of our own device. -
master_key
- Our own cross signing master key. -
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 SelfVerificationNoMasterKey
into a vector of bytes that can
be encoded as a QR code.
The encoding can fail if the keys that should be encoded are not valid base64.
§Examples
let data = b"MATRIX\
\x02\x02\x00\x06\
FLOWID\
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::SelfVerificationNoMasterKey(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 SelfVerificationNoMasterKey
into a QrCode
.
This method turns the SelfVerificationNoMasterKey
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 SelfVerificationNoMasterKey
impl Clone for SelfVerificationNoMasterKey
Source§fn clone(&self) -> SelfVerificationNoMasterKey
fn clone(&self) -> SelfVerificationNoMasterKey
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl Debug for SelfVerificationNoMasterKey
impl Debug for SelfVerificationNoMasterKey
Source§impl From<SelfVerificationNoMasterKey> for QrVerificationData
impl From<SelfVerificationNoMasterKey> for QrVerificationData
Source§fn from(data: SelfVerificationNoMasterKey) -> Self
fn from(data: SelfVerificationNoMasterKey) -> Self
impl Eq for SelfVerificationNoMasterKey
impl StructuralPartialEq for SelfVerificationNoMasterKey
Auto Trait Implementations§
impl Freeze for SelfVerificationNoMasterKey
impl RefUnwindSafe for SelfVerificationNoMasterKey
impl Send for SelfVerificationNoMasterKey
impl Sync for SelfVerificationNoMasterKey
impl Unpin for SelfVerificationNoMasterKey
impl UnwindSafe for SelfVerificationNoMasterKey
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<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key
and return true
if they are equal.