gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] r7618 - libmicrohttpd/src/daemon/https/x509


From: gnunet
Subject: [GNUnet-SVN] r7618 - libmicrohttpd/src/daemon/https/x509
Date: Sun, 24 Aug 2008 16:46:28 -0600 (MDT)

Author: grothoff
Date: 2008-08-24 16:46:28 -0600 (Sun, 24 Aug 2008)
New Revision: 7618

Removed:
   libmicrohttpd/src/daemon/https/x509/crl_write.c
   libmicrohttpd/src/daemon/https/x509/x509_write.c
Modified:
   libmicrohttpd/src/daemon/https/x509/Makefile.am
Log:
dead

Modified: libmicrohttpd/src/daemon/https/x509/Makefile.am
===================================================================
--- libmicrohttpd/src/daemon/https/x509/Makefile.am     2008-08-24 22:43:15 UTC 
(rev 7617)
+++ libmicrohttpd/src/daemon/https/x509/Makefile.am     2008-08-24 22:46:28 UTC 
(rev 7618)
@@ -16,7 +16,6 @@
 common.c \
 crq.c \
 crl.c \
-crl_write.c \
 dn.c \
 dsa.c \
 extensions.c \

Deleted: libmicrohttpd/src/daemon/https/x509/crl_write.c
===================================================================
--- libmicrohttpd/src/daemon/https/x509/crl_write.c     2008-08-24 22:43:15 UTC 
(rev 7617)
+++ libmicrohttpd/src/daemon/https/x509/crl_write.c     2008-08-24 22:46:28 UTC 
(rev 7618)
@@ -1,317 +0,0 @@
-/*
- * Copyright (C) 2003, 2004, 2005 Free Software Foundation
- *
- * Author: Nikos Mavrogiannopoulos
- *
- * This file is part of GNUTLS.
- *
- * The GNUTLS library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * as published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
- * USA
- *
- */
-
-/* This file contains functions to handle CRL generation.
- */
-
-#include <gnutls_int.h>
-
-#ifdef ENABLE_PKI
-
-#include <gnutls_datum.h>
-#include <gnutls_global.h>
-#include <gnutls_errors.h>
-#include <common.h>
-#include <gnutls_x509.h>
-#include <x509_b64.h>
-#include <crq.h>
-#include <dn.h>
-#include <mpi.h>
-#include <sign.h>
-#include <extensions.h>
-#include <libtasn1.h>
-
-static void disable_optional_stuff (gnutls_x509_crl_t crl);
-
-/**
-  * gnutls_x509_crl_set_version - This function will set the CRL version
-  * @crl: should contain a gnutls_x509_crl_t structure
-  * @version: holds the version number. For CRLv1 crls must be 1.
-  *
-  * This function will set the version of the CRL. This
-  * must be one for CRL version 1, and so on. The CRLs generated
-  * by gnutls should have a version number of 2.
-  *
-  * Returns 0 on success.
-  *
-  **/
-int
-gnutls_x509_crl_set_version (gnutls_x509_crl_t crl, unsigned int version)
-{
-  int result;
-  char null = version;
-
-  if (crl == NULL)
-    {
-      gnutls_assert ();
-      return GNUTLS_E_INVALID_REQUEST;
-    }
-
-  null -= 1;
-  if (null < 0)
-    null = 0;
-
-  result = asn1_write_value (crl->crl, "tbsCertList.version", &null, 1);
-  if (result != ASN1_SUCCESS)
-    {
-      gnutls_assert ();
-      return mhd_gtls_asn2err (result);
-    }
-
-  return 0;
-}
-
-/**
-  * gnutls_x509_crl_sign2 - This function will sign a CRL with a key
-  * @crl: should contain a gnutls_x509_crl_t structure
-  * @issuer: is the certificate of the certificate issuer
-  * @issuer_key: holds the issuer's private key
-  * @dig: The message digest to use. GNUTLS_DIG_SHA1 is the safe choice unless 
you know what you're doing.
-  * @flags: must be 0
-  *
-  * This function will sign the CRL with the issuer's private key, and
-  * will copy the issuer's information into the CRL.
-  *
-  * This must be the last step in a certificate CRL since all
-  * the previously set parameters are now signed.
-  *
-  * Returns 0 on success.
-  *
-  **/
-int
-gnutls_x509_crl_sign2 (gnutls_x509_crl_t crl, gnutls_x509_crt_t issuer,
-                       gnutls_x509_privkey_t issuer_key,
-                       enum MHD_GNUTLS_HashAlgorithm dig, unsigned int flags)
-{
-  int result;
-
-  if (crl == NULL || issuer == NULL)
-    {
-      gnutls_assert ();
-      return GNUTLS_E_INVALID_REQUEST;
-    }
-
-  /* disable all the unneeded OPTIONAL fields.
-   */
-  disable_optional_stuff (crl);
-
-  result = _gnutls_x509_pkix_sign (crl->crl, "tbsCertList",
-                                   dig, issuer, issuer_key);
-  if (result < 0)
-    {
-      gnutls_assert ();
-      return result;
-    }
-
-  return 0;
-}
-
-/**
-  * gnutls_x509_crl_sign - This function will sign a CRL with a key
-  * @crl: should contain a gnutls_x509_crl_t structure
-  * @issuer: is the certificate of the certificate issuer
-  * @issuer_key: holds the issuer's private key
-  *
-  * This function is the same a gnutls_x509_crl_sign2() with no flags, and
-  * SHA1 as the hash algorithm.
-  *
-  * Returns 0 on success.
-  *
-  **/
-int
-gnutls_x509_crl_sign (gnutls_x509_crl_t crl, gnutls_x509_crt_t issuer,
-                      gnutls_x509_privkey_t issuer_key)
-{
-  return gnutls_x509_crl_sign2 (crl, issuer, issuer_key, MHD_GNUTLS_MAC_SHA1,
-                                0);
-}
-
-/**
-  * gnutls_x509_crl_set_this_update - This function will set the CRL's issuing 
time
-  * @crl: should contain a gnutls_x509_crl_t structure
-  * @act_time: The actual time
-  *
-  * This function will set the time this CRL was issued.
-  *
-  * Returns 0 on success, or a negative value in case of an error.
-  *
-  **/
-int
-gnutls_x509_crl_set_this_update (gnutls_x509_crl_t crl, time_t act_time)
-{
-  if (crl == NULL)
-    {
-      gnutls_assert ();
-      return GNUTLS_E_INVALID_REQUEST;
-    }
-
-  return _gnutls_x509_set_time (crl->crl, "tbsCertList.thisUpdate", act_time);
-}
-
-/**
-  * gnutls_x509_crl_set_next_update - This function will set the CRL next 
update time
-  * @crl: should contain a gnutls_x509_crl_t structure
-  * @exp_time: The actual time
-  *
-  * This function will set the time this CRL will be updated.
-  *
-  * Returns 0 on success, or a negative value in case of an error.
-  *
-  **/
-int
-gnutls_x509_crl_set_next_update (gnutls_x509_crl_t crl, time_t exp_time)
-{
-  if (crl == NULL)
-    {
-      gnutls_assert ();
-      return GNUTLS_E_INVALID_REQUEST;
-    }
-  return _gnutls_x509_set_time (crl->crl, "tbsCertList.nextUpdate", exp_time);
-}
-
-/**
-  * gnutls_x509_crl_set_crt_serial - This function will set a revoked 
certificate's serial number
-  * @crl: should contain a gnutls_x509_crl_t structure
-  * @serial: The revoked certificate's serial number
-  * @serial_size: Holds the size of the serial field.
-  * @revocation_time: The time this certificate was revoked
-  *
-  * This function will set a revoked certificate's serial number to the CRL.
-  *
-  * Returns 0 on success, or a negative value in case of an error.
-  *
-  **/
-int
-gnutls_x509_crl_set_crt_serial (gnutls_x509_crl_t crl,
-                                const void *serial, size_t serial_size,
-                                time_t revocation_time)
-{
-  int ret;
-
-  if (crl == NULL)
-    {
-      gnutls_assert ();
-      return GNUTLS_E_INVALID_REQUEST;
-    }
-
-  ret =
-    asn1_write_value (crl->crl, "tbsCertList.revokedCertificates", "NEW", 1);
-  if (ret != ASN1_SUCCESS)
-    {
-      gnutls_assert ();
-      return mhd_gtls_asn2err (ret);
-    }
-
-  ret =
-    asn1_write_value (crl->crl,
-                      "tbsCertList.revokedCertificates.?LAST.userCertificate",
-                      serial, serial_size);
-  if (ret != ASN1_SUCCESS)
-    {
-      gnutls_assert ();
-      return mhd_gtls_asn2err (ret);
-    }
-
-  ret =
-    _gnutls_x509_set_time (crl->crl,
-                           
"tbsCertList.revokedCertificates.?LAST.revocationDate",
-                           revocation_time);
-  if (ret < 0)
-    {
-      gnutls_assert ();
-      return ret;
-    }
-
-  ret =
-    asn1_write_value (crl->crl,
-                      
"tbsCertList.revokedCertificates.?LAST.crlEntryExtensions",
-                      NULL, 0);
-  if (ret != ASN1_SUCCESS)
-    {
-      gnutls_assert ();
-      return mhd_gtls_asn2err (ret);
-    }
-
-  return 0;
-}
-
-/**
-  * gnutls_x509_crl_set_crt - This function will set a revoked certificate's 
serial number
-  * @crl: should contain a gnutls_x509_crl_t structure
-  * @crt: should contain a gnutls_x509_crt_t structure with the revoked 
certificate
-  * @revocation_time: The time this certificate was revoked
-  *
-  * This function will set a revoked certificate's serial number to the CRL.
-  *
-  * Returns 0 on success, or a negative value in case of an error.
-  *
-  **/
-int
-gnutls_x509_crl_set_crt (gnutls_x509_crl_t crl, gnutls_x509_crt_t crt,
-                         time_t revocation_time)
-{
-  int ret;
-  opaque serial[128];
-  size_t serial_size;
-
-  if (crl == NULL || crt == NULL)
-    {
-      gnutls_assert ();
-      return GNUTLS_E_INVALID_REQUEST;
-    }
-
-  serial_size = sizeof (serial);
-  ret = gnutls_x509_crt_get_serial (crt, serial, &serial_size);
-  if (ret < 0)
-    {
-      gnutls_assert ();
-      return ret;
-    }
-
-  ret =
-    gnutls_x509_crl_set_crt_serial (crl, serial, serial_size,
-                                    revocation_time);
-  if (ret < 0)
-    {
-      gnutls_assert ();
-      return mhd_gtls_asn2err (ret);
-    }
-
-  return 0;
-}
-
-
-/* If OPTIONAL fields have not been initialized then
- * disable them.
- */
-static void
-disable_optional_stuff (gnutls_x509_crl_t crl)
-{
-
-  asn1_write_value (crl->crl, "tbsCertList.crlExtensions", NULL, 0);
-
-  return;
-}
-
-#endif /* ENABLE_PKI */

