Annotation of embedaddon/strongswan/src/libstrongswan/crypto/xofs/xof_bitspender.h, revision 1.1.1.1

1.1       misho       1: /*
                      2:  * Copyright (C) 2014-2016 Andreas Steffen
                      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 xof_bitspender xof_bitspender
                     18:  * @{ @ingroup mgf1
                     19:  */
                     20: 
                     21: #ifndef XOF_BITSPENDER_H_
                     22: #define XOF_BITSPENDER_H_
                     23: 
                     24: #include "xof.h"
                     25: 
                     26: #include <library.h>
                     27: 
                     28: typedef struct xof_bitspender_t xof_bitspender_t;
                     29: 
                     30: /**
                     31:  * Generates a given number of pseudo-random bits at a time using an
                     32:  * Extended Output Function (XOF)
                     33:  */
                     34: struct xof_bitspender_t {
                     35: 
                     36:        /**
                     37:         * Get pseudo-random bits
                     38:         *
                     39:         * @param bits_needed   Number of needed bits (1..32)
                     40:         * @param bits                  Pseudo-random bits
                     41:         * @result                              FALSE if internal MGF1 error occurred
                     42:         */
                     43:        bool (*get_bits)(xof_bitspender_t *this, int bits_needed, uint32_t *bits);
                     44: 
                     45:        /**
                     46:         * Get a pseudo-random byte
                     47:         *
                     48:         * @param byte                  Pseudo-random byte
                     49:         * @result                              FALSE if internal MGF1 error occurred
                     50:         */
                     51:        bool (*get_byte)(xof_bitspender_t *this, uint8_t *byte);
                     52: 
                     53:        /**
                     54:         * Destroy xof_bitspender_t object
                     55:         */
                     56:        void (*destroy)(xof_bitspender_t *this);
                     57: };
                     58: 
                     59: /**
                     60:  * Create a xof_bitspender_t object
                     61:  *
                     62:  * @param alg                          XOF to be used
                     63:  * @param seed                         Seed used to initialize XOF
                     64:  * @param hash_seed                    Hash seed before using it as a seed for MFG1
                     65:  */
                     66: xof_bitspender_t *xof_bitspender_create(ext_out_function_t alg, chunk_t seed,
                     67:                                                                                bool hash_seed);
                     68: 
                     69: #endif /** XOF_BITSPENDER_H_ @}*/

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