1 /*
2  *    Copyright (C) 2005 Jonathan Day, Nikos Mavroyanopoulos
3  *
4  *    This library is free software; you can redistribute it and/or modify it
5  *    under the terms of the GNU Library General Public License as published
6  *    by the Free Software Foundation; either version 2 of the License, or
7  *    (at your option) any later version.
8  *
9  *    This library is distributed in the hope that it will be useful,
10  *    but WITHOUT ANY WARRANTY; without even the implied warranty of
11  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12  *    Library General Public License for more details.
13  *
14  *    You should have received a copy of the GNU Library General Public
15  *    License along with this library; if not, write to the
16  *    Free Software Foundation, Inc., 59 Temple Place - Suite 330,
17  *    Boston, MA 02111-1307, USA.
18  */
19 
20 
21 #if !defined(__MGLOBAL_H)
22 #define __MGLOBAL_H
23 
24 #define MHASH_API_NONE          0
25 #define MHASH_API_CLASSIC       1
26 #define MHASH_API_FAMILY        2
27 
28 #define MHASH_API_VERSION 20060101
29 #define MHASH_API_TYPE MHASH_API_CLASSIC
30 /* #define MHASH_API_TYPE MHASH_API_FAMILY */
31 #define MHASH_API_FULL
32 
33 typedef enum __hashid {
34 #if (MHASH_API_TYPE == MHASH_API_CLASSIC)
35 	MHASH_CRC32		=  0,
36 	MHASH_MD5		=  1,
37 	MHASH_SHA1		=  2,
38 	MHASH_HAVAL256		=  3,
39 	MHASH_RIPEMD160		=  5,
40 	MHASH_TIGER192		=  7,
41 	MHASH_GOST		=  8,
42 	MHASH_CRC32B		=  9,
43 	MHASH_HAVAL224		= 10,
44 	MHASH_HAVAL192		= 11,
45 	MHASH_HAVAL160		= 12,
46 	MHASH_HAVAL128		= 13,
47 	MHASH_TIGER128		= 14,
48 	MHASH_TIGER160		= 15,
49 	MHASH_MD4		= 16,
50 	MHASH_SHA256		= 17,
51 	MHASH_ADLER32		= 18,
52 	MHASH_SHA224		= 19,
53 	MHASH_SHA512		= 20,
54 	MHASH_SHA384		= 21,
55 	MHASH_WHIRLPOOL		= 22,
56 	MHASH_RIPEMD128		= 23,
57 	MHASH_RIPEMD256		= 24,
58 	MHASH_RIPEMD320		= 25,
59 	MHASH_SNEFRU128		= 26,
60 	MHASH_SNEFRU256		= 27,
61 	MHASH_MD2		= 28,
62 	MHASH_AR		= 64, /* NOT YET IMPLEMENTED */
63 	MHASH_BOOGNISH		= 65, /* NOT YET IMPLEMENTED */
64 	MHASH_CELLHASH		= 66, /* NOT YET IMPLEMENTED */
65 	MHASH_FFT_HASH_I	= 67, /* NOT YET IMPLEMENTED */
66 	MHASH_FFT_HASH_II	= 68, /* NOT YET IMPLEMENTED */
67 	MHASH_NHASH		= 69, /* NOT YET IMPLEMENTED */
68 	MHASH_PANAMA		= 70, /* NOT YET IMPLEMENTED */
69 	MHASH_SMASH		= 71, /* NOT YET IMPLEMENTED */
70 	MHASH_SUBHASH		= 72  /* NOT YET IMPLEMENTED */
71 #endif
72 #if (MHASH_API_TYPE == MHASH_API_FAMILY)
73 	MHASH_CRC32		= 0x0001,
74 	MHASH_CRC32B		= 0x0002,
75 	MHASH_ADLER32		= 0x0011,
76 	MHASH_MD2		= 0x0101,
77 	MHASH_MD4		= 0x0111,
78 	MHASH_RIPEMD128		= 0x0112,
79 	MHASH_RIPEMD160		= 0x0113,
80 	MHASH_RIPEMD256		= 0x0114,
81 	MHASH_RIPEMD320		= 0x0115,
82 	MHASH_MD5		= 0x0121,
83 	MHASH_SHA1		= 0x0201,
84 	MHASH_SHA224		= 0x0201,
85 	MHASH_SHA256		= 0x0202,
86 	MHASH_SHA384		= 0x0203,
87 	MHASH_SHA512		= 0x0204,
88 	MHASH_HAVAL128		= 0x0301,
89 	MHASH_HAVAL160		= 0x0302,
90 	MHASH_HAVAL192		= 0x0303,
91 	MHASH_HAVAL224		= 0x0304,
92 	MHASH_HAVAL256		= 0x0305, /* 3 passes */
93 	MHASH_TIGER128		= 0x0401,
94 	MHASH_TIGER160		= 0x0402,
95 	MHASH_TIGER192		= 0x0403,
96 	MHASH_GOST		= 0x0501,
97 	MHASH_WHIRLPOOL		= 0x0601,
98 	MHASH_SNEFRU128		= 0x0701, /* 8 passes */
99 	MHASH_SNEFRU256		= 0x0702, /* 8 passes */
100 	MHASH_AR		= 0x0801, /* NOT YET IMPLEMENTED */
101 	MHASH_BOOGNISH		= 0x0901, /* NOT YET IMPLEMENTED */
102 	MHASH_CELLHASH		= 0x0a01, /* NOT YET IMPLEMENTED */
103 	MHASH_FFT_HASH_I	= 0x0b01, /* NOT YET IMPLEMENTED */
104 	MHASH_FFT_HASH_II	= 0x0b02, /* NOT YET IMPLEMENTED */
105 	MHASH_NHASH		= 0x0c01, /* NOT YET IMPLEMENTED */
106 	MHASH_PANAMA		= 0x0d01, /* NOT YET IMPLEMENTED */
107 	MHASH_SMASH		= 0x0e01, /* NOT YET IMPLEMENTED */
108 	MHASH_SUBHASH		= 0x0f01  /* NOT YET IMPLEMENTED */
109 #endif
110 } hashid;
111 
112 /* These aliases are actually quite useful and so will be kept */
113 
114 #define MHASH_HAVAL MHASH_HAVAL256
115 #define MHASH_TIGER MHASH_TIGER192
116 
117 typedef enum __keygenid {
118 	KEYGEN_MCRYPT,		/* The key generator used in mcrypt */
119 	KEYGEN_ASIS,		/* Just returns the password as binary key */
120 	KEYGEN_HEX,		/* Just converts a hex key into a binary one */
121 	KEYGEN_PKDES,		/* The transformation used in Phil Karn's DES
122 				 * encryption program */
123 	KEYGEN_S2K_SIMPLE,	/* The OpenPGP (rfc2440) Simple S2K */
124 	KEYGEN_S2K_SALTED,	/* The OpenPGP Salted S2K */
125 	KEYGEN_S2K_ISALTED	/* The OpenPGP Iterated Salted S2K */
126 } keygenid;
127 
128 #endif
129