136 const uint8_t *message,
const size_t message_size);
189 const char *x3dhServerUrl,
const enum lime_ffi_CurveId curve,
const uint16_t OPkInitialBatchSize,
277 const uint8_t *
const plainMessage,
const size_t plainMessageSize,
278 uint8_t *
const cipherMessage,
size_t *cipherMessageSize,
308 const char *recipientUserId,
const char *senderDeviceId,
309 const uint8_t *
const DRmessage,
const size_t DRmessageSize,
310 const uint8_t *
const cipherMessage,
const size_t cipherMessageSize,
311 uint8_t *
const plainMessage,
size_t *plainMessageSize);
436 int lime_ffi_get_x3dhServerUrl(lime_manager_t manager,
const char *localDeviceId,
char *x3dhServerUrl,
size_t *x3dhServerUrlSize);
Definition: lime_ffi.h:52
void(* lime_ffi_X3DHServerPostData)(void *userData, lime_ffi_data_t limeData, const char *url, const char *from, const uint8_t *message, const size_t message_size)
Post a message to the X3DH server.
Definition: lime_ffi.h:135
Definition: lime_ffi.h:83
int lime_ffi_stale_sessions(lime_manager_t manager, const char *localDeviceId, const char *peerDeviceId)
Stale all sessions between localDeviceId and peerDevice. If peerDevice keep using this session to enc...
Definition: lime_ffi.cpp:418
Definition: lime_ffi.h:70
int lime_ffi_set_x3dhServerUrl(lime_manager_t manager, const char *localDeviceId, const char *x3dhServerUrl)
Set the X3DH key server URL for this identified user.
Definition: lime_ffi.cpp:442
int lime_ffi_manager_destroy(lime_manager_t manager)
Destroy the internal structure used to interact with lime.
Definition: lime_ffi.cpp:364
void(* lime_ffi_Callback)(void *userData, const enum lime_ffi_CallbackReturn status, const char *message)
Callback use to give a status on asynchronous operation.
Definition: lime_ffi.h:121
Definition: lime_ffi.h:56
lime_ffi_CurveId
Definition: lime_ffi.h:62
int lime_ffi_manager_init(lime_manager_t *const manager, const char *db, const lime_ffi_X3DHServerPostData X3DH_post_data, void *userData)
Initialise a Lime Manager, only one per end-point is required.
Definition: lime_ffi.cpp:154
Definition: lime_ffi.h:73
Definition: lime_ffi.h:72
LIME_FFI_ERROR
Definition: lime_ffi.h:51
int lime_ffi_create_user(lime_manager_t manager, const char *localDeviceId, const char *x3dhServerUrl, const enum lime_ffi_CurveId curve, const uint16_t OPkInitialBatchSize, const lime_ffi_Callback callback, void *callbackUserData)
Insert a lime user in local base and publish him on the X3DH server.
Definition: lime_ffi.cpp:183
enum lime_ffi_PeerDeviceStatus lime_ffi_get_peerDeviceStatus(lime_manager_t manager, const char *peerDeviceId)
get the status of a peer device: unknown, untrusted, trusted, unsafe
Definition: lime_ffi.cpp:409
Definition: lime_ffi.h:87
an opaque structure holding the lime cpp closure to be used to forward the X3DH server's response to ...
Definition: lime_ffi.cpp:47
Definition: lime_ffi.h:82
Definition: lime_ffi.h:84
int lime_ffi_encrypt(lime_manager_t manager, const char *localDeviceId, const char *recipientUserId, lime_ffi_RecipientData_t *const recipients, const size_t recipientsSize, const uint8_t *const plainMessage, const size_t plainMessageSize, uint8_t *const cipherMessage, size_t *cipherMessageSize, const lime_ffi_Callback callback, void *callbackUserData, enum lime_ffi_EncryptionPolicy encryptionPolicy)
Encrypt a buffer (text or file) for a given list of recipient devices.
Definition: lime_ffi.cpp:267
struct lime_manager_struct * lime_manager_t
Definition: lime_ffi.h:47
int lime_ffi_set_peerDeviceStatus(lime_manager_t manager, const char *peerDeviceId, const uint8_t *const Ik, const size_t IkSize, enum lime_ffi_PeerDeviceStatus status)
set the peer device status flag in local storage: unsafe, trusted or untrusted.
Definition: lime_ffi.cpp:392
lime_ffi_PeerDeviceStatus
Definition: lime_ffi.h:81
int lime_ffi_get_x3dhServerUrl(lime_manager_t manager, const char *localDeviceId, char *x3dhServerUrl, size_t *x3dhServerUrlSize)
Get the X3DH key server URL for this identified user.
Definition: lime_ffi.cpp:456
lime_ffi_EncryptionPolicy
Definition: lime_ffi.h:69
char * deviceId
Definition: lime_ffi.h:102
Definition: lime_ffi.h:53
lime_ffi_CallbackReturn
Definition: lime_ffi.h:92
Definition: lime_ffi.h:85
uint8_t * DRmessage
Definition: lime_ffi.h:108
int lime_ffi_encryptOutBuffersMaximumSize(const size_t plainMessageSize, const enum lime_ffi_CurveId curve, size_t *DRmessageSize, size_t *cipherMessageSize)
Compute the maximum buffer sizes for the encryption outputs: DRmessage and cipherMessage.
Definition: lime_ffi.cpp:235
encapsulate a unique pointer to limeManager in an opaque structure
Definition: lime_ffi.cpp:40
Definition: lime_ffi.h:65
struct lime_ffi_data_struct * lime_ffi_data_t
Definition: lime_ffi.h:49
Definition: lime_ffi.h:94
int lime_ffi_delete_peerDevice(lime_manager_t manager, const char *peerDeviceId)
delete a peerDevice from local storage
Definition: lime_ffi.cpp:413
int lime_ffi_get_selfIdentityKey(lime_manager_t manager, const char *localDeviceId, uint8_t *const Ik, size_t *IkSize)
retrieve self Identity Key, an EdDSA formatted public key
Definition: lime_ffi.cpp:370
Definition: lime_ffi.h:64
enum lime_ffi_PeerDeviceStatus lime_ffi_decrypt(lime_manager_t manager, const char *localDeviceId, const char *recipientUserId, const char *senderDeviceId, const uint8_t *const DRmessage, const size_t DRmessageSize, const uint8_t *const cipherMessage, const size_t cipherMessageSize, uint8_t *const plainMessage, size_t *plainMessageSize)
Decrypt the given message.
Definition: lime_ffi.cpp:339
Definition: lime_ffi.h:54
int lime_ffi_delete_user(lime_manager_t manager, const char *localDeviceId, const lime_ffi_Callback callback, void *callbackUserData)
Delete a user from local database and from the X3DH server.
Definition: lime_ffi.cpp:203
The encrypt function input/output data structure.
Definition: lime_ffi.h:101
Definition: lime_ffi.h:71
Definition: lime_ffi.h:63
int lime_ffi_processX3DHServerResponse(lime_ffi_data_t limeData, const int code, const uint8_t *response, const size_t response_size)
Forward X3DH server response to the lime engine.
Definition: lime_ffi.cpp:139
int lime_ffi_is_user(lime_manager_t manager, const char *localDeviceId)
Check if a user is present and active in local storage.
Definition: lime_ffi.cpp:222
int lime_ffi_update(lime_manager_t manager, const lime_ffi_Callback callback, void *callbackUserData, uint16_t OPkServerLowLimit, uint16_t OPkBatchSize)
Update: shall be called once a day at least, performs checks, updates and cleaning operations...
Definition: lime_ffi.cpp:423
size_t DRmessageSize
Definition: lime_ffi.h:109
Definition: lime_ffi.h:93
Definition: lime_ffi.h:55