Annotation of embedaddon/strongswan/src/libstrongswan/credentials/containers/container.h, revision 1.1.1.1

1.1       misho       1: /*
                      2:  * Copyright (C) 2013 Tobias Brunner
                      3:  * HSR Hochschule fuer Technik Rapperswil
                      4:  *
                      5:  * Copyright (C) 2012 Martin Willi
                      6:  * Copyright (C) 2012 revosec AG
                      7:  *
                      8:  * This program is free software; you can redistribute it and/or modify it
                      9:  * under the terms of the GNU General Public License as published by the
                     10:  * Free Software Foundation; either version 2 of the License, or (at your
                     11:  * option) any later version.  See <http://www.fsf.org/copyleft/gpl.txt>.
                     12:  *
                     13:  * This program is distributed in the hope that it will be useful, but
                     14:  * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
                     15:  * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
                     16:  * for more details.
                     17:  */
                     18: 
                     19: /**
                     20:  * @defgroup container container
                     21:  * @{ @ingroup containers
                     22:  */
                     23: 
                     24: #ifndef CONTAINER_H_
                     25: #define CONTAINER_H_
                     26: 
                     27: typedef struct container_t container_t;
                     28: typedef enum container_type_t container_type_t;
                     29: 
                     30: #include <utils/chunk.h>
                     31: #include <collections/enumerator.h>
                     32: 
                     33: /**
                     34:  * Type of the container.
                     35:  */
                     36: enum container_type_t {
                     37:        /** Any kind of PKCS#7/CMS container */
                     38:        CONTAINER_PKCS7,
                     39:        /** PKCS#7/CMS plain "data" */
                     40:        CONTAINER_PKCS7_DATA,
                     41:        /** PKCS#7/CMS "signed-data" */
                     42:        CONTAINER_PKCS7_SIGNED_DATA,
                     43:        /** PKCS#7/CMS "enveloped-data" */
                     44:        CONTAINER_PKCS7_ENVELOPED_DATA,
                     45:        /** PKCS#7/CMS "encrypted-data" */
                     46:        CONTAINER_PKCS7_ENCRYPTED_DATA,
                     47:        /** A PKCS#12 container */
                     48:        CONTAINER_PKCS12,
                     49: };
                     50: 
                     51: /**
                     52:  * Enum names for container_type_t
                     53:  */
                     54: extern enum_name_t *container_type_names;
                     55: 
                     56: /**
                     57:  * Generic interface for cryptographic containers.
                     58:  */
                     59: struct container_t {
                     60: 
                     61:        /**
                     62:         * Get the type of the container.
                     63:         *
                     64:         * @return              container type
                     65:         */
                     66:        container_type_t (*get_type)(container_t *this);
                     67: 
                     68:        /**
                     69:         * Create an enumerator over trustchains for valid container signatures.
                     70:         *
                     71:         * @return              enumerator over auth_cfg_t*
                     72:         */
                     73:        enumerator_t* (*create_signature_enumerator)(container_t *this);
                     74: 
                     75:        /**
                     76:         * Get signed/decrypted data wrapped in this container.
                     77:         *
                     78:         * This function does not verify any associated signatures, use
                     79:         * create_signature_enumerator() to verify them.
                     80:         *
                     81:         * @param data  allocated data wrapped in this container
                     82:         * @return              TRUE if data decrypted successfully
                     83:         */
                     84:        bool (*get_data)(container_t *this, chunk_t *data);
                     85: 
                     86:        /**
                     87:         * Get the encoding of the full signed/encrypted container.
                     88:         *
                     89:         * @param data  allocated container encoding
                     90:         * @return              TRUE if encoding successful
                     91:         */
                     92:        bool (*get_encoding)(container_t *this, chunk_t *encoding);
                     93: 
                     94:        /**
                     95:         * Destroy a container_t.
                     96:         */
                     97:        void (*destroy)(container_t *this);
                     98: };
                     99: 
                    100: #endif /** CONTAINER_H_ @}*/

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