Return to ccm_aead.h CVS log | Up to [ELWIX - Embedded LightWeight unIX -] / embedaddon / strongswan / src / libstrongswan / plugins / ccm |
1.1 misho 1: /* 2: * Copyright (C) 2010 Martin Willi 3: * Copyright (C) 2010 revosec AG 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 ccm_aead ccm_aead 18: * @{ @ingroup ccm 19: */ 20: 21: #ifndef CCM_AEAD_H_ 22: #define CCM_AEAD_H_ 23: 24: #include <crypto/aead.h> 25: 26: typedef struct ccm_aead_t ccm_aead_t; 27: 28: /** 29: * Counter with Cipher Block Chaining-Message Authentication Code (CCM). 30: * 31: * Implements CCM as specified in NIST 800-38B, using AEAD semantics from 32: * RFC 5282, based on RFC4309. 33: */ 34: struct ccm_aead_t { 35: 36: /** 37: * Implements aead_t interface. 38: */ 39: aead_t aead; 40: }; 41: 42: /** 43: * Create a ccm_aead instance. 44: * 45: * @param algo algorithm to implement, a CCM mode 46: * @param key_size key size in bytes 47: * @param salt_size size of implicit salt length 48: * @return aead, NULL if not supported 49: */ 50: ccm_aead_t *ccm_aead_create(encryption_algorithm_t algo, size_t key_size, 51: size_t salt_size); 52: 53: #endif /** CCM_AEAD_H_ @}*/