Merge ecdsa_write_signature{,_det}() together
diff --git a/library/ecdsa.c b/library/ecdsa.c
index 006413c..f1a48ff 100644
--- a/library/ecdsa.c
+++ b/library/ecdsa.c
@@ -308,7 +308,7 @@
/*
* Compute and write signature
*/
-int ecdsa_write_signature( ecdsa_context *ctx,
+int ecdsa_write_signature( ecdsa_context *ctx, md_type_t md_alg,
const unsigned char *hash, size_t hlen,
unsigned char *sig, size_t *slen,
int (*f_rng)(void *, unsigned char *, size_t),
@@ -316,35 +316,34 @@
{
int ret;
- if( ( ret = ecdsa_sign( &ctx->grp, &ctx->r, &ctx->s, &ctx->d,
- hash, hlen, f_rng, p_rng ) ) != 0 )
- {
+#if defined(POLARSSL_ECDSA_DETERMINISTIC)
+ (void) f_rng;
+ (void) p_rng;
+
+ ret = ecdsa_sign_det( &ctx->grp, &ctx->r, &ctx->s, &ctx->d,
+ hash, hlen, md_alg );
+#else
+ (void) md_alg;
+
+ ret = ecdsa_sign( &ctx->grp, &ctx->r, &ctx->s, &ctx->d,
+ hash, hlen, f_rng, p_rng );
+#endif
+ if( ret != 0 )
return( ret );
- }
return( ecdsa_signature_to_asn1( ctx, sig, slen ) );
}
-#if defined(POLARSSL_ECDSA_DETERMINISTIC)
-/*
- * Compute and write signature deterministically
- */
+#if ! defined(POLARSSL_DEPRECATED_REMOVED)
int ecdsa_write_signature_det( ecdsa_context *ctx,
const unsigned char *hash, size_t hlen,
unsigned char *sig, size_t *slen,
md_type_t md_alg )
{
- int ret;
-
- if( ( ret = ecdsa_sign_det( &ctx->grp, &ctx->r, &ctx->s, &ctx->d,
- hash, hlen, md_alg ) ) != 0 )
- {
- return( ret );
- }
-
- return( ecdsa_signature_to_asn1( ctx, sig, slen ) );
+ return( ecdsa_write_signature( ctx, md_ald, hash, hlen, sig, siglen,
+ NULL, NULL ) );
}
-#endif /* POLARSSL_ECDSA_DETERMINISTIC */
+#endif
/*
* Read and check signature
diff --git a/library/pk_wrap.c b/library/pk_wrap.c
index 66afa7c..d6dea12 100644
--- a/library/pk_wrap.c
+++ b/library/pk_wrap.c
@@ -341,19 +341,8 @@
unsigned char *sig, size_t *sig_len,
int (*f_rng)(void *, unsigned char *, size_t), void *p_rng )
{
- /* Use deterministic ECDSA by default if available */
-#if defined(POLARSSL_ECDSA_DETERMINISTIC)
- ((void) f_rng);
- ((void) p_rng);
-
- return( ecdsa_write_signature_det( (ecdsa_context *) ctx,
- hash, hash_len, sig, sig_len, md_alg ) );
-#else
- ((void) md_alg);
-
return( ecdsa_write_signature( (ecdsa_context *) ctx,
- hash, hash_len, sig, sig_len, f_rng, p_rng ) );
-#endif /* POLARSSL_ECDSA_DETERMINISTIC */
+ md_alg, hash, hash_len, sig, sig_len, f_rng, p_rng ) );
}
static void *ecdsa_alloc_wrap( void )