Deleted: libmicrohttpd/src/daemon/https/x509/x509_write.c
===================================================================
--- libmicrohttpd/src/daemon/https/x509/x509_write.c    2008-08-24 22:43:15 UTC 
(rev 7617)
+++ libmicrohttpd/src/daemon/https/x509/x509_write.c    2008-08-24 22:46:28 UTC 
(rev 7618)
@@ -1,1095 +0,0 @@
-/*
- * Copyright (C) 2003, 2004, 2005, 2006, 2007 Free Software Foundation
- *
- * Author: Nikos Mavrogiannopoulos
- *
- * This file is part of GNUTLS.
- *
- * The GNUTLS library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * as published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
- * USA
- *
- */
-
-/* This file contains functions to handle X.509 certificate generation.
- */
-
-#include <gnutls_int.h>
-
-#ifdef ENABLE_PKI
-
-#include <gnutls_datum.h>
-#include <gnutls_global.h>
-#include <gnutls_errors.h>
-#include <common.h>
-#include <gnutls_x509.h>
-#include <x509_b64.h>
-#include <crq.h>
-#include <dn.h>
-#include <mpi.h>
-#include <sign.h>
-#include <extensions.h>
-#include <libtasn1.h>
-
-static void disable_optional_stuff (gnutls_x509_crt_t cert);
-
-/**
-  * gnutls_x509_crt_set_dn_by_oid - This function will set the Certificate 
request subject's distinguished name
-  * @crt: should contain a gnutls_x509_crt_t structure
-  * @oid: holds an Object Identifier in a null terminated string
-  * @raw_flag: must be 0, or 1 if the data are DER encoded
-  * @name: a pointer to the name
-  * @sizeof_name: holds the size of @name
-  *
-  * This function will set the part of the name of the Certificate subject, 
specified
-  * by the given OID. The input string should be ASCII or UTF-8 encoded.
-  *
-  * Some helper macros with popular OIDs can be found in gnutls/x509.h
-  * With this function you can only set the known OIDs. You can test
-  * for known OIDs using gnutls_x509_dn_oid_known(). For OIDs that are
-  * not known (by gnutls) you should properly DER encode your data, and
-  * call this function with raw_flag set.
-  *
-  * Returns 0 on success.
-  *
-  **/
-int
-gnutls_x509_crt_set_dn_by_oid (gnutls_x509_crt_t crt, const char *oid,
-                               unsigned int raw_flag, const void *name,
-                               unsigned int sizeof_name)
-{
-  if (sizeof_name == 0 || name == NULL || crt == NULL)
-    {
-      return GNUTLS_E_INVALID_REQUEST;
-    }
-
-  return _gnutls_x509_set_dn_oid (crt->cert, "tbsCertificate.subject",
-                                  oid, raw_flag, name, sizeof_name);
-}
-
-/**
-  * gnutls_x509_crt_set_issuer_dn_by_oid - This function will set the 
Certificate request issuer's distinguished name
-  * @crt: should contain a gnutls_x509_crt_t structure
-  * @oid: holds an Object Identifier in a null terminated string
-  * @raw_flag: must be 0, or 1 if the data are DER encoded
-  * @name: a pointer to the name
-  * @sizeof_name: holds the size of @name
-  *
-  * This function will set the part of the name of the Certificate issuer, 
specified
-  * by the given OID. The input string should be ASCII or UTF-8 encoded.
-  *
-  * Some helper macros with popular OIDs can be found in gnutls/x509.h
-  * With this function you can only set the known OIDs. You can test
-  * for known OIDs using gnutls_x509_dn_oid_known(). For OIDs that are
-  * not known (by gnutls) you should properly DER encode your data, and
-  * call this function with raw_flag set.
-  *
-  * Normally you do not need to call this function, since the signing
-  * operation will copy the signer's name as the issuer of the certificate.
-  *
-  * Returns 0 on success.
-  *
-  **/
-int
-gnutls_x509_crt_set_issuer_dn_by_oid (gnutls_x509_crt_t crt,
-                                      const char *oid,
-                                      unsigned int raw_flag,
-                                      const void *name,
-                                      unsigned int sizeof_name)
-{
-  if (sizeof_name == 0 || name == NULL || crt == NULL)
-    {
-      return GNUTLS_E_INVALID_REQUEST;
-    }
-
-  return _gnutls_x509_set_dn_oid (crt->cert, "tbsCertificate.issuer", oid,
-                                  raw_flag, name, sizeof_name);
-}
-
-/**
- * gnutls_x509_crt_set_proxy_dn - Set Proxy Certificate subject's 
distinguished name
- * @crt: a gnutls_x509_crt_t structure with the new proxy cert
- * @eecrt: the end entity certificate that will be issuing the proxy
- * @raw_flag: must be 0, or 1 if the CN is DER encoded
- * @name: a pointer to the CN name, may be NULL (but MUST then be added later)
- * @sizeof_name: holds the size of @name
- *
- * This function will set the subject in @crt to the end entity's
- * @eecrt subject name, and add a single Common Name component @name
- * of size @sizeof_name.  This corresponds to the required proxy
- * certificate naming style.  Note that if @name is %NULL, you MUST
- * set it later by using gnutls_x509_crt_set_dn_by_oid() or similar.
- *
- * Returns 0 on success.
- *
- **/
-int
-gnutls_x509_crt_set_proxy_dn (gnutls_x509_crt_t crt, gnutls_x509_crt_t eecrt,
-                              unsigned int raw_flag, const void *name,
-                              unsigned int sizeof_name)
-{
-  int result;
-
-  if (crt == NULL || eecrt == NULL)
-    {
-      return GNUTLS_E_INVALID_REQUEST;
-    }
-
-  result = asn1_copy_node (crt->cert, "tbsCertificate.subject",
-                           eecrt->cert, "tbsCertificate.subject");
-  if (result != ASN1_SUCCESS)
-    {
-      gnutls_assert ();
-      return mhd_gtls_asn2err (result);
-    }
-
-  if (name && sizeof_name)
-    {
-      return _gnutls_x509_set_dn_oid (crt->cert, "tbsCertificate.subject",
-                                      GNUTLS_OID_X520_COMMON_NAME,
-                                      raw_flag, name, sizeof_name);
-    }
-
-  return 0;
-}
-
-/**
-  * gnutls_x509_crt_set_version - This function will set the Certificate 
request version
-  * @crt: should contain a gnutls_x509_crt_t structure
-  * @version: holds the version number. For X.509v1 certificates must be 1.
-  *
-  * This function will set the version of the certificate.  This must
-  * be one for X.509 version 1, and so on.  Plain certificates without
-  * extensions must have version set to one.
-  *
-  * To create well-formed certificates, you must specify version 3 if
-  * you use any certificate extensions.  Extensions are created by
-  * functions such as gnutls_x509_crt_set_subject_alternative_name or
-  * gnutls_x509_crt_set_key_usage.
-  *
-  * Returns 0 on success.
-  *
-  **/
-int
-gnutls_x509_crt_set_version (gnutls_x509_crt_t crt, unsigned int version)
-{
-  int result;
-  unsigned char null = version;
-
-  if (crt == NULL)
-    {
-      gnutls_assert ();
-      return GNUTLS_E_INVALID_REQUEST;
-    }
-
-  if (null > 0)
-    null--;
-
-  result = asn1_write_value (crt->cert, "tbsCertificate.version", &null, 1);
-  if (result != ASN1_SUCCESS)
-    {
-      gnutls_assert ();
-      return mhd_gtls_asn2err (result);
-    }
-
-  return 0;
-}
-
-/**
-  * gnutls_x509_crt_set_key - This function will associate the Certificate 
with a key
-  * @crt: should contain a gnutls_x509_crt_t structure
-  * @key: holds a private key
-  *
-  * This function will set the public parameters from the given private key to 
the
-  * certificate. Only RSA keys are currently supported.
-  *
-  * Returns 0 on success.
-  *
-  **/
-int
-gnutls_x509_crt_set_key (gnutls_x509_crt_t crt, gnutls_x509_privkey_t key)
-{
-  int result;
-
-  if (crt == NULL)
-    {
-      gnutls_assert ();
-      return GNUTLS_E_INVALID_REQUEST;
-    }
-
-  result = _gnutls_x509_encode_and_copy_PKI_params (crt->cert,
-                                                    
"tbsCertificate.subjectPublicKeyInfo",
-                                                    key->pk_algorithm,
-                                                    key->params,
-                                                    key->params_size);
-
-  if (result < 0)
-    {
-      gnutls_assert ();
-      return result;
-    }
-
-  return 0;
-}
-
-/**
-  * gnutls_x509_crt_set_crq - This function will associate the Certificate 
with a request
-  * @crt: should contain a gnutls_x509_crt_t structure
-  * @crq: holds a certificate request
-  *
-  * This function will set the name and public parameters from the given 
certificate request to the
-  * certificate. Only RSA keys are currently supported.
-  *
-  * Returns 0 on success.
-  *
-  **/
-int
-gnutls_x509_crt_set_crq (gnutls_x509_crt_t crt, gnutls_x509_crq_t crq)
-{
-  int result;
-  int pk_algorithm;
-
-  if (crt == NULL || crq == NULL)
-    {
-      gnutls_assert ();
-      return GNUTLS_E_INVALID_REQUEST;
-    }
-
-  pk_algorithm = gnutls_x509_crq_get_pk_algorithm (crq, NULL);
-
-  result = asn1_copy_node (crt->cert, "tbsCertificate.subject",
-                           crq->crq, "certificationRequestInfo.subject");
-  if (result != ASN1_SUCCESS)
-    {
-      gnutls_assert ();
-      return mhd_gtls_asn2err (result);
-    }
-
-  result =
-    asn1_copy_node (crt->cert, "tbsCertificate.subjectPublicKeyInfo",
-                    crq->crq, "certificationRequestInfo.subjectPKInfo");
-  if (result != ASN1_SUCCESS)
-    {
-      gnutls_assert ();
-      return mhd_gtls_asn2err (result);
-    }
-
-  return 0;
-}
-
-/**
-  * gnutls_x509_crt_set_extension_by_oid - This function will set an arbitrary 
extension
-  * @crt: should contain a gnutls_x509_crt_t structure
-  * @oid: holds an Object Identified in null terminated string
-  * @buf: a pointer to a DER encoded data
-  * @sizeof_buf: holds the size of @buf
-  * @critical: should be non zero if the extension is to be marked as critical
-  *
-  * This function will set an the extension, by the specified OID, in the 
certificate.
-  * The extension data should be binary data DER encoded.
-  *
-  * Returns 0 on success and a negative value in case of an error.
-  *
-  **/
-int
-gnutls_x509_crt_set_extension_by_oid (gnutls_x509_crt_t crt,
-                                      const char *oid, const void *buf,
-                                      size_t sizeof_buf,
-                                      unsigned int critical)
-{
-  int result;
-  gnutls_datum_t der_data;
-
-  der_data.data = (void *) buf;
-  der_data.size = sizeof_buf;
-
-  if (crt == NULL)
-    {
-      gnutls_assert ();
-      return GNUTLS_E_INVALID_REQUEST;
-    }
-
-  result = _gnutls_x509_crt_set_extension (crt, oid, &der_data, critical);
-  if (result < 0)
-    {
-      gnutls_assert ();
-      return result;
-    }
-
-  crt->use_extensions = 1;
-
-  return 0;
-
-}
-
-/**
- * gnutls_x509_crt_set_basic_constraints - This function will set the 
basicConstraints extension
- * @crt: should contain a gnutls_x509_crt_t structure
- * @ca: true(1) or false(0). Depending on the Certificate authority status.
- * @pathLenConstraint: non-negative values indicate maximum length of path,
- *   and negative values indicate that the pathLenConstraints field should
- *   not be present.
- *
- * This function will set the basicConstraints certificate extension.
- *
- * Returns 0 on success.
- *
- **/
-int
-gnutls_x509_crt_set_basic_constraints (gnutls_x509_crt_t crt,
-                                       unsigned int ca, int pathLenConstraint)
-{
-  int result;
-  gnutls_datum_t der_data;
-
-  if (crt == NULL)
-    {
-      gnutls_assert ();
-      return GNUTLS_E_INVALID_REQUEST;
-    }
-
-  /* generate the extension.
-   */
-  result = _gnutls_x509_ext_gen_basicConstraints (ca, pathLenConstraint,
-                                                  &der_data);
-  if (result < 0)
-    {
-      gnutls_assert ();
-      return result;
-    }
-
-  result = _gnutls_x509_crt_set_extension (crt, "2.5.29.19", &der_data, 1);
-
-  _gnutls_free_datum (&der_data);
-
-  if (result < 0)
-    {
-      gnutls_assert ();
-      return result;
-    }
-
-  crt->use_extensions = 1;
-
-  return 0;
-}
-
-/**
- * gnutls_x509_crt_set_ca_status - This function will set the basicConstraints 
extension
- * @crt: should contain a gnutls_x509_crt_t structure
- * @ca: true(1) or false(0). Depending on the Certificate authority status.
- *
- * This function will set the basicConstraints certificate extension.
- * Use gnutls_x509_crt_set_basic_constraints() if you want to control
- * the pathLenConstraint field too.
- *
- * Returns 0 on success.
- *
- **/
-int
-gnutls_x509_crt_set_ca_status (gnutls_x509_crt_t crt, unsigned int ca)
-{
-  return gnutls_x509_crt_set_basic_constraints (crt, ca, -1);
-}
-
-/**
-  * gnutls_x509_crt_set_key_usage - This function will set the keyUsage 
extension
-  * @crt: should contain a gnutls_x509_crt_t structure
-  * @usage: an ORed sequence of the GNUTLS_KEY_* elements.
-  *
-  * This function will set the keyUsage certificate extension.
-  *
-  * Returns 0 on success.
-  *
-  **/
-int
-gnutls_x509_crt_set_key_usage (gnutls_x509_crt_t crt, unsigned int usage)
-{
-  int result;
-  gnutls_datum_t der_data;
-
-  if (crt == NULL)
-    {
-      gnutls_assert ();
-      return GNUTLS_E_INVALID_REQUEST;
-    }
-
-  /* generate the extension.
-   */
-  result = _gnutls_x509_ext_gen_keyUsage ((uint16_t) usage, &der_data);
-  if (result < 0)
-    {
-      gnutls_assert ();
-      return result;
-    }
-
-  result = _gnutls_x509_crt_set_extension (crt, "2.5.29.15", &der_data, 1);
-
-  _gnutls_free_datum (&der_data);
-
-  if (result < 0)
-    {
-      gnutls_assert ();
-      return result;
-    }
-
-  crt->use_extensions = 1;
-
-  return 0;
-}
-
-/**
-  * gnutls_x509_crt_set_subject_alternative_name - This function will set the 
subject Alternative Name
-  * @crt: should contain a gnutls_x509_crt_t structure
-  * @type: is one of the gnutls_x509_subject_alt_name_t enumerations
-  * @data_string: The data to be set
-  *
-  * This function will set the subject alternative name certificate extension.
-  *
-  * Returns 0 on success.
-  *
-  **/
-int
-gnutls_x509_crt_set_subject_alternative_name (gnutls_x509_crt_t crt,
-                                              gnutls_x509_subject_alt_name_t
-                                              type, const char *data_string)
-{
-  int result;
-  gnutls_datum_t der_data;
-  gnutls_datum_t dnsname;
-  unsigned int critical;
-
-  if (crt == NULL)
-    {
-      gnutls_assert ();
-      return GNUTLS_E_INVALID_REQUEST;
-    }
-
-  /* Check if the extension already exists.
-   */
-  result =
-    _gnutls_x509_crt_get_extension (crt, "2.5.29.17", 0, &dnsname, &critical);
-
-  if (result >= 0)
-    _gnutls_free_datum (&dnsname);
-  if (result != GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE)
-    {
-      gnutls_assert ();
-      return GNUTLS_E_INVALID_REQUEST;
-    }
-
-  /* generate the extension.
-   */
-  result =
-    _gnutls_x509_ext_gen_subject_alt_name (type, data_string, &der_data);
-  if (result < 0)
-    {
-      gnutls_assert ();
-      return result;
-    }
-
-  result = _gnutls_x509_crt_set_extension (crt, "2.5.29.17", &der_data, 0);
-
-  _gnutls_free_datum (&der_data);
-
-  if (result < 0)
-    {
-      gnutls_assert ();
-      return result;
-    }
-
-  crt->use_extensions = 1;
-
-  return 0;
-}
-
-/**
- * gnutls_x509_crt_set_proxy - Set the proxyCertInfo extension
- * @crt: should contain a gnutls_x509_crt_t structure
- * @pathLenConstraint: non-negative values indicate maximum length of path,
- *   and negative values indicate that the pathLenConstraints field should
- *   not be present.
- * @policyLanguage: OID describing the language of @policy.
- * @policy: opaque byte array with policy language, can be %NULL
- * @sizeof_policy: size of @policy.
- *
- * This function will set the proxyCertInfo extension.
- *
- * Returns 0 on success.
- *
- **/
-int
-gnutls_x509_crt_set_proxy (gnutls_x509_crt_t crt,
-                           int pathLenConstraint,
-                           const char *policyLanguage,
-                           const char *policy, size_t sizeof_policy)
-{
-  int result;
-  gnutls_datum_t der_data;
-
-  if (crt == NULL)
-    {
-      gnutls_assert ();
-      return GNUTLS_E_INVALID_REQUEST;
-    }
-
-  /* generate the extension.
-   */
-  result = _gnutls_x509_ext_gen_proxyCertInfo (pathLenConstraint,
-                                               policyLanguage,
-                                               policy, sizeof_policy,
-                                               &der_data);
-  if (result < 0)
-    {
-      gnutls_assert ();
-      return result;
-    }
-
-  result = _gnutls_x509_crt_set_extension (crt, "1.3.6.1.5.5.7.1.14",
-                                           &der_data, 1);
-
-  _gnutls_free_datum (&der_data);
-
-  if (result < 0)
-    {
-      gnutls_assert ();
-      return result;
-    }
-
-  crt->use_extensions = 1;
-
-  return 0;
-}
-
-/**
-  * gnutls_x509_crt_sign2 - This function will sign a certificate with a key
-  * @crt: should contain a gnutls_x509_crt_t structure
-  * @issuer: is the certificate of the certificate issuer
-  * @issuer_key: holds the issuer's private key
-  * @dig: The message digest to use. GNUTLS_DIG_SHA1 is the safe choice unless 
you know what you're doing.
-  * @flags: must be 0
-  *
-  * This function will sign the certificate with the issuer's private key, and
-  * will copy the issuer's information into the certificate.
-  *
-  * This must be the last step in a certificate generation since all
-  * the previously set parameters are now signed.
-  *
-  * Returns 0 on success.
-  *
-  **/
-int
-gnutls_x509_crt_sign2 (gnutls_x509_crt_t crt, gnutls_x509_crt_t issuer,
-                       gnutls_x509_privkey_t issuer_key,
-                       enum MHD_GNUTLS_HashAlgorithm dig, unsigned int flags)
-{
-  int result;
-
-  if (crt == NULL || issuer == NULL || issuer_key == NULL)
-    {
-      gnutls_assert ();
-      return GNUTLS_E_INVALID_REQUEST;
-    }
-
-  /* disable all the unneeded OPTIONAL fields.
-   */
-  disable_optional_stuff (crt);
-
-  result = _gnutls_x509_pkix_sign (crt->cert, "tbsCertificate",
-                                   dig, issuer, issuer_key);
-  if (result < 0)
-    {
-      gnutls_assert ();
-      return result;
-    }
-
-  return 0;
-}
-
-/**
-  * gnutls_x509_crt_sign - This function will sign a certificate with a key
-  * @crt: should contain a gnutls_x509_crt_t structure
-  * @issuer: is the certificate of the certificate issuer
-  * @issuer_key: holds the issuer's private key
-  *
-  * This function is the same a gnutls_x509_crt_sign2() with no flags, and
-  * SHA1 as the hash algorithm.
-  *
-  * Returns 0 on success.
-  *
-  **/
-int
-gnutls_x509_crt_sign (gnutls_x509_crt_t crt, gnutls_x509_crt_t issuer,
-                      gnutls_x509_privkey_t issuer_key)
-{
-  return gnutls_x509_crt_sign2 (crt, issuer, issuer_key, MHD_GNUTLS_MAC_SHA1,
-                                0);
-}
-
-/**
-  * gnutls_x509_crt_set_activation_time - This function will set the 
Certificate's activation time
-  * @cert: should contain a gnutls_x509_crt_t structure
-  * @act_time: The actual time
-  *
-  * This function will set the time this Certificate was or will be activated.
-  *
-  * Returns 0 on success, or a negative value in case of an error.
-  *
-  **/
-int
-gnutls_x509_crt_set_activation_time (gnutls_x509_crt_t cert, time_t act_time)
-{
-  if (cert == NULL)
-    {
-      gnutls_assert ();
-      return GNUTLS_E_INVALID_REQUEST;
-    }
-
-  return _gnutls_x509_set_time (cert->cert,
-                                "tbsCertificate.validity.notBefore",
-                                act_time);
-}
-
-/**
-  * gnutls_x509_crt_set_expiration_time - This function will set the 
Certificate's expiration time
-  * @cert: should contain a gnutls_x509_crt_t structure
-  * @exp_time: The actual time
-  *
-  * This function will set the time this Certificate will expire.
-  *
-  * Returns 0 on success, or a negative value in case of an error.
-  *
-  **/
-int
-gnutls_x509_crt_set_expiration_time (gnutls_x509_crt_t cert, time_t exp_time)
-{
-  if (cert == NULL)
-    {
-      gnutls_assert ();
-      return GNUTLS_E_INVALID_REQUEST;
-    }
-  return _gnutls_x509_set_time (cert->cert,
-                                "tbsCertificate.validity.notAfter", exp_time);
-}
-
-/**
-  * gnutls_x509_crt_set_serial - This function will set the certificate's 
serial number
-  * @cert: should contain a gnutls_x509_crt_t structure
-  * @serial: The serial number
-  * @serial_size: Holds the size of the serial field.
-  *
-  * This function will set the X.509 certificate's serial number.
-  * Serial is not always a 32 or 64bit number. Some CAs use
-  * large serial numbers, thus it may be wise to handle it as something
-  * opaque.
-  *
-  * Returns 0 on success, or a negative value in case of an error.
-  *
-  **/
-int
-gnutls_x509_crt_set_serial (gnutls_x509_crt_t cert, const void *serial,
-                            size_t serial_size)
-{
-  int ret;
-
-  if (cert == NULL)
-    {
-      gnutls_assert ();
-      return GNUTLS_E_INVALID_REQUEST;
-    }
-
-  ret =
-    asn1_write_value (cert->cert, "tbsCertificate.serialNumber", serial,
-                      serial_size);
-  if (ret != ASN1_SUCCESS)
-    {
-      gnutls_assert ();
-      return mhd_gtls_asn2err (ret);
-    }
-
-  return 0;
-
-}
-
-/* If OPTIONAL fields have not been initialized then
- * disable them.
- */
-static void
-disable_optional_stuff (gnutls_x509_crt_t cert)
-{
-
-  asn1_write_value (cert->cert, "tbsCertificate.issuerUniqueID", NULL, 0);
-
-  asn1_write_value (cert->cert, "tbsCertificate.subjectUniqueID", NULL, 0);
-
-  if (cert->use_extensions == 0)
-    {
-      _gnutls_x509_log ("Disabling X.509 extensions.\n");
-      asn1_write_value (cert->cert, "tbsCertificate.extensions", NULL, 0);
-    }
-
-  return;
-}
-
-/**
-  * gnutls_x509_crt_set_crl_dist_points - This function will set the CRL dist 
points
-  * @crt: should contain a gnutls_x509_crt_t structure
-  * @type: is one of the gnutls_x509_subject_alt_name_t enumerations
-  * @data_string: The data to be set
-  * @reason_flags: revocation reasons
-  *
-  * This function will set the CRL distribution points certificate extension.
-  *
-  * Returns 0 on success.
-  *
-  **/
-int
-gnutls_x509_crt_set_crl_dist_points (gnutls_x509_crt_t crt,
-                                     gnutls_x509_subject_alt_name_t
-                                     type, const void *data_string,
-                                     unsigned int reason_flags)
-{
-  int result;
-  gnutls_datum_t der_data;
-  gnutls_datum_t oldname;
-  unsigned int critical;
-
-  if (crt == NULL)
-    {
-      gnutls_assert ();
-      return GNUTLS_E_INVALID_REQUEST;
-    }
-
-  /* Check if the extension already exists.
-   */
-  result =
-    _gnutls_x509_crt_get_extension (crt, "2.5.29.31", 0, &oldname, &critical);
-
-  if (result >= 0)
-    _gnutls_free_datum (&oldname);
-  if (result != GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE)
-    {
-      gnutls_assert ();
-      return GNUTLS_E_INVALID_REQUEST;
-    }
-
-  /* generate the extension.
-   */
-  result =
-    _gnutls_x509_ext_gen_crl_dist_points (type, data_string,
-                                          reason_flags, &der_data);
-  if (result < 0)
-    {
-      gnutls_assert ();
-      return result;
-    }
-
-  result = _gnutls_x509_crt_set_extension (crt, "2.5.29.31", &der_data, 0);
-
-  _gnutls_free_datum (&der_data);
-
-  if (result < 0)
-    {
-      gnutls_assert ();
-      return result;
-    }
-
-  crt->use_extensions = 1;
-
-  return 0;
-}
-
-/**
-  * gnutls_x509_crt_cpy_crl_dist_points - This function will copy the CRL dist 
points
-  * @dst: should contain a gnutls_x509_crt_t structure
-  * @src: the certificate where the dist points will be copied from
-  *
-  * This function will copy the CRL distribution points certificate
-  * extension, from the source to the destination certificate.
-  * This may be useful to copy from a CA certificate to issued ones.
-  *
-  * Returns 0 on success.
-  *
-  **/
-int
-gnutls_x509_crt_cpy_crl_dist_points (gnutls_x509_crt_t dst,
-                                     gnutls_x509_crt_t src)
-{
-  int result;
-  gnutls_datum_t der_data;
-  unsigned int critical;
-
-  if (dst == NULL || src == NULL)
-    {
-      gnutls_assert ();
-      return GNUTLS_E_INVALID_REQUEST;
-    }
-
-  /* Check if the extension already exists.
-   */
-  result =
-    _gnutls_x509_crt_get_extension (src, "2.5.29.31", 0, &der_data,
-                                    &critical);
-  if (result < 0)
-    {
-      gnutls_assert ();
-      return result;
-    }
-
-  result =
-    _gnutls_x509_crt_set_extension (dst, "2.5.29.31", &der_data, critical);
-  _gnutls_free_datum (&der_data);
-
-  if (result < 0)
-    {
-      gnutls_assert ();
-      return result;
-    }
-
-  dst->use_extensions = 1;
-
-  return 0;
-}
-
-/**
-  * gnutls_x509_crt_set_subject_key_id - This function will set the 
certificate's subject key id
-  * @cert: should contain a gnutls_x509_crt_t structure
-  * @id: The key ID
-  * @id_size: Holds the size of the serial field.
-  *
-  * This function will set the X.509 certificate's subject key ID extension.
-  *
-  * Returns 0 on success, or a negative value in case of an error.
-  *
-  **/
-int
-gnutls_x509_crt_set_subject_key_id (gnutls_x509_crt_t cert,
-                                    const void *id, size_t id_size)
-{
-  int result;
-  gnutls_datum_t old_id, der_data;
-  unsigned int critical;
-
-  if (cert == NULL)
-    {
-      gnutls_assert ();
-      return GNUTLS_E_INVALID_REQUEST;
-    }
-
-  /* Check if the extension already exists.
-   */
-  result =
-    _gnutls_x509_crt_get_extension (cert, "2.5.29.14", 0, &old_id, &critical);
-
-  if (result >= 0)
-    _gnutls_free_datum (&old_id);
-  if (result != GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE)
-    {
-      gnutls_assert ();
-      return GNUTLS_E_INVALID_REQUEST;
-    }
-
-  /* generate the extension.
-   */
-  result = _gnutls_x509_ext_gen_key_id (id, id_size, &der_data);
-  if (result < 0)
-    {
-      gnutls_assert ();
-      return result;
-    }
-
-  result = _gnutls_x509_crt_set_extension (cert, "2.5.29.14", &der_data, 0);
-
-  _gnutls_free_datum (&der_data);
-
-  if (result < 0)
-    {
-      gnutls_assert ();
-      return result;
-    }
-
-  cert->use_extensions = 1;
-
-  return 0;
-}
-
-/**
-  * gnutls_x509_crt_set_authority_key_id - This function will set the 
certificate authority's key id
-  * @cert: should contain a gnutls_x509_crt_t structure
-  * @id: The key ID
-  * @id_size: Holds the size of the serial field.
-  *
-  * This function will set the X.509 certificate's authority key ID extension.
-  * Only the keyIdentifier field can be set with this function.
-  *
-  * Returns 0 on success, or a negative value in case of an error.
-  *
-  **/
-int
-gnutls_x509_crt_set_authority_key_id (gnutls_x509_crt_t cert,
-                                      const void *id, size_t id_size)
-{
-  int result;
-  gnutls_datum_t old_id, der_data;
-  unsigned int critical;
-
-  if (cert == NULL)
-    {
-      gnutls_assert ();
-      return GNUTLS_E_INVALID_REQUEST;
-    }
-
-  /* Check if the extension already exists.
-   */
-  result =
-    _gnutls_x509_crt_get_extension (cert, "2.5.29.35", 0, &old_id, &critical);
-
-  if (result >= 0)
-    _gnutls_free_datum (&old_id);
-  if (result != GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE)
-    {
-      gnutls_assert ();
-      return GNUTLS_E_INVALID_REQUEST;
-    }
-
-  /* generate the extension.
-   */
-  result = _gnutls_x509_ext_gen_auth_key_id (id, id_size, &der_data);
-  if (result < 0)
-    {
-      gnutls_assert ();
-      return result;
-    }
-
-  result = _gnutls_x509_crt_set_extension (cert, "2.5.29.35", &der_data, 0);
-
-  _gnutls_free_datum (&der_data);
-
-  if (result < 0)
-    {
-      gnutls_assert ();
-      return result;
-    }
-
-  cert->use_extensions = 1;
-
-  return 0;
-}
-
-/**
-  * gnutls_x509_crt_set_key_purpose_oid - This function sets the Certificate's 
key purpose OIDs
-  * @cert: should contain a gnutls_x509_crt_t structure
-  * @oid: a pointer to a null terminated string that holds the OID
-  * @critical: Whether this extension will be critical or not
-  *
-  * This function will set the key purpose OIDs of the Certificate.
-  * These are stored in the Extended Key Usage extension (2.5.29.37)
-  * See the GNUTLS_KP_* definitions for human readable names.
-  *
-  * Subsequent calls to this function will append OIDs to the OID list.
-  *
-  * On success 0 is returned.
-  *
-  **/
-int
-gnutls_x509_crt_set_key_purpose_oid (gnutls_x509_crt_t cert,
-                                     const void *oid, unsigned int critical)
-{
-  int result;
-  gnutls_datum_t old_id, der_data;
-  ASN1_TYPE c2 = ASN1_TYPE_EMPTY;
-
-  if (cert == NULL)
-    {
-      gnutls_assert ();
-      return GNUTLS_E_INVALID_REQUEST;
-    }
-
-  result = asn1_create_element
-    (_gnutls_get_pkix (), "PKIX1.ExtKeyUsageSyntax", &c2);
-  if (result != ASN1_SUCCESS)
-    {
-      gnutls_assert ();
-      return mhd_gtls_asn2err (result);
-    }
-
-  /* Check if the extension already exists.
-   */
-  result =
-    _gnutls_x509_crt_get_extension (cert, "2.5.29.37", 0, &old_id, NULL);
-
-  if (result >= 0)
-    {
-      /* decode it.
-       */
-      result = asn1_der_decoding (&c2, old_id.data, old_id.size, NULL);
-      _gnutls_free_datum (&old_id);
-
-      if (result != ASN1_SUCCESS)
-        {
-          gnutls_assert ();
-          asn1_delete_structure (&c2);
-          return mhd_gtls_asn2err (result);
-        }
-
-    }
-
-  /* generate the extension.
-   */
-  /* 1. create a new element.
-   */
-  result = asn1_write_value (c2, "", "NEW", 1);
-  if (result != ASN1_SUCCESS)
-    {
-      gnutls_assert ();
-      asn1_delete_structure (&c2);
-      return mhd_gtls_asn2err (result);
-    }
-
-  /* 2. Add the OID.
-   */
-  result = asn1_write_value (c2, "?LAST", oid, 1);
-  if (result != ASN1_SUCCESS)
-    {
-      gnutls_assert ();
-      asn1_delete_structure (&c2);
-      return mhd_gtls_asn2err (result);
-    }
-
-  result = _gnutls_x509_der_encode (c2, "", &der_data, 0);
-  asn1_delete_structure (&c2);
-
-  if (result != ASN1_SUCCESS)
-    {
-      gnutls_assert ();
-      return mhd_gtls_asn2err (result);
-    }
-
-  result = _gnutls_x509_crt_set_extension (cert, "2.5.29.37",
-                                           &der_data, critical);
-
-  _gnutls_free_datum (&der_data);
-
-  if (result < 0)
-    {
-      gnutls_assert ();
-      return result;
-    }
-
-  cert->use_extensions = 1;
-
-  return 0;
-
-}
-
-#endif /* ENABLE_PKI */





reply via email to

[Prev in Thread] Current Thread [Next in Thread]