Commit Graph

20 Commits (master)

Author SHA1 Message Date
Hubert Chathi 8475061136 switch to doctest for unit testing
thanks to Nico Werner, who did most of the porting work
2021-12-22 13:45:33 -05:00
Hubert Chathi ea13edcae0 don't use variable length or zero-length arrays in test files
as some compilers don't handle that
2019-04-22 10:12:42 -04:00
Richard van der Hoff 69f269ffaf Convert AES functions to plain C 2016-09-05 10:40:39 +01:00
Richard van der Hoff f0acf6582f Convert Ed25519 and Curve25519 functions to plain C 2016-09-05 10:40:39 +01:00
Richard van der Hoff 39212987bd Create new constants for key lengths, etc
We were using olm::KEY_LENGTH for everything under the sun which happened to be
32 bytes long, and making a bunch of assumptions in the process. Create a bunch
of new constants (as C #defines rather than C++ consts so that I can use them
in another forthcoming refactor).
2016-09-02 15:11:14 +01:00
Richard van der Hoff 0c462cff11 Fix Ed25519 keypair generation
Ed25519 private keys, it turns out, have 64 bytes, not 32.

We were previously generating only 32 bytes (which is all that is required to
generate the public key), and then using the public key as the upper 32 bytes
when generating the per-message session key. This meant that everything
appeared to work, but the security of the private key was severely compromised.

By way of fixes:

 * Use the correct algorithm for generating the Ed25519 private key, and store
   all 512 bits of it.

 * Update the account pickle format and refuse to load the old format (since we
   should consider it compromised).

 * Bump the library version, and add a function to retrieve the library
   version, so that applications can verify that they are linked against a
   fixed version of the library.

 * Remove the curve25519_{sign, verify} functions which were unused and of
   dubious quality.
2016-09-01 13:35:23 +01:00
Richard van der Hoff 444ef1f706 Prefix for internal symbols
Give a load of internal symbols "_olm_" prefixes. This better delineates the
public and private interfaces in the module, and helps avoid internal symbols
leaking out and possibly being abused.
2016-05-23 18:55:06 +01:00
Richard van der Hoff e533b0dc8e Give SHA256 functions C bindings 2016-05-23 18:55:05 +01:00
Mark Haines b318055185 Replace hard coded references to the 32-byte key length with a constant, add utilities for copying data to and from fixed sized arrays 2015-08-19 17:32:06 +01:00
Mark Haines 2a873fd4e1 Add functions for creating and verifying ed25519 signatures 2015-07-07 09:50:32 +01:00
Mark Haines a30a64d179 Rename generate_key to curve25519_generate_key 2015-07-07 09:03:12 +01:00
Matthew Hodgson 09d4125ff1 Rename axolotlpp as olm to avoid confusion with Axolotl-the-spec and Axolotl-the-OWS-libraries at moxie's request 2015-06-27 01:15:23 +02:00
Mark Haines 315caaba7e Add functions for signing and verifying messages using curve25519 keys 2015-03-03 11:18:07 +00:00
Mark Haines d142eb64dd Copyright notices and a license 2015-02-26 16:56:25 +00:00
Mark Haines 09d8e84c7c Implement the axlotl ratchet 2015-02-26 16:30:19 +00:00
Mark Haines 8df4d9e9b5 Tweak AES cbc to add pcks7 padding bytes 2015-02-25 08:35:53 +00:00
Mark Haines 0e13cd3562 Move unit test code into a separate header 2015-02-24 11:28:07 +00:00
Mark Haines 7c1da4896f Use stdout for reporting test success/failure 2015-02-23 14:45:36 +00:00
Mark Haines b2f865182d Finish and test crypto primitives 2015-02-21 01:36:15 +00:00
Mark Haines 44d0c09205 initial commit: start implementing the crypto primitives 2015-02-20 21:32:56 +00:00