summaryrefslogtreecommitdiff
path: root/deps/openssl/openssl/crypto/dsa/dsa_ameth.c
diff options
context:
space:
mode:
authorBert Belder <bertbelder@gmail.com>2012-09-11 14:56:42 +0200
committerBert Belder <bertbelder@gmail.com>2012-09-12 00:40:55 +0200
commitb61ae54e18c9f6ada7e746052ef6b39272b18a15 (patch)
tree44b55a37ef67dd3a85684e44f55b4f698fcfa81c /deps/openssl/openssl/crypto/dsa/dsa_ameth.c
parentc8c638a84195e5571f4ece881375909e1f4b82a8 (diff)
downloadandroid-node-v8-b61ae54e18c9f6ada7e746052ef6b39272b18a15.tar.gz
android-node-v8-b61ae54e18c9f6ada7e746052ef6b39272b18a15.tar.bz2
android-node-v8-b61ae54e18c9f6ada7e746052ef6b39272b18a15.zip
openssl: upgrade to vanilla openssl 1.0.1c
Diffstat (limited to 'deps/openssl/openssl/crypto/dsa/dsa_ameth.c')
-rw-r--r--deps/openssl/openssl/crypto/dsa/dsa_ameth.c47
1 files changed, 47 insertions, 0 deletions
diff --git a/deps/openssl/openssl/crypto/dsa/dsa_ameth.c b/deps/openssl/openssl/crypto/dsa/dsa_ameth.c
index 6413aae46e..376156ec5e 100644
--- a/deps/openssl/openssl/crypto/dsa/dsa_ameth.c
+++ b/deps/openssl/openssl/crypto/dsa/dsa_ameth.c
@@ -542,6 +542,52 @@ static int old_dsa_priv_encode(const EVP_PKEY *pkey, unsigned char **pder)
return i2d_DSAPrivateKey(pkey->pkey.dsa, pder);
}
+static int dsa_sig_print(BIO *bp, const X509_ALGOR *sigalg,
+ const ASN1_STRING *sig,
+ int indent, ASN1_PCTX *pctx)
+ {
+ DSA_SIG *dsa_sig;
+ const unsigned char *p;
+ if (!sig)
+ {
+ if (BIO_puts(bp, "\n") <= 0)
+ return 0;
+ else
+ return 1;
+ }
+ p = sig->data;
+ dsa_sig = d2i_DSA_SIG(NULL, &p, sig->length);
+ if (dsa_sig)
+ {
+ int rv = 0;
+ size_t buf_len = 0;
+ unsigned char *m=NULL;
+ update_buflen(dsa_sig->r, &buf_len);
+ update_buflen(dsa_sig->s, &buf_len);
+ m = OPENSSL_malloc(buf_len+10);
+ if (m == NULL)
+ {
+ DSAerr(DSA_F_DSA_SIG_PRINT,ERR_R_MALLOC_FAILURE);
+ goto err;
+ }
+
+ if (BIO_write(bp, "\n", 1) != 1)
+ goto err;
+
+ if (!ASN1_bn_print(bp,"r: ",dsa_sig->r,m,indent))
+ goto err;
+ if (!ASN1_bn_print(bp,"s: ",dsa_sig->s,m,indent))
+ goto err;
+ rv = 1;
+ err:
+ if (m)
+ OPENSSL_free(m);
+ DSA_SIG_free(dsa_sig);
+ return rv;
+ }
+ return X509_signature_dump(bp, sig, indent);
+ }
+
static int dsa_pkey_ctrl(EVP_PKEY *pkey, int op, long arg1, void *arg2)
{
switch (op)
@@ -647,6 +693,7 @@ const EVP_PKEY_ASN1_METHOD dsa_asn1_meths[] =
dsa_copy_parameters,
dsa_cmp_parameters,
dsa_param_print,
+ dsa_sig_print,
int_dsa_free,
dsa_pkey_ctrl,