/usr/include/signal/fingerprint.h is in libsignal-protocol-c-dev 2.3.1+git20171007-3.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 | #ifndef FINGERPRINT_H
#define FINGERPRINT_H
#include "signal_protocol_types.h"
#ifdef __cplusplus
extern "C" {
#endif
/**
* Construct a fingerprint generator for 60 digit numerics.
*
* @param generator set to a freshly allocated generator instance
* @param iterations The number of internal iterations to perform in the process of
* generating a fingerprint. This needs to be constant, and synchronized
* across all clients.
*
* The higher the iteration count, the higher the security level:
* - 1024 ~ 109.7 bits
* - 1400 > 110 bits
* - 5200 > 112 bits
* @param scannable_version The format version for the scannable fingerprint (0 or 1)
* @param global_context the global library context
* @return 0 on success, or negative on failure
*/
int fingerprint_generator_create(fingerprint_generator **generator,
int iterations, int scannable_version,
signal_context *global_context);
/**
* Generate a scannable and displayble fingerprint.
*
* @param local_stable_identifier The client's "stable" identifier.
* @param local_identity_key The client's identity key.
* @param remote_stable_identifier The remote party's "stable" identifier.
* @param remote_identity_key The remote party's identity key.
* @param fingerprint Set to a freshly allocated unique fingerprint for this conversation
* @return 0 on success, or negative on failure
*/
int fingerprint_generator_create_for(fingerprint_generator *generator,
const char *local_stable_identifier, const ec_public_key *local_identity_key,
const char *remote_stable_identifier, const ec_public_key *remote_identity_key,
fingerprint **fingerprint_val);
/**
* Generate a scannable and displayble fingerprint for a list of keys
*
* @param local_stable_identifier The client's "stable" identifier.
* @param local_identity_key_list The client's identity key list.
* @param remote_stable_identifier The remote party's "stable" identifier.
* @param remote_identity_key_list The remote party's identity key list.
* @param fingerprint Set to a freshly allocated unique fingerprint for this conversation
* @return 0 on success, or negative on failure
*/
int fingerprint_generator_create_for_list(fingerprint_generator *generator,
const char *local_stable_identifier, const ec_public_key_list *local_identity_key_list,
const char *remote_stable_identifier, const ec_public_key_list *remote_identity_key_list,
fingerprint **fingerprint_val);
void fingerprint_generator_free(fingerprint_generator *generator);
int fingerprint_create(fingerprint **fingerprint_val, displayable_fingerprint *displayable, scannable_fingerprint *scannable);
displayable_fingerprint *fingerprint_get_displayable(const fingerprint *fingerprint_val);
scannable_fingerprint *fingerprint_get_scannable(const fingerprint *fingerprint_val);
void fingerprint_destroy(signal_type_base *type);
int displayable_fingerprint_create(displayable_fingerprint **displayable, const char *local_fingerprint, const char *remote_fingerprint);
const char *displayable_fingerprint_local(const displayable_fingerprint *displayable);
const char *displayable_fingerprint_remote(const displayable_fingerprint *displayable);
const char *displayable_fingerprint_text(const displayable_fingerprint *displayable);
void displayable_fingerprint_destroy(signal_type_base *type);
int scannable_fingerprint_create(scannable_fingerprint **scannable,
uint32_t version,
const char *local_stable_identifier, const signal_buffer *local_fingerprint,
const char *remote_stable_identifier, const signal_buffer *remote_fingerprint);
int scannable_fingerprint_serialize(signal_buffer **buffer, const scannable_fingerprint *scannable);
int scannable_fingerprint_deserialize(scannable_fingerprint **scannable, const uint8_t *data, size_t len, signal_context *global_context);
uint32_t scannable_fingerprint_get_version(const scannable_fingerprint *scannable);
const char *scannable_fingerprint_get_local_stable_identifier(const scannable_fingerprint *scannable);
signal_buffer *scannable_fingerprint_get_local_fingerprint(const scannable_fingerprint *scannable);
const char *scannable_fingerprint_get_remote_stable_identifier(const scannable_fingerprint *scannable);
signal_buffer *scannable_fingerprint_get_remote_fingerprint(const scannable_fingerprint *scannable);
/**
* Compare a scanned QR code with what we expect.
* @param scannable The local scannable data
* @param other_scannable The data from the scanned code
* @retval 1 if the scannable codes match
* @retval 0 if the scannable codes do not match
* @retval SG_ERR_FP_VERSION_MISMATCH if the scanned fingerprint is the wrong version
* @retval SG_ERR_FP_IDENT_MISMATCH if the scanned fingerprint is for the wrong stable identifier
*/
int scannable_fingerprint_compare(const scannable_fingerprint *scannable, const scannable_fingerprint *other_scannable);
void scannable_fingerprint_destroy(signal_type_base *type);
#ifdef __cplusplus
}
#endif
#endif /* FINGERPRINT_H */
|