Skip to content
EntityQ27031176· pop 17· linked from 245 articles

Signal Protocol

Sign in to save

Also known as Axolotl, TextSecure Protocol

non-federated cryptographic protocol

Source code

This is a ratcheting forward secrecy protocol that works in synchronous and asynchronous messaging environments. See the Java library for more details. Most of these dependencies are required just for the unit test suite and development of the library itself. When integrating into actual applications, you should not need anything beyond CMake. Alternatively, you may integrate the code using a build system of your choice. Items marked with 1 are required for tests, with 2 are additionally required for code coverage. It is recommended to follow the more manual "Option 2," since the Eclipse project generator built into CMake tends to be outdated and leads you toward a very awkward and occasionally broken project configuration. This project uses serialization code based on Protocol Buffers. Since the official library does not support C, the protobuf-c generator is used instead. For the sake of convenience, the generated code and its dependencies are included in the source tree. The generated code can be regenerated at any time by installing the two mentioned packages and running "make" in the "protobuf/" subdirectory. Before using the library, a libsignal-protocol-c client needs to initialize a global context. This global context is used to provide callbacks for implementations of functions used across the library that need client-specific implementations. Refer to "signal protocol.h" for detailed documentation on these functions, and the unit tests for example implementations. At install time, a libsignal-protocol-c client needs to generate its identity keys, registration id, and prekeys. The above example is simplified for the sake of clarity. All of these functions return errors on failure, and those errors should be checked for in real usage. There are also iteration and serialization methods for the above types that should be used as appropriate. A libsignal-protocol-c client needs to implement four data store callback interfaces: signal protocol identity key store , signal protocol pre key store , signal protocol signed pre key store , and signal protocol session store . These will manage loading and storing of identity, prekeys, signed prekeys, and session state. The above example is simplified for the sake of clarity. All of these functions return errors on failure, and those errors should be checked for in real usage. For every custom data type that the libsignal-protocol-c library can allocate and return, a corresponding way of deallocating an instance of that data type is provided. The more basic and higher level data types provide a type-specific free or destroy function. These types include signal context , signal protocol store context , signal buffer , signal buffer list , signal int list , signal protocol key helper pre key list node , session builder , session cipher , group session builder , group cipher , and fingerprint generator . Most of the other data types, including everything internal, use a reference counting mechanism. If you are going to hold onto a reference to one of these types, use the SIGNAL REF(x) macro to increment its count. If you are done with a reference, use SIGNAL UNREF(x) to decrement its count. When the count reaches 0, the type's destructor function is called. This distribution includes cryptographic software. The country in which you currently reside may have restrictions on the import, possession, use, and/or re-export to another country, of encryption software. BEFORE using any encryption software, please check your country's laws, regulations and policies concerning the import, possession, or use, and re-export of encryption software, to see if this is permitted. See for more information. The U.S. Government Department of Commerce, Bureau of Industry and Security (BIS), has classified this software as Export Commodity Control Number (ECCN) 5D002.C.1, which includes information security software using or performing cryptographic functions with asymmetric algorithms. The

Excerpt from the source-code README · 9,971 chars · not written by Vinony

Wikidata facts

Official website
signal.org/docs
Show 3 more facts
source code repository URL
github.com/signalapp/libsignal
software version identifier
0.92.2
publication date
2013-00-00
Sources (6)

via Wikidata · CC0

Connections

Categories