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);
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
lime_ffi_CurveId
Definition: lime_ffi.h:62
@ lime_ffi_CurveId_unset
Definition: lime_ffi.h:63
@ lime_ffi_CurveId_c448
Definition: lime_ffi.h:65
@ lime_ffi_CurveId_c25519
Definition: lime_ffi.h:64
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
struct lime_ffi_data_struct * lime_ffi_data_t
Definition: lime_ffi.h:49
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_EncryptionPolicy
Definition: lime_ffi.h:69
@ lime_ffi_EncryptionPolicy_optimizeUploadSize
Definition: lime_ffi.h:72
@ lime_ffi_EncryptionPolicy_optimizeGlobalBandwidth
Definition: lime_ffi.h:73
@ lime_ffi_EncryptionPolicy_DRMessage
Definition: lime_ffi.h:70
@ lime_ffi_EncryptionPolicy_cipherMessage
Definition: lime_ffi.h:71
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
struct lime_manager_struct * lime_manager_t
Definition: lime_ffi.h:47
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_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
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
LIME_FFI_ERROR
Definition: lime_ffi.h:51
@ LIME_FFI_SUCCESS
Definition: lime_ffi.h:52
@ LIME_FFI_USER_NOT_FOUND
Definition: lime_ffi.h:56
@ LIME_FFI_INVALID_CURVE_ARGUMENT
Definition: lime_ffi.h:53
@ LIME_FFI_INTERNAL_ERROR
Definition: lime_ffi.h:54
@ LIME_FFI_OUTPUT_BUFFER_TOO_SMALL
Definition: lime_ffi.h:55
lime_ffi_PeerDeviceStatus
Definition: lime_ffi.h:81
@ lime_ffi_PeerDeviceStatus_untrusted
Definition: lime_ffi.h:82
@ lime_ffi_PeerDeviceStatus_fail
Definition: lime_ffi.h:85
@ lime_ffi_PeerDeviceStatus_unsafe
Definition: lime_ffi.h:84
@ lime_ffi_PeerDeviceStatus_unknown
Definition: lime_ffi.h:87
@ lime_ffi_PeerDeviceStatus_trusted
Definition: lime_ffi.h:83
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
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
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
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
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
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
lime_ffi_CallbackReturn
Definition: lime_ffi.h:92
@ lime_ffi_CallbackReturn_success
Definition: lime_ffi.h:93
@ lime_ffi_CallbackReturn_fail
Definition: lime_ffi.h:94
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_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
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
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_manager_destroy(lime_manager_t manager)
Destroy the internal structure used to interact with lime.
Definition: lime_ffi.cpp:364
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
The encrypt function input/output data structure.
Definition: lime_ffi.h:101
size_t DRmessageSize
Definition: lime_ffi.h:109
char * deviceId
Definition: lime_ffi.h:102
uint8_t * DRmessage
Definition: lime_ffi.h:108
an opaque structure holding the lime cpp closure to be used to forward the X3DH server's response to ...
Definition: lime_ffi.cpp:47
encapsulate a unique pointer to limeManager in an opaque structure
Definition: lime_ffi.cpp:40