aboutsummaryrefslogtreecommitdiffstats
path: root/g10/sign.c
diff options
context:
space:
mode:
authorWerner Koch <[email protected]>2000-07-25 15:38:12 +0000
committerWerner Koch <[email protected]>2000-07-25 15:38:12 +0000
commitb872ea2577bb68fc29d126cf79900d88d55ba268 (patch)
tree8464add6c2571724cf174d25b45a7cd05778eed0 /g10/sign.c
parentSee ChangeLog: Mon Jul 17 16:35:47 CEST 2000 Werner Koch (diff)
downloadgnupg-b872ea2577bb68fc29d126cf79900d88d55ba268.tar.gz
gnupg-b872ea2577bb68fc29d126cf79900d88d55ba268.zip
See ChangeLog: Tue Jul 25 17:44:15 CEST 2000 Werner Koch
Diffstat (limited to '')
-rw-r--r--g10/sign.c30
1 files changed, 14 insertions, 16 deletions
diff --git a/g10/sign.c b/g10/sign.c
index 9d0c203b8..ca469c07c 100644
--- a/g10/sign.c
+++ b/g10/sign.c
@@ -58,29 +58,24 @@ pk_sign( int algo, MPI *data, MPI hash, MPI *skey )
/* make a sexp from skey */
if( algo == GCRY_PK_DSA ) {
- s_skey = SEXP_CONS( SEXP_NEW( "private-key", 0 ),
- gcry_sexp_vlist( SEXP_NEW( "dsa", 3 ),
- gcry_sexp_new_name_mpi( "p", skey[0] ),
- gcry_sexp_new_name_mpi( "q", skey[1] ),
- gcry_sexp_new_name_mpi( "g", skey[2] ),
- gcry_sexp_new_name_mpi( "y", skey[3] ),
- gcry_sexp_new_name_mpi( "x", skey[4] ),
- NULL ));
+ rc = gcry_sexp_build ( &s_skey, NULL,
+ "(private-key(dsa(p%m)(q%m)(g%m)(y%m)(x%m)))",
+ skey[0], skey[1], skey[2], skey[3], skey[4] );
}
else if( algo == GCRY_PK_ELG || algo == GCRY_PK_ELG_E ) {
- s_skey = SEXP_CONS( SEXP_NEW( "private-key", 0 ),
- gcry_sexp_vlist( SEXP_NEW( "elg", 3 ),
- gcry_sexp_new_name_mpi( "p", skey[0] ),
- gcry_sexp_new_name_mpi( "g", skey[1] ),
- gcry_sexp_new_name_mpi( "y", skey[2] ),
- gcry_sexp_new_name_mpi( "x", skey[3] ),
- NULL ));
+ rc = gcry_sexp_build ( &s_skey, NULL,
+ "(private-key(elg(p%m)(g%m)(y%m)(x%m)))",
+ skey[0], skey[1], skey[2], skey[3] );
}
else
return GPGERR_PUBKEY_ALGO;
+ if ( rc )
+ BUG ();
+
/* put hash into a S-Exp s_hash */
- s_hash = gcry_sexp_new_mpi( hash );
+ if ( gcry_sexp_build( &s_hash, NULL, "%m", hash ) )
+ BUG ();
rc = gcry_pk_sign( &s_sig, s_hash, s_skey );
gcry_sexp_release( s_hash );
@@ -93,10 +88,13 @@ pk_sign( int algo, MPI *data, MPI hash, MPI *skey )
assert( list );
data[0] = gcry_sexp_cdr_mpi( list, 0 );
assert( data[0] );
+ gcry_sexp_release (list);
+
list = gcry_sexp_find_token( s_sig, "s" , 0 );
assert( list );
data[1] = gcry_sexp_cdr_mpi( list, 0 );
assert( data[1] );
+ gcry_sexp_release (list);
}