comparison libpurple/plugins/ssl/ssl-gnutls.c @ 19079:05ae340c42cc

- Add unique_id and issuer_unique_id constructions (defined as Distinguished Names) for ssl-gnutls x509
author William Ehlhardt <williamehlhardt@gmail.com>
date Tue, 07 Aug 2007 20:29:35 +0000
parents daa68185a018
children 2c7c934bfb4e
comparison
equal deleted inserted replaced
19078:3987f76c0e4b 19079:05ae340c42cc
728 728
729 return hash; 729 return hash;
730 } 730 }
731 731
732 static gchar * 732 static gchar *
733 x509_cert_dn (PurpleCertificate *crt)
734 {
735 gnutls_x509_crt_t cert_dat;
736 gchar *dn = NULL;
737 size_t dn_size;
738
739 g_return_val_if_fail(crt, NULL);
740 g_return_val_if_fail(crt->scheme == &x509_gnutls, NULL);
741
742 cert_dat = X509_GET_GNUTLS_DATA(crt);
743
744 /* TODO: Note return values? */
745
746 /* Figure out the length of the Distinguished Name */
747 /* Claim that the buffer is size 0 so GnuTLS just tells us how much
748 space it needs */
749 dn_size = 0;
750 gnutls_x509_crt_get_dn(cert_dat, dn, &dn_size);
751
752 /* Now allocate and get the Distinguished Name */
753 dn = g_new0(gchar, dn_size);
754 gnutls_x509_crt_get_dn(cert_dat, dn, &dn_size);
755
756 return dn;
757 }
758
759 static gchar *
760 x509_issuer_dn (PurpleCertificate *crt)
761 {
762 gnutls_x509_crt_t cert_dat;
763 gchar *dn = NULL;
764 size_t dn_size;
765
766 g_return_val_if_fail(crt, NULL);
767 g_return_val_if_fail(crt->scheme == &x509_gnutls, NULL);
768
769 cert_dat = X509_GET_GNUTLS_DATA(crt);
770
771 /* TODO: Note return values? */
772
773 /* Figure out the length of the Distinguished Name */
774 /* Claim that the buffer is size 0 so GnuTLS just tells us how much
775 space it needs */
776 dn_size = 0;
777 gnutls_x509_crt_get_issuer_dn(cert_dat, dn, &dn_size);
778
779 /* Now allocate and get the Distinguished Name */
780 dn = g_new0(gchar, dn_size);
781 gnutls_x509_crt_get_issuer_dn(cert_dat, dn, &dn_size);
782
783 return dn;
784 }
785
786 static gchar *
733 x509_common_name (PurpleCertificate *crt) 787 x509_common_name (PurpleCertificate *crt)
734 { 788 {
735 gnutls_x509_crt_t cert_dat; 789 gnutls_x509_crt_t cert_dat;
736 gchar *cn = NULL; 790 gchar *cn = NULL;
737 size_t cn_size; 791 size_t cn_size;
818 x509_export_certificate, /* Certificate export function */ 872 x509_export_certificate, /* Certificate export function */
819 x509_copy_certificate, /* Copy */ 873 x509_copy_certificate, /* Copy */
820 x509_destroy_certificate, /* Destroy cert */ 874 x509_destroy_certificate, /* Destroy cert */
821 x509_certificate_signed_by, /* Signature checker */ 875 x509_certificate_signed_by, /* Signature checker */
822 x509_sha1sum, /* SHA1 fingerprint */ 876 x509_sha1sum, /* SHA1 fingerprint */
823 NULL, /* Unique ID */ 877 x509_cert_dn, /* Unique ID */
824 NULL, /* Issuer Unique ID */ 878 x509_issuer_dn, /* Issuer Unique ID */
825 x509_common_name, /* Subject name */ 879 x509_common_name, /* Subject name */
826 x509_check_name, /* Check subject name */ 880 x509_check_name, /* Check subject name */
827 x509_times /* Activation/Expiration time */ 881 x509_times /* Activation/Expiration time */
828 }; 882 };
829 883