2003-08-14 Timo Schulz <twoaday@freakmail.de>
[gnupg.git] / include / cipher.h
1 /* cipher.h
2  *      Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
3  *
4  * This file is part of GNUPG.
5  *
6  * GNUPG is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation; either version 2 of the License, or
9  * (at your option) any later version.
10  *
11  * GNUPG 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 General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * 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 #include <gcrypt.h>
24
25 #define CIPHER_ALGO_NONE         GCRY_CIPHER_NONE
26 #define CIPHER_ALGO_IDEA         GCRY_CIPHER_IDEA
27 #define CIPHER_ALGO_3DES         GCRY_CIPHER_3DES
28 #define CIPHER_ALGO_CAST5        GCRY_CIPHER_CAST5
29 #define CIPHER_ALGO_BLOWFISH     GCRY_CIPHER_BLOWFISH /* 128 bit */
30 #define CIPHER_ALGO_SAFER_SK128  GCRY_CIPHER_SK128
31 #define CIPHER_ALGO_DES_SK       GCRY_CIPHER_DES_SK
32 #define CIPHER_ALGO_AES          GCRY_CIPHER_AES
33 #define CIPHER_ALGO_AES192       GCRY_CIPHER_AES192
34 #define CIPHER_ALGO_AES256       GCRY_CIPHER_AES256
35 #define CIPHER_ALGO_RIJNDAEL     CIPHER_ALGO_AES
36 #define CIPHER_ALGO_RIJNDAEL192  CIPHER_ALGO_AES192
37 #define CIPHER_ALGO_RIJNDAEL256  CIPHER_ALGO_AES256
38 #define CIPHER_ALGO_TWOFISH      GCRY_CIPHER_TWOFISH  /* 256 bit */
39 #define CIPHER_ALGO_DUMMY      110  /* no encryption at all */
40
41 #define PUBKEY_ALGO_RSA        GCRY_PK_RSA
42 #define PUBKEY_ALGO_RSA_E      GCRY_PK_RSA_E
43 #define PUBKEY_ALGO_RSA_S      GCRY_PK_RSA_S
44 #define PUBKEY_ALGO_ELGAMAL_E  GCRY_PK_ELG_E 
45 #define PUBKEY_ALGO_DSA        GCRY_PK_DSA
46 #define PUBKEY_ALGO_ELGAMAL    GCRY_PK_ELG
47
48 #define PUBKEY_USAGE_SIG     GCRY_PK_USAGE_SIGN  
49 #define PUBKEY_USAGE_ENC     GCRY_PK_USAGE_ENCR
50 #define PUBKEY_USAGE_CERT    4      /* key is also good to certify other keys*/
51
52 #define DIGEST_ALGO_MD5       GCRY_MD_MD5
53 #define DIGEST_ALGO_SHA1      GCRY_MD_SHA1
54 #define DIGEST_ALGO_RMD160    GCRY_MD_RMD160
55 #define DIGEST_ALGO_TIGER     GCRY_MD_TIGER
56 #define DIGEST_ALGO_SHA256    GCRY_MD_SHA256
57 #define DIGEST_ALGO_SHA384    GCRY_MD_SHA384
58 #define DIGEST_ALGO_SHA512    GCRY_MD_SHA512
59
60 #define COMPRESS_ALGO_NONE 0
61 #define COMPRESS_ALGO_ZIP  1
62 #define COMPRESS_ALGO_ZLIB 2
63
64 #define is_RSA(a)     ((a)==PUBKEY_ALGO_RSA || (a)==PUBKEY_ALGO_RSA_E \
65                        || (a)==PUBKEY_ALGO_RSA_S )
66 #define is_ELGAMAL(a) ((a)==PUBKEY_ALGO_ELGAMAL || (a)==PUBKEY_ALGO_ELGAMAL_E)
67
68 typedef struct {
69     int algo;
70     int keylen;
71     int algo_info_printed;
72     int use_mdc;
73     byte key[32]; /* this is the largest used keylen (256 bit) */
74 } DEK;
75
76
77 #ifndef EXTERN_UNLESS_MAIN_MODULE
78 #if defined (__riscos__) && !defined (INCLUDED_BY_MAIN_MODULE)
79 #define EXTERN_UNLESS_MAIN_MODULE extern
80 #else
81 #define EXTERN_UNLESS_MAIN_MODULE 
82 #endif
83 #endif
84 EXTERN_UNLESS_MAIN_MODULE int g10_opt_verbose;
85 EXTERN_UNLESS_MAIN_MODULE const char *g10_opt_homedir;
86
87
88
89 #define PUBKEY_MAX_NPKEY  4
90 #define PUBKEY_MAX_NSKEY  6
91 #define PUBKEY_MAX_NSIG   2
92 #define PUBKEY_MAX_NENC   2
93
94 #define MD_HANDLE gcry_md_hd_t
95 #define CIPHER_HANDLE gcry_cipher_hd_t
96
97 #endif /*G10_CIPHER_H*/