2 Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011, 2012
3 Ben Kibbey <bjk@luxsci.net>
5 This file is part of pwmd.
7 Pwmd is free software: you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation, either version 2 of the License, or
10 (at your option) any later version.
12 Pwmd is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
17 You should have received a copy of the GNU General Public License
18 along with Pwmd. If not, see <http://www.gnu.org/licenses/>.
23 unsigned gcrypt_to_cipher(int n
)
25 if (n
== GCRY_CIPHER_AES128
)
26 return PWMD_CIPHER_AES128
;
27 else if (n
== GCRY_CIPHER_AES192
)
28 return PWMD_CIPHER_AES192
;
29 else if (n
== GCRY_CIPHER_AES256
)
30 return PWMD_CIPHER_AES256
;
31 else if (n
== GCRY_CIPHER_SERPENT128
)
32 return PWMD_CIPHER_SERPENT128
;
33 else if (n
== GCRY_CIPHER_SERPENT192
)
34 return PWMD_CIPHER_SERPENT192
;
35 else if (n
== GCRY_CIPHER_SERPENT256
)
36 return PWMD_CIPHER_SERPENT256
;
37 else if (n
== GCRY_CIPHER_CAMELLIA128
)
38 return PWMD_CIPHER_CAMELLIA128
;
39 else if (n
== GCRY_CIPHER_CAMELLIA192
)
40 return PWMD_CIPHER_CAMELLIA192
;
41 else if (n
== GCRY_CIPHER_CAMELLIA256
)
42 return PWMD_CIPHER_CAMELLIA256
;
43 else if (n
== GCRY_CIPHER_BLOWFISH
)
44 return PWMD_CIPHER_BLOWFISH
;
45 else if (n
== GCRY_CIPHER_3DES
)
46 return PWMD_CIPHER_3DES
;
47 else if (n
== GCRY_CIPHER_CAST5
)
48 return PWMD_CIPHER_CAST5
;
49 else if (n
== GCRY_CIPHER_TWOFISH
)
50 return PWMD_CIPHER_TWOFISH
;
51 else if (n
== GCRY_CIPHER_TWOFISH128
)
52 return PWMD_CIPHER_TWOFISH128
;
54 return PWMD_CIPHER_AES256
;
57 int cipher_to_gcrypt(int flags
)
62 if (flags
& PWMD_CIPHER_AES128
)
63 return GCRY_CIPHER_AES128
;
64 else if (flags
& PWMD_CIPHER_AES192
)
65 return GCRY_CIPHER_AES192
;
66 else if (flags
& PWMD_CIPHER_AES256
)
67 return GCRY_CIPHER_AES256
;
68 else if (flags
& PWMD_CIPHER_SERPENT128
)
69 return GCRY_CIPHER_SERPENT128
;
70 else if (flags
& PWMD_CIPHER_SERPENT192
)
71 return GCRY_CIPHER_SERPENT192
;
72 else if (flags
& PWMD_CIPHER_SERPENT256
)
73 return GCRY_CIPHER_SERPENT256
;
74 else if (flags
& PWMD_CIPHER_CAMELLIA128
)
75 return GCRY_CIPHER_CAMELLIA128
;
76 else if (flags
& PWMD_CIPHER_CAMELLIA192
)
77 return GCRY_CIPHER_CAMELLIA192
;
78 else if (flags
& PWMD_CIPHER_CAMELLIA256
)
79 return GCRY_CIPHER_CAMELLIA256
;
80 else if (flags
& PWMD_CIPHER_BLOWFISH
)
81 return GCRY_CIPHER_BLOWFISH
;
82 else if (flags
& PWMD_CIPHER_3DES
)
83 return GCRY_CIPHER_3DES
;
84 else if (flags
& PWMD_CIPHER_CAST5
)
85 return GCRY_CIPHER_CAST5
;
86 else if (flags
& PWMD_CIPHER_TWOFISH
)
87 return GCRY_CIPHER_TWOFISH
;
88 else if (flags
& PWMD_CIPHER_TWOFISH128
)
89 return GCRY_CIPHER_TWOFISH128
;
94 int cipher_string_to_cipher(const char *str
)
98 if (!strcasecmp(str
, "aes128"))
99 flags
= PWMD_CIPHER_AES128
;
100 else if (!strcasecmp(str
, "aes192"))
101 flags
= PWMD_CIPHER_AES192
;
102 else if (!strcasecmp(str
, "aes256"))
103 flags
= PWMD_CIPHER_AES256
;
104 else if (!strcasecmp(str
, "serpent128"))
105 flags
= PWMD_CIPHER_SERPENT128
;
106 else if (!strcasecmp(str
, "serpent192"))
107 flags
= PWMD_CIPHER_SERPENT192
;
108 else if (!strcasecmp(str
, "serpent256"))
109 flags
= PWMD_CIPHER_SERPENT256
;
110 else if (!strcasecmp(str
, "camellia128"))
111 flags
= PWMD_CIPHER_CAMELLIA128
;
112 else if (!strcasecmp(str
, "camellia192"))
113 flags
= PWMD_CIPHER_CAMELLIA192
;
114 else if (!strcasecmp(str
, "camellia256"))
115 flags
= PWMD_CIPHER_CAMELLIA256
;
116 else if (!strcasecmp(str
, "blowfish"))
117 flags
= PWMD_CIPHER_BLOWFISH
;
118 else if (!strcasecmp(str
, "cast5"))
119 flags
= PWMD_CIPHER_CAST5
;
120 else if (!strcasecmp(str
, "3des"))
121 flags
= PWMD_CIPHER_3DES
;
122 else if (!strcasecmp(str
, "twofish256"))
123 flags
= PWMD_CIPHER_TWOFISH
;
124 else if (!strcasecmp(str
, "twofish128"))
125 flags
= PWMD_CIPHER_TWOFISH128
;
132 int cipher_string_to_gcrypt(const char *str
)
134 return cipher_to_gcrypt(cipher_string_to_cipher(str
));
137 uint64_t set_cipher_flag(uint64_t flags
, int algo
)
139 // Clear all previous cipher bits but keep the flags.
140 flags
&= ~((uint16_t)((uint32_t)(flags
&0xFFFFFFFF)));
141 flags
|= gcrypt_to_cipher(algo
);