Annotation of embedaddon/strongswan/src/libcharon/encoding/payloads/cert_payload.h, revision 1.1

1.1     ! misho       1: /*
        !             2:  * Copyright (C) 2008 Tobias Brunner
        !             3:  * Copyright (C) 2005-2007 Martin Willi
        !             4:  * Copyright (C) 2005 Jan Hutter
        !             5:  * HSR Hochschule fuer Technik Rapperswil
        !             6:  *
        !             7:  * This program is free software; you can redistribute it and/or modify it
        !             8:  * under the terms of the GNU General Public License as published by the
        !             9:  * Free Software Foundation; either version 2 of the License, or (at your
        !            10:  * option) any later version.  See <http://www.fsf.org/copyleft/gpl.txt>.
        !            11:  *
        !            12:  * This program is distributed in the hope that it will be useful, but
        !            13:  * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
        !            14:  * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
        !            15:  * for more details.
        !            16:  */
        !            17: 
        !            18: /**
        !            19:  * @defgroup cert_payload cert_payload
        !            20:  * @{ @ingroup payloads
        !            21:  */
        !            22: 
        !            23: #ifndef CERT_PAYLOAD_H_
        !            24: #define CERT_PAYLOAD_H_
        !            25: 
        !            26: typedef struct cert_payload_t cert_payload_t;
        !            27: typedef enum cert_encoding_t cert_encoding_t;
        !            28: 
        !            29: #include <library.h>
        !            30: #include <credentials/certificates/certificate.h>
        !            31: #include <credentials/containers/container.h>
        !            32: #include <encoding/payloads/payload.h>
        !            33: 
        !            34: /**
        !            35:  * Certificate encodings, as in RFC4306
        !            36:  */
        !            37: enum cert_encoding_t {
        !            38:        ENC_PKCS7_WRAPPED_X509 =                 1,
        !            39:        ENC_PGP =                                                2,
        !            40:        ENC_DNS_SIGNED_KEY =                     3,
        !            41:        ENC_X509_SIGNATURE =                     4,
        !            42:        ENC_KERBEROS_TOKEN      =                        6,
        !            43:        ENC_CRL =                                                7,
        !            44:        ENC_ARL =                                                8,
        !            45:        ENC_SPKI =                                               9,
        !            46:        ENC_X509_ATTRIBUTE =                    10,
        !            47:        ENC_RAW_RSA_KEY =                               11,
        !            48:        ENC_X509_HASH_AND_URL =                 12,
        !            49:        ENC_X509_HASH_AND_URL_BUNDLE =  13,
        !            50:        ENC_OCSP_CONTENT =                              14,  /* from RFC 4806 */
        !            51: };
        !            52: 
        !            53: /**
        !            54:  * Enum names for cert_encoding_t
        !            55:  */
        !            56: extern enum_name_t *cert_encoding_names;
        !            57: 
        !            58: /**
        !            59:  * Class representing an IKEv1/IKEv2 CERT payload.
        !            60:  */
        !            61: struct cert_payload_t {
        !            62: 
        !            63:        /**
        !            64:         * The payload_t interface.
        !            65:         */
        !            66:        payload_t payload_interface;
        !            67: 
        !            68:        /**
        !            69:         * Get the payloads encoded certificate.
        !            70:         *
        !            71:         * @return                              certificate copy
        !            72:         */
        !            73:        certificate_t *(*get_cert)(cert_payload_t *this);
        !            74: 
        !            75:        /**
        !            76:         * Get the payloads certificate container.
        !            77:         *
        !            78:         * @return                              container copy
        !            79:         */
        !            80:        container_t *(*get_container)(cert_payload_t *this);
        !            81: 
        !            82:        /**
        !            83:         * Get the encoding of the certificate.
        !            84:         *
        !            85:         * @return                              encoding
        !            86:         */
        !            87:        cert_encoding_t (*get_cert_encoding)(cert_payload_t *this);
        !            88: 
        !            89:        /**
        !            90:         * Get the hash if this is a hash and URL encoded certificate.
        !            91:         *
        !            92:         * This function returns internal data, do not free.
        !            93:         *
        !            94:         * @return                              hash
        !            95:         */
        !            96:        chunk_t (*get_hash)(cert_payload_t *this);
        !            97: 
        !            98:        /**
        !            99:         * Get the URL if this is a hash and URL encoded certificate.
        !           100:         *
        !           101:         * This function returns internal data, do not free.
        !           102:         *
        !           103:         * @return                              url
        !           104:         */
        !           105:        char *(*get_url)(cert_payload_t *this);
        !           106: 
        !           107:        /**
        !           108:         * Destroys the cert_payload object.
        !           109:         */
        !           110:        void (*destroy) (cert_payload_t *this);
        !           111: };
        !           112: 
        !           113: /**
        !           114:  * Creates an empty certificate payload.
        !           115:  *
        !           116:  * @param type                         payload type (for IKEv1 or IKEv2)
        !           117:  * @return                                     cert_payload_t object
        !           118:  */
        !           119: cert_payload_t *cert_payload_create(payload_type_t type);
        !           120: 
        !           121: /**
        !           122:  * Creates a certificate payload with an embedded certificate.
        !           123:  *
        !           124:  * @param type                         payload type (for IKEv1 or IKEv2)
        !           125:  * @param cert                         certificate to embed
        !           126:  * @return                                     cert_payload_t object
        !           127:  */
        !           128: cert_payload_t *cert_payload_create_from_cert(payload_type_t type,
        !           129:                                                                                          certificate_t *cert);
        !           130: 
        !           131: /**
        !           132:  * Creates an IKEv2 certificate payload with hash and URL encoding.
        !           133:  *
        !           134:  * @param hash                         hash of the DER encoded certificate (gets cloned)
        !           135:  * @param url                          URL to the certificate
        !           136:  * @return                                     cert_payload_t object
        !           137:  */
        !           138: cert_payload_t *cert_payload_create_from_hash_and_url(chunk_t hash, char *url);
        !           139: 
        !           140: /**
        !           141:  * Creates a custom certificate payload using type and associated data.
        !           142:  *
        !           143:  * @param type                         payload type (for IKEv1 or IKEv2)
        !           144:  * @param encoding                     encoding type of certificate
        !           145:  * @param data                         associated data (gets owned)
        !           146:  * @return                                     cert_payload_t object
        !           147:  */
        !           148: cert_payload_t *cert_payload_create_custom(payload_type_t type,
        !           149:                                                                                cert_encoding_t encoding, chunk_t data);
        !           150: 
        !           151: #endif /** CERT_PAYLOAD_H_ @}*/

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