diff options
author | Werner Koch <[email protected]> | 2000-07-25 15:38:12 +0000 |
---|---|---|
committer | Werner Koch <[email protected]> | 2000-07-25 15:38:12 +0000 |
commit | b872ea2577bb68fc29d126cf79900d88d55ba268 (patch) | |
tree | 8464add6c2571724cf174d25b45a7cd05778eed0 /g10/misc.c | |
parent | See ChangeLog: Mon Jul 17 16:35:47 CEST 2000 Werner Koch (diff) | |
download | gnupg-b872ea2577bb68fc29d126cf79900d88d55ba268.tar.gz gnupg-b872ea2577bb68fc29d126cf79900d88d55ba268.zip |
See ChangeLog: Tue Jul 25 17:44:15 CEST 2000 Werner Koch
Diffstat (limited to 'g10/misc.c')
-rw-r--r-- | g10/misc.c | 34 |
1 files changed, 14 insertions, 20 deletions
diff --git a/g10/misc.c b/g10/misc.c index e7bd8fac6..44a6f76b1 100644 --- a/g10/misc.c +++ b/g10/misc.c @@ -420,40 +420,34 @@ pubkey_get_nenc( int algo ) return n > 0? n : 0; } + unsigned int pubkey_nbits( int algo, MPI *key ) { - int nbits; + int rc, nbits; GCRY_SEXP sexp; - if( algo == GCRY_PK_DSA ) { - sexp = SEXP_CONS( SEXP_NEW( "public-key", 0 ), - gcry_sexp_vlist( SEXP_NEW( "dsa", 3 ), - gcry_sexp_new_name_mpi( "p", key[0] ), - gcry_sexp_new_name_mpi( "q", key[1] ), - gcry_sexp_new_name_mpi( "g", key[2] ), - gcry_sexp_new_name_mpi( "y", key[3] ), - NULL )); + rc = gcry_sexp_build ( &sexp, NULL, + "(public-key(dsa(p%m)(q%m)(g%m)(y%m)))", + key[0], key[1], key[2], key[3] ); } else if( algo == GCRY_PK_ELG || algo == GCRY_PK_ELG_E ) { - sexp = SEXP_CONS( SEXP_NEW( "public-key", 0 ), - gcry_sexp_vlist( SEXP_NEW( "elg", 3 ), - gcry_sexp_new_name_mpi( "p", key[0] ), - gcry_sexp_new_name_mpi( "g", key[1] ), - gcry_sexp_new_name_mpi( "y", key[2] ), - NULL )); + rc = gcry_sexp_build ( &sexp, NULL, + "(public-key(elg(p%m)(g%m)(y%m)))", + key[0], key[1], key[2] ); } else if( algo == GCRY_PK_RSA ) { - sexp = SEXP_CONS( SEXP_NEW( "public-key", 0 ), - gcry_sexp_vlist( SEXP_NEW( "rsa", 3 ), - gcry_sexp_new_name_mpi( "n", key[0] ), - gcry_sexp_new_name_mpi( "e", key[1] ), - NULL )); + rc = gcry_sexp_build ( &sexp, NULL, + "(public-key(rsa(n%m)(e%m)))", + key[0], key[1] ); } else return 0; + if ( rc ) + BUG (); + nbits = gcry_pk_get_nbits( sexp ); gcry_sexp_release( sexp ); return nbits; |