Mercurial > pidgin
changeset 32415:105202d802db
Add NSS support for getting DER data.
author | Elliott Sales de Andrade <qulogic@pidgin.im> |
---|---|
date | Fri, 23 Dec 2011 01:52:16 +0000 |
parents | 7ceb5ca4b323 |
children | fb0c5aa0fe55 |
files | libpurple/plugins/ssl/ssl-nss.c |
diffstat | 1 files changed, 24 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/libpurple/plugins/ssl/ssl-nss.c Fri Dec 23 01:09:13 2011 +0000 +++ b/libpurple/plugins/ssl/ssl-nss.c Fri Dec 23 01:52:16 2011 +0000 @@ -930,6 +930,29 @@ return TRUE; } +static GByteArray * +x509_get_der_data(PurpleCertificate *crt) +{ + CERTCertificate *crt_dat; + SECItem *dercrt; + GByteArray *data; + + crt_dat = X509_NSS_DATA(crt); + g_return_val_if_fail(crt_dat, NULL); + + dercrt = SEC_ASN1EncodeItem(NULL, NULL, crt_dat, + SEC_ASN1_GET(SEC_SignedCertificateTemplate)); + g_return_val_if_fail(dercrt != NULL, FALSE); + + data = g_byte_array_sized_new(dercrt->len); + memcpy(data->data, dercrt->data, dercrt->len); + data->len = dercrt->len; + + SECITEM_FreeItem(dercrt, PR_TRUE); + + return data; +} + static PurpleCertificateScheme x509_nss = { "x509", /* Scheme name */ N_("X.509 Certificates"), /* User-visible scheme name */ @@ -945,9 +968,9 @@ x509_check_name, /* Check subject name */ x509_times, /* Activation/Expiration time */ x509_importcerts_from_file, /* Multiple certificate import function */ + x509_get_der_data, /* Binary DER data */ NULL, - NULL, NULL };