Question about key generation
Andrey Mozharovskiy
amzh at hushmail.com
Mon Jan 16 16:34:31 CET 2017
Found the problem.
These gcry_sexp_t are being returned as modulus/exp etc. It's the
modulus part which is the same for both public and private keys.
How do I extract the keys itself?
On 1/14/2017 at 4:45 PM, "Andrey Mozharovskiy" wrote:Hello,
we're trying to generate a pair of Rsa keys (public/private), using
the latest release of libgcrypt sources,
we're using the following method:
gcry_sexp_t keyparm, key;
int rc = -1;
rc = gcry_sexp_new (&keyparm,
"(genkeyn"
" (rsan"
" (nbits 4:2048)n"
" ))", 0, 1);
if (rc)
return boost::make_tuple("", "");
rc = gcry_pk_genkey (&key, keyparm);
if (rc)
return boost::make_tuple("", "");
gcry_sexp_t pubkey = gcry_sexp_find_token(key, "public-key", 0);
size_t length_publ =
gcry_sexp_sprint(pubkey,GCRYSEXP_FMT_ADVANCED,NULL,0);
char *buffer_publ = (char*)
gcry_malloc(length_publ*sizeof(char));
size_t offset_publ =
gcry_sexp_sprint(pubkey,GCRYSEXP_FMT_ADVANCED,buffer_publ,length_publ);
gcry_sexp_t privkey = gcry_sexp_find_token(key, "private-key",
0);
size_t length_priv =
gcry_sexp_sprint(privkey,GCRYSEXP_FMT_ADVANCED,NULL,0);
char *buffer_priv = (char*)
gcry_malloc(length_priv*sizeof(char));
size_t offset_priv =
gcry_sexp_sprint(privkey,GCRYSEXP_FMT_ADVANCED,buffer_priv,length_priv);
Thus, we now have two keys, problem is they're both exactly identical
each time we generate them..
E.g. both keys are:
(char *) buffer_publ = 0x00007fddf0d0f0e0 "(public-key n (rsa n (n
#00B30C503943A56EBD82AEC5A8CFDC49563BBD3A7E3938973F7642BAC50CA4CC26917B9DD7BF6840CF310EFB3910EE166312BA38FE8B0AC987FD2DF8D55342B6378AA49061C302A1776B897CC11A0D08558C4C0E6C1A86E7CD8A858A2D6786C29577829B8401A2DBEF8FA106F98195ED98B9745F7BC8B02048B1DBA33D12E78DC1E34F0C59E4205C8EEB5C6E0926DFD560E9EB36D42C3161FCA5C92D9C1AE64795C68D312C167803A685709C52D9FFF7914FCF1143BF9134A6ED0F30525A83DD950979D61098F953C70C2D91998F886B403295D82837BF0C9664842D92E94404A606882C326A44802E105574A7754EF073C9DC4B7593E7D429AD33DA9B5276A705#)n
(e #010001#)n )n )n
(same value for buffer_priv)
Please clarify, whether we should generate a pair of keys two times
and hence get different keys, or use a different method?
Regards, Andrey.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: </pipermail/attachments/20170116/5639edcc/attachment-0001.html>
More information about the Gnupg-devel
mailing list