add more spacing
[personal-kdebase.git] / runtime / kwalletd / backend / blowfish.h
blob6489bd64f6adbb12712ccc7fcaaec404064c88e0
1 /* This file is part of the KDE project
2 Copyright (C) 2001 George Staikos <staikos@kde.org>
4 This library is free software; you can redistribute it and/or
5 modify it under the terms of the GNU Library General Public
6 License as published by the Free Software Foundation; either
7 version 2 of the License, or (at your option) any later version.
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.
14 You should have received a copy of the GNU Library General Public License
15 along with this library; see the file COPYING.LIB. If not, write to
16 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
17 Boston, MA 02110-1301, USA.
20 #ifndef _BLOWFISH_H
21 #define _BLOWFISH_H
23 #include <config-kwalletbackend.h>
25 #ifdef HAVE_STDINT_H
26 #include <stdint.h>
27 #endif
28 #include <sys/types.h>
29 #ifdef HAVE_SYS_BITYPES_H
30 #include <sys/bitypes.h> /* For uintXX_t on Tru64 */
31 #endif
33 #include "blockcipher.h"
34 #include <kwallet_export.h>
36 /* @internal
38 class KWALLETBACKEND_EXPORT BlowFish : public BlockCipher {
39 public:
40 BlowFish();
41 virtual ~BlowFish();
43 virtual bool setKey(void *key, int bitlength);
45 virtual int keyLen() const;
47 virtual bool variableKeyLen() const;
49 virtual bool readyToGo() const;
51 virtual int encrypt(void *block, int len);
53 virtual int decrypt(void *block, int len);
55 private:
56 uint32_t _S[4][256];
57 uint32_t _P[18];
59 void *_key;
60 int _keylen; // in bits
62 bool _init;
64 bool init();
65 uint32_t F(uint32_t x);
66 void encipher(uint32_t *xl, uint32_t *xr);
67 void decipher(uint32_t *xl, uint32_t *xr);
70 #endif