Annotation of embedaddon/strongswan/src/libstrongswan/credentials/keys/shared_key.h, revision 1.1.1.1

1.1       misho       1: /*
                      2:  * Copyright (C) 2007 Martin Willi
                      3:  * HSR Hochschule fuer Technik Rapperswil
                      4:  *
                      5:  * This program is free software; you can redistribute it and/or modify it
                      6:  * under the terms of the GNU General Public License as published by the
                      7:  * Free Software Foundation; either version 2 of the License, or (at your
                      8:  * option) any later version.  See <http://www.fsf.org/copyleft/gpl.txt>.
                      9:  *
                     10:  * This program is distributed in the hope that it will be useful, but
                     11:  * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
                     12:  * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
                     13:  * for more details.
                     14:  */
                     15: 
                     16: /**
                     17:  * @defgroup shared_key shared_key
                     18:  * @{ @ingroup keys
                     19:  */
                     20: 
                     21: #ifndef SHARED_KEY_H_
                     22: #define SHARED_KEY_H_
                     23: 
                     24: #include <collections/enumerator.h>
                     25: #include <utils/identification.h>
                     26: 
                     27: typedef struct shared_key_t shared_key_t;
                     28: typedef enum shared_key_type_t shared_key_type_t;
                     29: 
                     30: /**
                     31:  * Type of a shared key.
                     32:  */
                     33: enum shared_key_type_t {
                     34:        /** wildcard for all keys */
                     35:        SHARED_ANY,
                     36:        /** PSK for IKE authentication */
                     37:        SHARED_IKE,
                     38:        /** key for a EAP authentication method */
                     39:        SHARED_EAP,
                     40:        /** key to decrypt encrypted private keys */
                     41:        SHARED_PRIVATE_KEY_PASS,
                     42:        /** PIN to unlock a smartcard */
                     43:        SHARED_PIN,
                     44:        /** Calculated NT Hash = MD4(UTF-16LE(password)) */
                     45:        SHARED_NT_HASH,
                     46:        /** Postquantum Preshared Key */
                     47:        SHARED_PPK,
                     48: };
                     49: 
                     50: /**
                     51:  * enum names for shared_key_type_t
                     52:  */
                     53: extern enum_name_t *shared_key_type_names;
                     54: 
                     55: /**
                     56:  * A symmetric key shared between multiple owners.
                     57:  *
                     58:  * This class is not thread save, do not add owners while others might be
                     59:  * reading.
                     60:  */
                     61: struct shared_key_t {
                     62: 
                     63:        /**
                     64:         * Get the kind of this key.
                     65:         *
                     66:         * @return                      type of the key
                     67:         */
                     68:        shared_key_type_t (*get_type)(shared_key_t *this);
                     69: 
                     70:        /**
                     71:         * Get the shared key data.
                     72:         *
                     73:         * @return                      chunk pointing to the internal key
                     74:         */
                     75:        chunk_t (*get_key)(shared_key_t *this);
                     76: 
                     77:        /**
                     78:         * Increase refcount of the key.
                     79:         *
                     80:         * @return                      this with an increased refcount
                     81:         */
                     82:        shared_key_t* (*get_ref)(shared_key_t *this);
                     83: 
                     84:        /**
                     85:         * Destroy a shared_key instance if all references are gone.
                     86:         */
                     87:        void (*destroy)(shared_key_t *this);
                     88: };
                     89: 
                     90: /**
                     91:  * A simple private key implementation
                     92:  *
                     93:  * @param type         type of the shared key
                     94:  * @param key          key data, gets owned by instance
                     95:  * @return                     simple shared key instance
                     96:  */
                     97: shared_key_t *shared_key_create(shared_key_type_t type, chunk_t key);
                     98: 
                     99: #endif /** SHARED_KEY_H_ @} */

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