X-Git-Url: https://tinc-vpn.org/git/browse?a=blobdiff_plain;f=src%2Fcipher.h;h=c586fffb787f0f1cf132f70a2da3ddac5ffe6b10;hb=45063953fd3f2c25c7f8cc65860b32a35b3ba80e;hp=522d7fb757b491af33c8f3a4c4a231bcb5772f75;hpb=e8689a4753ca2b1665e131cc40217da6c033ebd3;p=tinc diff --git a/src/cipher.h b/src/cipher.h index 522d7fb7..c586fffb 100644 --- a/src/cipher.h +++ b/src/cipher.h @@ -1,6 +1,6 @@ /* cipher.h -- header file cipher.c - Copyright (C) 2007 Guus Sliepen + Copyright (C) 2007-2013 Guus Sliepen This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -12,33 +12,35 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - - $Id$ + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef __TINC_CIPHER_H__ #define __TINC_CIPHER_H__ -#include - -typedef struct cipher { - gcry_cipher_hd_t handle; - char *key; - int nid; - uint16_t keylen; - uint16_t blklen; -} cipher_t; - -bool cipher_open_by_name(struct cipher *, const char *); -bool cipher_open_by_nid(struct cipher *, int); -bool cipher_open_blowfish_ofb(struct cipher *); -void cipher_close(struct cipher *); -bool cipher_regenerate_key(struct cipher *); -bool cipher_encrypt(struct cipher *, void *indata, size_t inlen, void *outdata, size_t *outlen); -bool cipher_decrypt(struct cipher *, void *indata, size_t inlen, void *outdata, size_t *outlen); -int cipher_get_nid(struct cipher *); +#define CIPHER_MAX_BLOCK_SIZE 32 +#define CIPHER_MAX_IV_SIZE 16 +#define CIPHER_MAX_KEY_SIZE 32 + +typedef struct cipher cipher_t; + +extern cipher_t *cipher_open_by_name(const char *) __attribute__ ((__malloc__)); +extern cipher_t *cipher_open_by_nid(int) __attribute__ ((__malloc__)); +extern cipher_t *cipher_open_blowfish_ofb(void) __attribute__ ((__malloc__)); +extern void cipher_close(cipher_t *); +extern size_t cipher_keylength(const cipher_t *); +extern void cipher_get_key(const cipher_t *, void *); +extern bool cipher_set_key(cipher_t *, void *, bool); +extern bool cipher_set_key_from_rsa(cipher_t *, void *, size_t, bool); +extern bool cipher_set_counter(cipher_t *, const void *, size_t); +extern bool cipher_set_counter_key(cipher_t *, void *); +extern bool cipher_encrypt(cipher_t *, const void *indata, size_t inlen, void *outdata, size_t *outlen, bool oneshot); +extern bool cipher_decrypt(cipher_t *, const void *indata, size_t inlen, void *outdata, size_t *outlen, bool oneshot); +extern bool cipher_counter_xor(cipher_t *, const void *indata, size_t inlen, void *outdata); +extern int cipher_get_nid(const cipher_t *); +extern bool cipher_active(const cipher_t *); + #endif