Return to ntt_fft.h CVS log | Up to [ELWIX - Embedded LightWeight unIX -] / embedaddon / strongswan / src / libstrongswan / math / libnttfft |
1.1 misho 1: /* 2: * Copyright (C) 2014 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 ntt_p libnttfft 18: * 19: * @defgroup ntt_fft ntt_fft 20: * @{ @ingroup ntt_p 21: */ 22: 23: #ifndef NTT_FFT_H_ 24: #define NTT_FFT_H_ 25: 26: #include "ntt_fft_params.h" 27: 28: #include <library.h> 29: 30: typedef struct ntt_fft_t ntt_fft_t; 31: 32: /** 33: * Implements a Number Theoretic Transform (NTT) via the FFT algorithm 34: */ 35: struct ntt_fft_t { 36: 37: /** 38: * Get the size of the Number Theoretic Transform 39: * 40: * @result Transform size 41: */ 42: uint16_t (*get_size)(ntt_fft_t *this); 43: 44: /** 45: * Get the prime modulus of the Number Theoretic Transform 46: * 47: * @result Prime modulus 48: */ 49: uint16_t (*get_modulus)(ntt_fft_t *this); 50: 51: /** 52: * Compute the [inverse] NTT of a polynomial 53: * 54: * @param a Coefficient of input polynomial 55: * @param b Coefficient of output polynomial 56: * @param inverse TRUE if the inverse NTT has to be computed 57: */ 58: void (*transform)(ntt_fft_t *this, uint32_t *a, uint32_t *b, bool inverse); 59: 60: /** 61: * Destroy ntt_fft_t object 62: */ 63: void (*destroy)(ntt_fft_t *this); 64: }; 65: 66: /** 67: * Create a ntt_fft_t object for a given FFT parameter set 68: * 69: * @param params FFT parameters 70: */ 71: ntt_fft_t *ntt_fft_create(const ntt_fft_params_t *params); 72: 73: /** 74: * Dummy libnttfft initialization function needed for integrity test 75: */ 76: void libnttfft_init(void); 77: 78: 79: #endif /** NTT_FFT_H_ @}*/