Skip to content

smswithoutborders/rusty_relaysms_payload_specs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

95 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Rusty

Android

Requirements

rustup target add \
  aarch64-linux-android \
  armv7-linux-androideabi \
  x86_64-linux-android

Generate .so

make so

Generate kotlin

make kotlin

Implementation

GRPC Requests

struct RequestPayload {
    pub ciphertext: Vec<u8>,
    pub timestamp: u64
}

// Get token
// Returns `FailedToEncrypt` in cases cannot decrypt
let payload: RequesetPayload = v1_requests_encrypt(...)

// Verify token
// Returns `FailedToDecrypt` in cases cannot decrypt
/* struct ResponsePayload {
    pub method_name: Vec<u8>,
    pub payload: Vec<u8>,
} */
let _ = v1_requests_decrypt(payload.ciphertext)

Tokens

// Server
// Returns `FailedToEncrypt` in cases cannot decrypt
let ciphertext = v1_token_encrypt_server(...)

// Returns `FailedToDecrypt` in cases cannot decrypt
let token = v1_token_decrypt_server(...)
// Client
// Returns `FailedToEncrypt` in cases cannot decrypt
let ciphertext = v1_token_encrypt(...)

// Verify token
// Returns `FailedToDecrypt` in cases cannot decrypt
let token = v1_token_decrypt(...)

Platform publisher

// Get token
// Returns `FailedToEncrypt` in cases cannot decrypt
let ciphertext = v1_platform_publisher_encrypt(...)

// Verify token
// Returns `FailedToDecrypt` in cases cannot decrypt
let payload = v1_platform_publisher_decrypt(...)

Bridge publisher (online first)

// Get token
// Returns `FailedToEncrypt` in cases cannot decrypt
let ciphertext = v1_bridge_online_first_publisher_encrypt(...)

// Verify token
// Returns `FailedToDecrypt` in cases cannot decrypt
let request = v1_bridge_online_first_publisher_decrypt(...)

Bridge publisher (offline first)

// Get token
// Returns `FailedToEncrypt` in cases cannot decrypt
// Returns OfflineFirstEncryptionResponse {
//   tx_payload: bytes, // encrypted payload
//   sc_pk_enc: bytes, // encrypted long term identity key
//   h: bytes //MixHash value
// }
let ciphertext = v1_bridge_offline_first_publisher_encrypt(...)

// Verify token
// Returns `FailedToDecrypt` in cases cannot decrypt
// Returns OfflineFirstDecryptionResponse {
//   payload: bytes, // decrypted payload
//   h: bytes //MixHash value
// }
let response = v1_bridge_offline_first_publisher_decrypt(...)

Publishing (with Attachments)

// example message
 let contents = V1ContentsContainer(
      V1ContentCategories::Message,
      body,
      to,
      subject,
      attachment
  );

  let payload_att = V1Payloads(
      contents.serialize(),
      k_id,
      len_att,
      t_id,
      sess_id
  );

// For sending
let split = payload_att.split(Arc::new(SMS)).unwrap();

// Receiving
let joined = V1Payloads::join(split, V1ContentCategories::Message)

...//
// Joined can be parsed to either platform or bridge for publishing

About

No description, website, or topics provided.

Resources

License

Stars

1 star

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors