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