diff options
| author | Dennis Brentjes <d.brentjes@gmail.com> | 2016-10-11 12:39:05 +0200 |
|---|---|---|
| committer | Dennis Brentjes <d.brentjes@gmail.com> | 2016-10-11 12:39:05 +0200 |
| commit | 0fb433690c0ca5f9561fe9e2e973e2cd61b873ba (patch) | |
| tree | 9422a034b09d1e0b46144f35a1f9bcf7860156d6 /libcmix-crypto | |
| parent | d8e48c32f8435076382543edfafbf81c223f9e87 (diff) | |
| download | cmix-0fb433690c0ca5f9561fe9e2e973e2cd61b873ba.tar.gz cmix-0fb433690c0ca5f9561fe9e2e973e2cd61b873ba.tar.bz2 cmix-0fb433690c0ca5f9561fe9e2e973e2cd61b873ba.zip | |
Commit introducing Client keyexchange, triggering bugs.
Clients now send their public key to each node and the node calculates
the shared secret. The node does not yet respond with it's public key.
To keep this commit smaller.
Nodes now disconnect from each other in a better way.
Getting the relevant crypto api is now done with a generic function.
What crypto algorithm and implemenation is beign used can be selected in
the cmake cache (use cmake-gui or ccmake)
Clients now connect correctly to multiple nodes.
Diffstat (limited to 'libcmix-crypto')
| -rw-r--r-- | libcmix-crypto/api.h | 6 | ||||
| -rw-r--r-- | libcmix-crypto/curve25519/curve25519.c | 2 | ||||
| -rw-r--r-- | libcmix-crypto/curve25519/curve25519.h | 2 | ||||
| -rw-r--r-- | libcmix-crypto/curve25519/null/null_curve25519.c | 2 | ||||
| -rw-r--r-- | libcmix-crypto/curve25519/sodium/libsodium_curve25519.c | 2 | ||||
| -rw-r--r-- | libcmix-crypto/elgamal/elgamal.c | 2 | ||||
| -rw-r--r-- | libcmix-crypto/elgamal/elgamal.h | 2 | ||||
| -rw-r--r-- | libcmix-crypto/elgamal/null/null_elgamal.c | 2 |
8 files changed, 14 insertions, 6 deletions
diff --git a/libcmix-crypto/api.h b/libcmix-crypto/api.h index 09b474b..06afcd2 100644 --- a/libcmix-crypto/api.h +++ b/libcmix-crypto/api.h @@ -29,7 +29,7 @@ typedef void (*KeyPairDeleter)(struct KeyPair); * \brief Defines how a Derived Shared Key function should look like. * Used to store a pointer to function to a implementation. */ -typedef struct SharedKey (*SharedKeyDeriver)(struct KeyPair, unsigned char*, bool); +typedef struct SharedKey (*SharedKeyDeriver)(struct KeyPair, unsigned char const*, bool); /*! * \brief Defines how a Derived Shared Key deleter function should look like. @@ -47,6 +47,10 @@ struct Api { SharedKeyDeleter free_shared_key; ///< Pointer to shared key deleter function }; +typedef struct Api(*ImplementationGetter)(); + +extern ImplementationGetter get_implementation; + #ifdef __cplusplus } #endif diff --git a/libcmix-crypto/curve25519/curve25519.c b/libcmix-crypto/curve25519/curve25519.c index 824daf9..4d53ddf 100644 --- a/libcmix-crypto/curve25519/curve25519.c +++ b/libcmix-crypto/curve25519/curve25519.c @@ -10,3 +10,5 @@ struct Api get_curve25519_implementation() &curve25519_shared_key_deleter }; } + +ImplementationGetter get_implementation = &get_curve25519_implementation; diff --git a/libcmix-crypto/curve25519/curve25519.h b/libcmix-crypto/curve25519/curve25519.h index 8e2ad4e..fde317a 100644 --- a/libcmix-crypto/curve25519/curve25519.h +++ b/libcmix-crypto/curve25519/curve25519.h @@ -28,7 +28,7 @@ extern void curve25519_keypair_deleter(struct KeyPair p); * \param swap_pub_order Should we swap the order in which we feed the public keys to the hash function. * \return A Shared key */ -extern struct SharedKey curve25519_derive_shared_key(struct KeyPair pair, unsigned char* pub_key, bool swap_pub_order); +extern struct SharedKey curve25519_derive_shared_key(struct KeyPair pair, unsigned char const* pub_key, bool swap_pub_order); /*! * \brief curve25519_shared_key_deleter * \param s the Shared key to free. diff --git a/libcmix-crypto/curve25519/null/null_curve25519.c b/libcmix-crypto/curve25519/null/null_curve25519.c index 317455f..63280ec 100644 --- a/libcmix-crypto/curve25519/null/null_curve25519.c +++ b/libcmix-crypto/curve25519/null/null_curve25519.c @@ -17,7 +17,7 @@ struct KeyPair curve25519_create_keypair() { void curve25519_shared_key_deleter(struct SharedKey s) {} -struct SharedKey curve25519_derive_shared_key(struct KeyPair pair, unsigned char* pub_key, bool swap_pub_order) { +struct SharedKey curve25519_derive_shared_key(struct KeyPair pair, unsigned char const* pub_key, bool swap_pub_order) { return (struct SharedKey){ NULL, 0 diff --git a/libcmix-crypto/curve25519/sodium/libsodium_curve25519.c b/libcmix-crypto/curve25519/sodium/libsodium_curve25519.c index 59e9258..e86ec09 100644 --- a/libcmix-crypto/curve25519/sodium/libsodium_curve25519.c +++ b/libcmix-crypto/curve25519/sodium/libsodium_curve25519.c @@ -43,7 +43,7 @@ void curve25519_shared_key_deleter(struct SharedKey s) { s.shared = NULL; } -struct SharedKey curve25519_derive_shared_key(struct KeyPair pair, unsigned char* pub_key, bool swap_pub_order) { +struct SharedKey curve25519_derive_shared_key(struct KeyPair pair, unsigned char const* pub_key, bool swap_pub_order) { init(); unsigned char* shared = (unsigned char*) sodium_malloc(crypto_generichash_BYTES); diff --git a/libcmix-crypto/elgamal/elgamal.c b/libcmix-crypto/elgamal/elgamal.c index 3136688..d50126c 100644 --- a/libcmix-crypto/elgamal/elgamal.c +++ b/libcmix-crypto/elgamal/elgamal.c @@ -9,3 +9,5 @@ struct Api get_elgamal_implementation() &elgamal_shared_key_deleter }; } + +ImplementationGetter get_implementation = &get_elgamal_implementation;
\ No newline at end of file diff --git a/libcmix-crypto/elgamal/elgamal.h b/libcmix-crypto/elgamal/elgamal.h index 77b5c9b..feac7f5 100644 --- a/libcmix-crypto/elgamal/elgamal.h +++ b/libcmix-crypto/elgamal/elgamal.h @@ -9,7 +9,7 @@ extern "C" { extern struct KeyPair elgamal_create_keypair(); extern void elgamal_keypair_deleter(struct KeyPair p); -extern struct SharedKey elgamal_derive_shared_key(struct KeyPair pair, unsigned char* pub_key, bool swap_pub_order); +extern struct SharedKey elgamal_derive_shared_key(struct KeyPair pair, unsigned char const* pub_key, bool swap_pub_order); extern void elgamal_shared_key_deleter(struct SharedKey s); struct Api get_elgamal_implementation(); diff --git a/libcmix-crypto/elgamal/null/null_elgamal.c b/libcmix-crypto/elgamal/null/null_elgamal.c index ef98912..285e2fd 100644 --- a/libcmix-crypto/elgamal/null/null_elgamal.c +++ b/libcmix-crypto/elgamal/null/null_elgamal.c @@ -17,7 +17,7 @@ struct KeyPair elgamal_create_keypair() { void elgamal_shared_key_deleter(struct SharedKey s) {} -struct SharedKey elgamal_derive_shared_key(struct KeyPair pair, unsigned char* pub_key, bool swap_pub_order) { +struct SharedKey elgamal_derive_shared_key(struct KeyPair pair, unsigned char const* pub_key, bool swap_pub_order) { return (struct SharedKey){ NULL, 0 |
