9369e3150b005083e84ee0ede9fdc1b0441b88b6
[libgcrypt.git] / src / cipher.h
1 /* cipher.h
2  *      Copyright (C) 1998, 2002 Free Software Foundation, Inc.
3  *
4  * This file is part of Libgcrypt.
5  *
6  * Libgcrypt is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU Lesser general Public License as
8  * published by the Free Software Foundation; either version 2.1 of
9  * the License, or (at your option) any later version.
10  *
11  * Libgcrypt is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14  * GNU Lesser General Public License for more details.
15  *
16  * You should have received a copy of the GNU Lesser General Public
17  * License along with this program; if not, write to the Free Software
18  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
19  */
20 #ifndef G10_CIPHER_H
21 #define G10_CIPHER_H
22
23
24 #define DBG_CIPHER _gcry_get_debug_flag( 1 )
25
26 #include "../cipher/random.h"
27
28
29 #define CIPHER_ALGO_NONE         0
30 #define CIPHER_ALGO_IDEA         1
31 #define CIPHER_ALGO_3DES         2
32 #define CIPHER_ALGO_CAST5        3
33 #define CIPHER_ALGO_BLOWFISH     4  /* blowfish 128 bit key */
34 #define CIPHER_ALGO_SAFER_SK128  5
35 #define CIPHER_ALGO_DES_SK       6
36 #define CIPHER_ALGO_TWOFISH     10  /* twofish 256 bit */
37 #define CIPHER_ALGO_SKIPJACK   101  /* experimental: skipjack */
38 #define CIPHER_ALGO_TWOFISH_OLD 102 /* experimental: twofish 128 bit */
39 #define CIPHER_ALGO_DUMMY      110  /* no encryption at all */
40
41 #define PUBKEY_ALGO_RSA        1
42 #define PUBKEY_ALGO_RSA_E      2     /* RSA encrypt only */
43 #define PUBKEY_ALGO_RSA_S      3     /* RSA sign only */
44 #define PUBKEY_ALGO_ELGAMAL_E 16     /* encrypt only ElGamal (but not for v3)*/
45 #define PUBKEY_ALGO_DSA       17
46 #define PUBKEY_ALGO_ELGAMAL   20     /* sign and encrypt elgamal */
47
48 #if 0
49 #define PUBKEY_USAGE_SIG     1      /* key is good for signatures */
50 #define PUBKEY_USAGE_ENC     2      /* key is good for encryption */
51 #endif
52
53 #define DIGEST_ALGO_MD5       1
54 #define DIGEST_ALGO_SHA1      2
55 #define DIGEST_ALGO_RMD160    3
56 #define DIGEST_ALGO_TIGER     6
57
58 #define is_RSA(a)     ((a)==PUBKEY_ALGO_RSA || (a)==PUBKEY_ALGO_RSA_E \
59                        || (a)==PUBKEY_ALGO_RSA_S )
60 #define is_ELGAMAL(a) ((a)==PUBKEY_ALGO_ELGAMAL || (a)==PUBKEY_ALGO_ELGAMAL_E)
61
62
63 /*-- dynload.c --*/
64 void _gcry_register_cipher_extension( const char *mainpgm, const char *fname );
65
66 /*-- rmd160.c --*/
67 void _gcry_rmd160_hash_buffer( char *outbuf, const char *buffer, size_t length );
68
69
70 /*-- smallprime.c --*/
71 extern ushort small_prime_numbers[];
72
73
74 #endif /*G10_CIPHER_H*/