mirror of
https://github.com/signalapp/libsignal.git
synced 2024-09-20 20:03:07 +02:00
Convert fingerprints to use proto2 encoding
This commit is contained in:
parent
2e8339e154
commit
ad8e40ff7c
@ -83,26 +83,28 @@ impl ScannableFingerprint {
|
||||
let fingerprint = proto::fingerprint::CombinedFingerprints::decode(protobuf)?;
|
||||
|
||||
Ok(Self {
|
||||
version: fingerprint.version,
|
||||
version: fingerprint.version.ok_or(SignalProtocolError::InvalidProtobufEncoding)?,
|
||||
local_fingerprint: fingerprint
|
||||
.local_fingerprint
|
||||
.ok_or(SignalProtocolError::InvalidProtobufEncoding)?
|
||||
.content,
|
||||
.content
|
||||
.ok_or(SignalProtocolError::InvalidProtobufEncoding)?,
|
||||
remote_fingerprint: fingerprint
|
||||
.remote_fingerprint
|
||||
.ok_or(SignalProtocolError::InvalidProtobufEncoding)?
|
||||
.content,
|
||||
.content
|
||||
.ok_or(SignalProtocolError::InvalidProtobufEncoding)?,
|
||||
})
|
||||
}
|
||||
|
||||
pub fn serialize(&self) -> Result<Vec<u8>> {
|
||||
let combined_fingerprints = proto::fingerprint::CombinedFingerprints {
|
||||
version: self.version,
|
||||
version: Some(self.version),
|
||||
local_fingerprint: Some(proto::fingerprint::LogicalFingerprint {
|
||||
content: self.local_fingerprint.to_owned(),
|
||||
content: Some(self.local_fingerprint.to_owned()),
|
||||
}),
|
||||
remote_fingerprint: Some(proto::fingerprint::LogicalFingerprint {
|
||||
content: self.remote_fingerprint.to_owned(),
|
||||
content: Some(self.remote_fingerprint.to_owned()),
|
||||
}),
|
||||
};
|
||||
|
||||
@ -114,7 +116,7 @@ impl ScannableFingerprint {
|
||||
pub fn compare(&self, combined: &[u8]) -> Result<bool> {
|
||||
let combined = proto::fingerprint::CombinedFingerprints::decode(combined)?;
|
||||
|
||||
if combined.version != self.version {
|
||||
if combined.version.unwrap_or(0) != self.version {
|
||||
return Err(SignalProtocolError::FingerprintVersionMismatch);
|
||||
}
|
||||
|
||||
@ -128,12 +130,16 @@ impl ScannableFingerprint {
|
||||
.as_ref()
|
||||
.unwrap()
|
||||
.content
|
||||
.as_ref()
|
||||
.ok_or(SignalProtocolError::InvalidProtobufEncoding)?
|
||||
.ct_eq(&self.remote_fingerprint);
|
||||
let same2 = combined
|
||||
.remote_fingerprint
|
||||
.as_ref()
|
||||
.unwrap()
|
||||
.content
|
||||
.as_ref()
|
||||
.ok_or(SignalProtocolError::InvalidProtobufEncoding)?
|
||||
.ct_eq(&self.local_fingerprint);
|
||||
|
||||
Ok(same1.into() && same2.into())
|
||||
@ -227,12 +233,6 @@ mod test {
|
||||
let l = vec![0x12; 32];
|
||||
let r = vec![0xBA; 32];
|
||||
|
||||
let fprint0 = ScannableFingerprint::new(0, &l, &r);
|
||||
let proto0 = fprint0.serialize()?;
|
||||
|
||||
let expected0_encoding = "12220a20".to_owned() + &"12".repeat(32) + "1a220a20" + &"ba".repeat(32);
|
||||
assert_eq!(hex::encode(proto0), expected0_encoding);
|
||||
|
||||
let fprint2 = ScannableFingerprint::new(2, &l, &r);
|
||||
let proto2 = fprint2.serialize()?;
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
syntax = "proto3";
|
||||
syntax = "proto2";
|
||||
|
||||
//
|
||||
// Copyright 2020 Signal Messenger, LLC.
|
||||
@ -8,12 +8,12 @@ syntax = "proto3";
|
||||
package signal.proto.fingerprint;
|
||||
|
||||
message LogicalFingerprint {
|
||||
bytes content = 1;
|
||||
optional bytes content = 1;
|
||||
// bytes identifier = 2;
|
||||
}
|
||||
|
||||
message CombinedFingerprints {
|
||||
uint32 version = 1;
|
||||
LogicalFingerprint local_fingerprint = 2;
|
||||
LogicalFingerprint remote_fingerprint = 3;
|
||||
optional uint32 version = 1;
|
||||
optional LogicalFingerprint local_fingerprint = 2;
|
||||
optional LogicalFingerprint remote_fingerprint = 3;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user