X-Git-Url: https://git.distorted.org.uk/~mdw/userv-utils/blobdiff_plain/2dc682257fa1bb6a443c69c56ed724ec3b8dffd9..5e8cb121d0061bf38eb33be82b0b026ddafeda63:/ipif/blowfish.h diff --git a/ipif/blowfish.h b/ipif/blowfish.h index 8eb3275..6efd137 100644 --- a/ipif/blowfish.h +++ b/ipif/blowfish.h @@ -1,42 +1,69 @@ -/**/ +/* + * This file is part of ipif, part of userv-utils + * + * Copyright 1996-2013 Ian Jackson + * Copyright 1998 David Damerell + * Copyright 1999,2003 + * Chancellor Masters and Scholars of the University of Cambridge + * Copyright 2010 Tony Finch + * + * This is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with userv-utils; if not, see http://www.gnu.org/licenses/. + */ #ifndef BLOWFISH__H_INCLUDED #define BLOWFISH__H_INCLUDED +#include + #define BLOWFISH_BLOCKBYTES 8 #define BLOWFISH_MAXKEYBYTES 56 #define BLOWFISH__N 16 #define BLOWFISH__PSIZE BLOWFISH__N+2 -typedef uint32 blowfish__p[BLOWFISH__PSIZE]; -typedef uint32 blowfish__s[4][256]; +typedef uint32_t blowfish__p[BLOWFISH__PSIZE]; +typedef uint32_t blowfish__s[4][256]; struct blowfish_expandedkey { blowfish__p p; blowfish__s s; }; +/* It's ok to pass the [_cbc]_(en|de)crypt functions the same + * input and output pointers. + */ + void blowfish_loadkey(struct blowfish_expandedkey *ek, - const uint8 *key, int keybytes); + const uint8_t *key, int keybytes); void blowfish_encrypt(const struct blowfish_expandedkey *ek, - const uint8 plain[BLOWFISH_BLOCKBYTES], - uint8 cipher[BLOWFISH_BLOCKBYTES]); + const uint8_t plain[BLOWFISH_BLOCKBYTES], + uint8_t cipher[BLOWFISH_BLOCKBYTES]); void blowfish_decrypt(const struct blowfish_expandedkey *ek, - const uint8 cipher[BLOWFISH_BLOCKBYTES], - uint8 plain[BLOWFISH_BLOCKBYTES]); + const uint8_t cipher[BLOWFISH_BLOCKBYTES], + uint8_t plain[BLOWFISH_BLOCKBYTES]); struct blowfish_cbc_state { struct blowfish_expandedkey ek; - uint32 chainl, chainr; + uint32_t chainl, chainr; }; void blowfish_cbc_setiv(struct blowfish_cbc_state *cs, - const uint8 iv[BLOWFISH_BLOCKBYTES]); + const uint8_t iv[BLOWFISH_BLOCKBYTES]); void blowfish_cbc_encrypt(struct blowfish_cbc_state *cs, - const uint8 plain[BLOWFISH_BLOCKBYTES], - uint8 cipher[BLOWFISH_BLOCKBYTES]); + const uint8_t plain[BLOWFISH_BLOCKBYTES], + uint8_t cipher[BLOWFISH_BLOCKBYTES]); void blowfish_cbc_decrypt(struct blowfish_cbc_state *cs, - const uint8 cipher[BLOWFISH_BLOCKBYTES], - uint8 plain[BLOWFISH_BLOCKBYTES]); + const uint8_t cipher[BLOWFISH_BLOCKBYTES], + uint8_t plain[BLOWFISH_BLOCKBYTES]); #endif