Skip to content

Commit

Permalink
Add is_signal_key_encrypted, is_signal_service_envelope.
Browse files Browse the repository at this point in the history
  • Loading branch information
rubdos committed Jul 9, 2020
1 parent 3007887 commit 0a28420
Showing 1 changed file with 39 additions and 0 deletions.
39 changes: 39 additions & 0 deletions libsignal-service/src/proto.rs
Original file line number Diff line number Diff line change
@@ -1 +1,40 @@
include!(concat!(env!("OUT_DIR"), "/signalservice.rs"));

use std::ops::Deref;

impl WebSocketRequestMessage {
/// Equivalent of
/// `SignalServiceMessagePipe::isSignalServiceEnvelope(WebSocketMessage)`.
fn is_signal_service_envelope(&self) -> bool {
self.verb.as_ref().map(Deref::deref) == Some("PUT")
&& self.path.as_ref().map(Deref::deref) == Some("/api/v1/message")
}

/// Equivalent of
/// `SignalServiceMessagePipe::isSignalKeyEncrypted(WebSocketMessage)`.
fn is_signal_key_encrypted(&self) -> bool {
if self.headers.len() == 0 {
return true;
}

for header in &self.headers {
let parts: Vec<_> = header.split(':').collect();
if parts.len() != 2 {
log::warn!(
"Got a weird header: {:?}, split in {:?}",
header,
parts
);
continue;
}

if parts[0].trim().eq_ignore_ascii_case("X-Signal-Key") {
if parts[1].trim().eq_ignore_ascii_case("false") {
return false;
}
}
}

false
}
}

0 comments on commit 0a28420

Please sign in to comment.