I also have a problem in sending the pub_key to peer. As I am using
DH_generate_parameters to generate prime and generator and DH_generator_key
for generating the public key , I have to send the prime, g and pub_key to
the peer. Is there any function to do this??

Thanks in advance.
Yamini.


On Fri, Dec 21, 2012 at 9:23 AM, Hemayamini Kurra <
hemayaminiku...@email.arizona.edu> wrote:

> Thanks prashant!! This helped alot!!
>
>
> On Thu, Dec 20, 2012 at 10:09 PM, Prashant Batra 
> <prashant0...@gmail.com>wrote:
>
>> I have this fucntion which I use to generate public-private key pair.
>>
>> - prime : depends on the dh group, you can find these values in DH rfc -
>> http://www.ietf.org/rfc/rfc3526.txt
>>
>> int32_t DHInterface::GeneratePublicPrivateKeyPair(uint8_t * pub_key,
>> uint32_t * pub_key_length)
>> {
>>   char *errbuf;
>>
>>   dh = DH_new();
>>
>>   if ((dh->p = BN_bin2bn((unsigned char *)prime->v, prime->l, NULL)) ==
>> NULL)
>>     return -1;
>>
>>   if ((dh->g = BN_new()) == NULL)
>>     return -1;
>>   if (!BN_set_word(dh->g, 2))
>>     return -1;
>>
>>
>>   /* Now generate public and private key */
>>
>>   if (!DH_generate_key(dh))
>>   {
>>     errbuf = ERR_error_string(ERR_get_error(), NULL);
>>     printf("Error : %s", errbuf);
>>     return -1;
>>   }
>>
>>   /* Covert keys from BN into bytes */
>>
>>   *pub_key_length = BN_bn2bin(dh->pub_key, (unsigned char *)(pub_key));
>>
>>   return 0;
>> }
>>
>> DH_Generate_key would generate a private key, and then a corresponding
>> public key value. You need to send this public key value to your peer and
>> then expect a public key value from the peer.
>> Once you get peer's public key use the same "dh" object to calculate the
>> secret value, which I do in this way-
>> peer_pub_key = BN_bin2bn((unsigned char *)peer_public_key, key_length,
>> NULL);
>>
>>   if ((secret_key_length = DH_compute_key((unsigned char *)temp,
>> peer_pub_key, dh)) < 0)
>>   {
>>       errbuf = ERR_error_string(ERR_get_error(), NULL);
>>       printf("Error : %s", errbuf);
>>       return -1;
>>   }
>>   *secret_length = DH_size(dh);
>>
>>
>> I feel the variables would be self explainatory.
>>
>>
>> On Fri, Dec 21, 2012 at 10:19 AM, Hemayamini Kurra <
>> hemayaminiku...@email.arizona.edu> wrote:
>>
>>> Hello!!
>>>
>>>
>>> I am trying to implement Diffe-Hellman Key exchange protocol between
>>> Client and server. I am using openSSL dh.h library for that. The problem is
>>> how to send the publickey generated by DH_generate_key() function to
>>> client/server.
>>>
>>> My idea is to get the shared secret which I can use for further
>>> encryption of communication between client and server. I have followed the
>>> following steps
>>>
>>> 1. Generate the parameters uysing DH_generate_parameters()
>>> 2. DH_check() for checking the parameters generated.
>>> 3. Then to use DH_compute_key() I should be able to get the peer's
>>> public key. How can I get this?
>>>
>>> What is the private value DH_generate_key uses for generating public key?
>>>
>>> I dint find any sample programs for this problem. It would be great if
>>> anyone suggest some sample programs related to my above mentioned task!!
>>>
>>>
>>> Thanks and Regards,
>>> Yamini.
>>>
>>
>>
>>
>> --
>> Prashant Batra
>>
>>
>>
>

Reply via email to