home *** CD-ROM | disk | FTP | other *** search
/ Chip 1999 January / Chip_1999-01_cd.bin / zkuste / delphi / D4 / BLOWNREG.ZIP / CBUILD1 / BLOWFISH.HPP < prev    next >
C/C++ Source or Header  |  1997-08-17  |  4KB  |  139 lines

  1. //----------------------------------------------------------------------------
  2. // Blowfish.hpp - bcbdcc32 generated hdr (DO NOT EDIT) rev: 0
  3. // From: Blowfish.pas
  4. //----------------------------------------------------------------------------
  5. #ifndef BlowfishHPP
  6. #define BlowfishHPP
  7. //----------------------------------------------------------------------------
  8. #include <Classes.hpp>
  9. #include <System.hpp>
  10. namespace Blowfish
  11. {
  12. //-- type declarations -------------------------------------------------------
  13. #pragma pack(push, 1)
  14. struct SingleBytes
  15. {
  16.     Byte byte3;
  17.     Byte byte2;
  18.     Byte byte1;
  19.     Byte byte0;
  20. } ;
  21. #pragma pack(pop)
  22.  
  23. struct DoublWord
  24. {
  25.     
  26.     union
  27.     {
  28.         Byte fByte[4];
  29.         SingleBytes w;
  30.         long LWord;
  31.         
  32.     };
  33. } ;
  34.  
  35. typedef DoublWord *PDoublWord;
  36.  
  37. typedef Byte TBlock[8];
  38.  
  39. typedef TBlock *PBlock;
  40.  
  41. typedef long PArray[18];
  42.  
  43. typedef long SArray[4][256];
  44.  
  45. struct Tblf_ctx
  46. {
  47.     bool Initialised;
  48.     bool IVInitialised;
  49.     Byte IV[8];
  50.     Byte ct[8];
  51.     long S[4][256];
  52.     long P[18];
  53.     union
  54.     {
  55.         long LongBuffer[2];
  56.         Byte ByteBuffer[8];
  57.         
  58.     };
  59. } ;
  60.  
  61. enum TCipherMode { ECB, CBC, CFB, OFB };
  62.  
  63. enum TStringMode { smEncode, smNormal };
  64.  
  65. class __declspec(delphiclass) TBlowfish;
  66. class __declspec(pascalimplementation) TBlowfish : public Classes::TComponent
  67. {
  68.     typedef Classes::TComponent inherited;
  69.     
  70. private:
  71.     Tblf_ctx ctx;
  72.     DoublWord *FPtrL;
  73.     DoublWord *FPtrR;
  74.     Byte FBuffer[4105];
  75.     TBlock *PtrBuffer;
  76.     TCipherMode FCipherMode;
  77.     TStringMode FStringMode;
  78.     void __fastcall NagRegister(void);
  79.     void __fastcall InitialiseCore(const System::AnsiString key, int keybytes);
  80.     void __fastcall Core_Encipher(void);
  81.     void __fastcall Core_Decipher(void);
  82.     int __fastcall EncryptBuffer(int &Len);
  83.     int __fastcall DecryptBuffer(int &Len);
  84.     void __fastcall EncryptBlockMode(void);
  85.     void __fastcall DecryptBlockMode(void);
  86.     void __fastcall DoRound(DoublWord &a, DoublWord &b, Byte n);
  87.     void __fastcall InitArray(void);
  88.     void __fastcall EncBlock(void);
  89.     void __fastcall DecBlock(void);
  90.     System::AnsiString __fastcall EncodeString( System::AnsiString InputString);
  91.     System::AnsiString __fastcall DecodeString( System::AnsiString InputString);
  92.     
  93. public:
  94.     int __fastcall InitialiseString(const System::AnsiString Key);
  95.     int __fastcall InitialiseByte(const Byte * Key, const int Key_Size, int keylength);
  96.     void __fastcall LoadIVString(const System::AnsiString IVString);
  97.     void __fastcall LoadIVByte(const Byte * IVByte, const int IVByte_Size, int IVLength);
  98.     int __fastcall EncryptString(const System::AnsiString Input,  System::AnsiString &Output);
  99.     int __fastcall DecryptString(const System::AnsiString Input,  System::AnsiString &Output);
  100.     int __fastcall EncryptBlock(const Byte * Input, Byte * Output);
  101.     int __fastcall DecryptBlock(const Byte * Input, Byte * Output);
  102.     int __fastcall EncryptFile(const System::AnsiString InputFileName,  System::AnsiString OutputFileName
  103.         );
  104.     int __fastcall DecryptFile(const System::AnsiString InputFileName,  System::AnsiString OutputFileName
  105.         );
  106.     int __fastcall CBCMACBlock(Byte * MAC);
  107.     int __fastcall CBCMACString( System::AnsiString &MAC);
  108.     void __fastcall Burn(void);
  109.     System::AnsiString __fastcall GetVersion(void);
  110.     
  111. __published:
  112.     __property TCipherMode CipherMode = {read=FCipherMode, write=FCipherMode, nodefault};
  113.     __property TStringMode StringMode = {read=FStringMode, write=FStringMode, nodefault};
  114. public:
  115.     /* TComponent.Create */ __fastcall virtual TBlowfish(Classes::TComponent* AOwner) : Classes::TComponent(
  116.         AOwner) { }
  117.     /* TComponent.Destroy */ __fastcall virtual ~TBlowfish(void) { }
  118.     
  119. };
  120.  
  121. //-- var, const, procedure ---------------------------------------------------
  122. #define OK (Byte)(0)
  123. #define KEY_NOT_SET (Shortint)(-1)
  124. #define ZERO_KEY_LENGTH (Shortint)(-2)
  125. #define MSG_TOO_SHORT (Shortint)(-3)
  126. #define IV_NOT_SET (Shortint)(-4)
  127. #define FILE_ERROR (Shortint)(-5)
  128. #define MODE_NOT_CBC (Shortint)(-6)
  129. #define BLOCKSIZE (Byte)(8)
  130. #define BUFFERLENGTH (Word)(4096)
  131. extern void __fastcall Register(void);
  132.  
  133. }    /* namespace Blowfish */
  134. #if !defined(NO_IMPLICIT_NAMESPACE_USE)
  135. using namespace Blowfish;
  136. #endif
  137. //-- end unit ----------------------------------------------------------------
  138. #endif    // Blowfish
  139.