X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=lib%2Fgc.h;h=039c9ddc4da9c8f2272d2bfaf31c9e74ec78ab15;hb=9b71dd21dd3425978a8b121335bfca267a45a617;hp=d06b07e135ccd2c30941953667161a759abe3813;hpb=b4b1d30cb940262c0a340112aef705a34b3439d9;p=gnulib.git diff --git a/lib/gc.h b/lib/gc.h index d06b07e13..039c9ddc4 100644 --- a/lib/gc.h +++ b/lib/gc.h @@ -1,5 +1,5 @@ /* gc.h --- Header file for implementation agnostic crypto wrapper API. - * Copyright (C) 2002, 2003, 2004, 2005, 2007 Simon Josefsson + * Copyright (C) 2002-2005, 2007-2008, 2011-2012 Free Software Foundation, Inc. * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published @@ -12,9 +12,7 @@ * General Public License for more details. * * You should have received a copy of the GNU General Public License - * along with this file; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA - * 02110-1301, USA. + * along with this file; if not, see . * */ @@ -48,7 +46,8 @@ enum Gc_hash GC_RMD160, GC_SHA256, GC_SHA384, - GC_SHA512 + GC_SHA512, + GC_SHA224 }; typedef enum Gc_hash Gc_hash; @@ -68,6 +67,7 @@ typedef void *gc_hash_handle; #define GC_SHA256_DIGEST_SIZE 32 #define GC_SHA384_DIGEST_SIZE 48 #define GC_SHA512_DIGEST_SIZE 64 +#define GC_SHA224_DIGEST_SIZE 24 /* Cipher types. */ enum Gc_cipher @@ -79,7 +79,9 @@ enum Gc_cipher GC_DES, GC_ARCFOUR128, GC_ARCFOUR40, - GC_ARCTWO40 + GC_ARCTWO40, + GC_CAMELLIA128, + GC_CAMELLIA256 }; typedef enum Gc_cipher Gc_cipher; @@ -103,10 +105,10 @@ typedef int (*gc_secure_check_t) (const void *); typedef void *(*gc_realloc_t) (void *p, size_t n); typedef void (*gc_free_t) (void *); extern void gc_set_allocators (gc_malloc_t func_malloc, - gc_malloc_t secure_malloc, - gc_secure_check_t secure_check, - gc_realloc_t func_realloc, - gc_free_t func_free); + gc_malloc_t secure_malloc, + gc_secure_check_t secure_check, + gc_realloc_t func_realloc, + gc_free_t func_free); /* Randomness. */ extern Gc_rc gc_nonce (char *data, size_t datalen); @@ -115,27 +117,27 @@ extern Gc_rc gc_random (char *data, size_t datalen); /* Ciphers. */ extern Gc_rc gc_cipher_open (Gc_cipher cipher, Gc_cipher_mode mode, - gc_cipher_handle *outhandle); + gc_cipher_handle *outhandle); extern Gc_rc gc_cipher_setkey (gc_cipher_handle handle, - size_t keylen, const char *key); + size_t keylen, const char *key); extern Gc_rc gc_cipher_setiv (gc_cipher_handle handle, - size_t ivlen, const char *iv); + size_t ivlen, const char *iv); extern Gc_rc gc_cipher_encrypt_inline (gc_cipher_handle handle, - size_t len, char *data); + size_t len, char *data); extern Gc_rc gc_cipher_decrypt_inline (gc_cipher_handle handle, - size_t len, char *data); + size_t len, char *data); extern Gc_rc gc_cipher_close (gc_cipher_handle handle); /* Hashes. */ extern Gc_rc gc_hash_open (Gc_hash hash, Gc_hash_mode mode, - gc_hash_handle *outhandle); + gc_hash_handle *outhandle); extern Gc_rc gc_hash_clone (gc_hash_handle handle, gc_hash_handle *outhandle); extern size_t gc_hash_digest_length (Gc_hash hash); extern void gc_hash_hmac_setkey (gc_hash_handle handle, - size_t len, const char *key); + size_t len, const char *key); extern void gc_hash_write (gc_hash_handle handle, - size_t len, const char *data); + size_t len, const char *data); extern const char *gc_hash_read (gc_hash_handle handle); extern void gc_hash_close (gc_hash_handle handle); @@ -154,9 +156,9 @@ extern Gc_rc gc_md4 (const void *in, size_t inlen, void *resbuf); extern Gc_rc gc_md5 (const void *in, size_t inlen, void *resbuf); extern Gc_rc gc_sha1 (const void *in, size_t inlen, void *resbuf); extern Gc_rc gc_hmac_md5 (const void *key, size_t keylen, - const void *in, size_t inlen, char *resbuf); + const void *in, size_t inlen, char *resbuf); extern Gc_rc gc_hmac_sha1 (const void *key, size_t keylen, - const void *in, size_t inlen, char *resbuf); + const void *in, size_t inlen, char *resbuf); /* Derive cryptographic keys from a password P of length PLEN, with salt S of length SLEN, placing the result in pre-allocated buffer @@ -164,11 +166,11 @@ extern Gc_rc gc_hmac_sha1 (const void *key, size_t keylen, larger value means this function take more time (typical iteration counts are 1000-20000). This function "stretches" the key to be exactly dkLen bytes long. GC_OK is returned on success, otherwise - an Gc_rc error code is returned. */ + a Gc_rc error code is returned. */ extern Gc_rc gc_pbkdf2_sha1 (const char *P, size_t Plen, - const char *S, size_t Slen, - unsigned int c, char *DK, size_t dkLen); + const char *S, size_t Slen, + unsigned int c, char *DK, size_t dkLen); /* TODO: