Annotation of embedaddon/strongswan/src/libstrongswan/plugins/ntru/ntru_param_set.h, revision 1.1

1.1     ! misho       1: /*
        !             2:  * Copyright (C) 2014 Andreas Steffen
        !             3:  * HSR Hochschule fuer Technik Rapperswil
        !             4:  *
        !             5:  * Copyright (C) 2009-2013  Security Innovation
        !             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 ntru_param_set ntru_param_set
        !            20:  * @{ @ingroup ntru_p
        !            21:  */
        !            22: 
        !            23: #ifndef NTRU_PARAM_SET_H_
        !            24: #define NTRU_PARAM_SET_H_
        !            25: 
        !            26: typedef enum ntru_param_set_id_t ntru_param_set_id_t;
        !            27: typedef struct ntru_param_set_t ntru_param_set_t;
        !            28: 
        !            29: #include <library.h>
        !            30: 
        !            31: /**
        !            32:  * Encoding types for NTRU encryption public/private key blobs
        !            33:  */
        !            34: #define NTRU_PUBKEY_TAG           0x01
        !            35: #define NTRU_PRIVKEY_DEFAULT_TAG  0x02
        !            36: #define NTRU_PRIVKEY_TRITS_TAG    0xfe
        !            37: #define NTRU_PRIVKEY_INDICES_TAG  0xff
        !            38: 
        !            39: /**
        !            40:  * Size in octets of the OID designating the NTRU encryption parameter set
        !            41:  */
        !            42: #define NTRU_OID_LEN   3
        !            43: 
        !            44: /**
        !            45:  * Packing types for NTRU encryption public/private keys
        !            46:  */
        !            47: #define NTRU_KEY_PACKED_COEFFICIENTS    0x01
        !            48: #define NTRU_KEY_PACKED_INDICES         0x02
        !            49: #define NTRU_KEY_PACKED_TRITS           0x03
        !            50: 
        !            51: /**
        !            52:  * NTRU encryption parameter set ID list
        !            53:  */
        !            54: enum ntru_param_set_id_t {
        !            55:        /* X9.98/IEEE 1363.1 parameter sets for best bandwidth (smallest size) */
        !            56:        NTRU_EES401EP1,
        !            57:        NTRU_EES449EP1,
        !            58:        NTRU_EES677EP1,
        !            59:        NTRU_EES1087EP2,
        !            60:        /* X9.98/IEEE 1363.1 parameter sets balancing speed and bandwidth */
        !            61:        NTRU_EES541EP1,
        !            62:        NTRU_EES613EP1,
        !            63:        NTRU_EES887EP1,
        !            64:        NTRU_EES1171EP1,
        !            65:        /* X9.98/IEEE 1363.1 parameter sets for best speed */
        !            66:        NTRU_EES659EP1,
        !            67:        NTRU_EES761EP1,
        !            68:        NTRU_EES1087EP1,
        !            69:        NTRU_EES1499EP1,
        !            70:        /* Best bandwidth and speed, no X9.98 compatibility */
        !            71:        NTRU_EES401EP2,
        !            72:        NTRU_EES439EP1,
        !            73:        NTRU_EES593EP1,
        !            74:        NTRU_EES743EP1,
        !            75: };
        !            76: 
        !            77: extern enum_name_t *ntru_param_set_id_names;
        !            78: 
        !            79: /**
        !            80:  * NTRU encryption parameter set definitions
        !            81:  */
        !            82: struct ntru_param_set_t {
        !            83: 
        !            84:     /**
        !            85:         * NTRU parameter set ID
        !            86:         */
        !            87:        const ntru_param_set_id_t id;
        !            88: 
        !            89:        /**
        !            90:         * pointer to OID
        !            91:         */
        !            92:        const uint8_t oid[NTRU_OID_LEN];
        !            93: 
        !            94:        /**
        !            95:         * parameter-set DER id
        !            96:         */
        !            97:        const uint8_t der_id;
        !            98: 
        !            99:        /**
        !           100:         * no. of bits in N (i.e. in an index
        !           101:         */
        !           102:        const uint8_t N_bits;
        !           103: 
        !           104:        /**
        !           105:         * ring dimension
        !           106:         */
        !           107:        const uint16_t N;
        !           108: 
        !           109:        /**
        !           110:         * no. of octets of security strength
        !           111:         */
        !           112:        const uint16_t sec_strength_len;
        !           113: 
        !           114:        /**
        !           115:         * big modulus
        !           116:         */
        !           117:        const uint16_t q;
        !           118: 
        !           119:        /**
        !           120:         * no. of bits in q (i.e. in a coefficient)
        !           121:         */
        !           122:        const uint8_t q_bits;
        !           123: 
        !           124:        /**
        !           125:         * if product form used
        !           126:         */
        !           127:        const bool is_product_form;
        !           128: 
        !           129:        /**
        !           130:         * no. of +1 or -1 coefficients in ring elements F, r
        !           131:         */
        !           132:        const uint32_t dF_r;
        !           133: 
        !           134:        /**
        !           135:         * no. - 1 of +1 coefficients or no. of -1 coefficients in ring element g
        !           136:         */
        !           137:        const uint16_t dg;
        !           138: 
        !           139:        /**
        !           140:         * max no. of plaintext octets
        !           141:         */
        !           142:        const uint16_t m_len_max;
        !           143: 
        !           144:        /**
        !           145:         * min. message representative weight
        !           146:         */
        !           147:        const uint16_t min_msg_rep_wt;
        !           148: 
        !           149:        /**
        !           150:         * no. bits in candidate for deriving an index
        !           151:         */
        !           152:        const uint8_t  c_bits;
        !           153: 
        !           154:        /**
        !           155:         * no. of octets to hold mLenOctets
        !           156:         */
        !           157:        const uint8_t  m_len_len;
        !           158: };
        !           159: 
        !           160: /**
        !           161:  * Get NTRU encryption parameter set by NTRU parameter set ID
        !           162:  *
        !           163:  * @param id   NTRU parameter set ID
        !           164:  * @return             NTRU parameter set
        !           165: */
        !           166: const ntru_param_set_t* ntru_param_set_get_by_id(ntru_param_set_id_t id);
        !           167: 
        !           168: /**
        !           169:  * Get NTRU encryption parameter set by NTRU parameter set OID
        !           170:  *
        !           171:  * @param oid  NTRU parameter set OID
        !           172:  * @return             NTRU parameter set
        !           173: */
        !           174: const ntru_param_set_t* ntru_param_set_get_by_oid(uint8_t const *oid);
        !           175: 
        !           176: #endif /** NTRU_PARAM_SET_H_ @}*/

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