Annotation of embedaddon/strongswan/src/libstrongswan/credentials/certificates/crl.h, revision 1.1.1.1

1.1       misho       1: /*
                      2:  * Copyright (C) 2008 Martin Willi
                      3:  * Copyright (C) 2006 Andreas Steffen
                      4:  * HSR Hochschule fuer Technik Rapperswil
                      5:  *
                      6:  * This program is free software; you can redistribute it and/or modify it
                      7:  * under the terms of the GNU General Public License as published by the
                      8:  * Free Software Foundation; either version 2 of the License, or (at your
                      9:  * option) any later version.  See <http://www.fsf.org/copyleft/gpl.txt>.
                     10:  *
                     11:  * This program is distributed in the hope that it will be useful, but
                     12:  * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
                     13:  * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
                     14:  * for more details.
                     15:  */
                     16: 
                     17: /**
                     18:  * @defgroup crl crl
                     19:  * @{ @ingroup certificates
                     20:  */
                     21: 
                     22: #ifndef CRL_H_
                     23: #define CRL_H_
                     24: 
                     25: typedef struct crl_t crl_t;
                     26: typedef enum crl_reason_t crl_reason_t;
                     27: 
                     28: #include <library.h>
                     29: #include <credentials/certificates/certificate.h>
                     30: 
                     31: /* <wincrypt.h> comes with CRL_REASON clashing with ours. Even if the values
                     32:  * are identical, we undef them here to use our enum instead of defines. */
                     33: #ifdef WIN32
                     34: # undef CRL_REASON_UNSPECIFIED
                     35: # undef CRL_REASON_KEY_COMPROMISE
                     36: # undef CRL_REASON_CA_COMPROMISE
                     37: # undef CRL_REASON_AFFILIATION_CHANGED
                     38: # undef CRL_REASON_SUPERSEDED
                     39: # undef CRL_REASON_CERTIFICATE_HOLD
                     40: # undef CRL_REASON_REMOVE_FROM_CRL
                     41: #endif
                     42: 
                     43: /**
                     44:  * RFC 2459 CRL reason codes
                     45:  */
                     46: enum crl_reason_t {
                     47:        CRL_REASON_UNSPECIFIED                          = 0,
                     48:        CRL_REASON_KEY_COMPROMISE                       = 1,
                     49:        CRL_REASON_CA_COMPROMISE                        = 2,
                     50:        CRL_REASON_AFFILIATION_CHANGED          = 3,
                     51:        CRL_REASON_SUPERSEDED                           = 4,
                     52:        CRL_REASON_CESSATION_OF_OPERATON        = 5,
                     53:        CRL_REASON_CERTIFICATE_HOLD                     = 6,
                     54:        CRL_REASON_REMOVE_FROM_CRL                      = 8,
                     55: };
                     56: 
                     57: /**
                     58:  * enum names for crl_reason_t
                     59:  */
                     60: extern enum_name_t *crl_reason_names;
                     61: 
                     62: /**
                     63:  * X509 certificate revocation list (CRL) interface definition.
                     64:  */
                     65: struct crl_t {
                     66: 
                     67:        /**
                     68:         * Implements (parts of) the certificate_t interface
                     69:         */
                     70:        certificate_t certificate;
                     71: 
                     72:        /**
                     73:         * Get the CRL serial number.
                     74:         *
                     75:         * @return                      chunk pointing to internal crlNumber
                     76:         */
                     77:        chunk_t (*get_serial)(crl_t *this);
                     78: 
                     79:        /**
                     80:         * Get the the authorityKeyIdentifier.
                     81:         *
                     82:         * @return                      authKeyIdentifier chunk, point to internal data
                     83:         */
                     84:        chunk_t (*get_authKeyIdentifier)(crl_t *this);
                     85: 
                     86:        /**
                     87:         * Is this CRL a delta CRL?
                     88:         *
                     89:         * @param base_crl      gets to baseCrlNumber, if this is a delta CRL
                     90:         * @return                      TRUE if delta CRL
                     91:         */
                     92:        bool (*is_delta_crl)(crl_t *this, chunk_t *base_crl);
                     93: 
                     94:        /**
                     95:         * Create an enumerator over Freshest CRL distribution points and issuers.
                     96:         *
                     97:         * @return                      enumerator over x509_cdp_t
                     98:         */
                     99:        enumerator_t* (*create_delta_crl_uri_enumerator)(crl_t *this);
                    100: 
                    101:        /**
                    102:         * Create an enumerator over all revoked certificates.
                    103:         *
                    104:         * The enumerator takes 3 pointer arguments:
                    105:         * chunk_t serial, time_t revocation_date, crl_reason_t reason
                    106:         *
                    107:         * @return                      enumerator over revoked certificates.
                    108:         */
                    109:        enumerator_t* (*create_enumerator)(crl_t *this);
                    110: };
                    111: 
                    112: /**
                    113:  * Generic check if a given CRL is newer than another.
                    114:  *
                    115:  * @param crl                  CRL
                    116:  * @param other                        CRL to compare to
                    117:  * @return                             TRUE if this newer than other
                    118:  */
                    119: bool crl_is_newer(crl_t *crl, crl_t *other);
                    120: 
                    121: #endif /** CRL_H_ @}*/

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>