Struct threema_gateway::IncomingMessage
source · pub struct IncomingMessage {
pub from: String,
pub to: String,
pub message_id: String,
pub date: usize,
pub nonce: Vec<u8>,
pub box_data: Vec<u8>,
pub nickname: Option<String>,
}
Expand description
An incoming message received from Threema Gateway.
To receive the message, you’ll need to provide your own HTTP callback
server implementation. The request body bytes that are received this way
can then be parsed using IncomingMessage::from_urlencoded_bytes
.
Note: The IncomingMessage::from_urlencoded_bytes
function validates the
MAC, that’s why it’s not included in here again.
Further docs:
- API docs: https://gateway.threema.ch/de/developer/api
- E2E message format docs: https://gateway.threema.ch/de/developer/e2e
Fields§
§from: String
Sender identity (8 characters)
to: String
Your API identity (8 characters, usually starts with ‘*’)
message_id: String
Message ID assigned by the sender (8 bytes, hex encoded)
date: usize
Message date set by the sender (UNIX timestamp)
nonce: Vec<u8>
Nonce used for encryption (24 bytes, hex encoded)
box_data: Vec<u8>
Encrypted message data (max. 4000 bytes, hex encoded)
nickname: Option<String>
Public nickname of the sender, if set
Implementations§
source§impl IncomingMessage
impl IncomingMessage
sourcepub fn from_urlencoded_bytes(
bytes: impl AsRef<[u8]>,
api_secret: &str
) -> Result<Self, ApiError>
pub fn from_urlencoded_bytes( bytes: impl AsRef<[u8]>, api_secret: &str ) -> Result<Self, ApiError>
Deserialize an incoming Threema Gateway message in
application/x-www-form-urlencoded
format.
This will validate the MAC. If the MAC is invalid,
ApiError::InvalidMac
will be returned.
Note: You should probably not use this directly, but instead use
E2eApi::decode_incoming_message
!
sourcepub fn decrypt_box(
&self,
public_key: &PublicKey,
private_key: &SecretKey
) -> Result<Vec<u8>, CryptoError>
pub fn decrypt_box( &self, public_key: &PublicKey, private_key: &SecretKey ) -> Result<Vec<u8>, CryptoError>
Decrypt the box using the specified keys and remove padding.
The public key belongs to the sender in the from
field. The private
key belongs to the gateway ID in the to
field.
The PKCS#7 padding will be removed. If the padding is missing or
invalid, an CryptoError::BadPadding
will be returned.
Note: For more convenience, you might want to prefer the shortcut
E2eApi::decrypt_incoming_message
!