Hi Kamil, Thanks for the reply. I’m not really proposing anything at the moment, I’m looking for suggestions on how to resolve the issue of replicating 3 structures just so we don’t have to change kmdhgGPsha1kex_state_t. Right now, kmdhgGPsha1kex_state_t has two members that need to change; h_sig_comp and exchange_hash.
First, h_sig_comp needs to be big enough to hold a SHA256 digest, that’s an easy fix; I’d propose something like: #define MAX_SHA_DIGEST_LEN SHA256_DIGEST_LENGTH And then change the member variable to: unsigned char h_sig_comp[MAX_SHA_DIGEST_LEN] Second, exhange_hash needs to change from libssh2_sha1_ctx to something more generic. This is the real hang-up as it needs to be either libssh2_sha1_ctx or libssh2_sha256_ctx. This is what I’m soliciting ideas on how to resolve this issue. Any recommendations are welcome. Cheers, Will > On Jan 13, 2015, at 4:17 AM, Kamil Dudka <kdu...@redhat.com> wrote: > > On Monday 12 January 2015 16:29:12 Will Cosgrove wrote: >> Hi All, >> I’m adding diffie-hellman-group-exchange-sha256 support and have it working. >> However, if I am to submit this patch back to the project I have a couple >> code style questions. >> >> First, kmdhgGPsha1kex_state_t is coded to be specific to sha1. No big deal >> I thought, I could add a sha256 version. However that leads to >> key_exchange_state_low_t which is included in key_exchange_state_t. So now >> we’re duplicating three structs and causing a lot of branching, not so >> great. >> >> At that point, I decided to change kmdhgGPsha1kex_state_t to support sha256. >> The following changes were made: >> >> unsigned char h_sig_comp[SHA256_DIGEST_LENGTH]; //SHA1_DIGEST_LENGTH >> >> //libssh2_sha1_ctx exchange_hash; >> EVP_MD_CTX exchange_hash; >> >> This isn’t so hot as it hard-codes openssl support instead of using the >> libssh2_sha1_ctx macro. On the flip side, creating three new structures >> for a couple calls seems excessive. >> >> Anyone out there have opinions on how to proceed? > > For me it is difficult to infer what exactly you are proposing to change > from the above description. Could you please attach the current version > of your patch to clarify it? > > In general, avoiding duplicated code is good. On the other hand, I believe > that the only module where OpenSSL should be hard-coded is src/openssl.c > whereas the structures defined in libssh2_priv.h should be independent on > a particular crypto library. > > Kamil > >> Cheers, >> Will >> _______________________________________________ >> libssh2-devel http://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel _______________________________________________ libssh2-devel http://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel