📄 cryputil.h
字号:
// cryputil.h// a number of utilities built on crypto++// copyright SafeTP Development Group, Inc., 2000 Terms of use are as specified in license.txt#ifndef __CRYPUTIL_H#define __CRYPUTIL_H#include "trans.h" // Trans#include "cryptlib.h" // BlockTransformation#include "modes.h" // CBC{En,De}cryption#include "ssha.h" // SHA#include "shmac.h" // HMAC#include "des.h" // TripleDES_{En,De}cryption// shared-key encryption, with padding as necessaryclass EncryptBlockTrans : public Trans {private: // the encryption transformation object BlockTransformation &blockTrans;public: // ctor EncryptBlockTrans(BlockTransformation &bt) : blockTrans(bt) {} virtual int minInputSize() const; virtual int maxInputSize() const; virtual int minOutputSize(int inputSize) const; virtual int maxOutputSize(int inputSize) const; virtual void trans(DataBlock &data);};// shared-key decryption, which undoes padding done by EncryptBlockTransclass DecryptBlockTrans : public Trans {private: // the encryption transformation object BlockTransformation &blockTrans;public: // ctor DecryptBlockTrans(BlockTransformation &bt) : blockTrans(bt) {} virtual int minInputSize() const; virtual int maxInputSize() const; virtual int minOutputSize(int inputSize) const; virtual int maxOutputSize(int inputSize) const; virtual void trans(DataBlock &data);};// convenient wrappers for cbc-3desclass CBC3DESEncTrans : public EncryptBlockTrans { TripleDES_Encryption tdes; CBCEncryption cbc;public: CBC3DESEncTrans(DataBlock const &key, DataBlock const &IV); // 24 bytes for 3des key and // 8 bytes for CBC initialization vector};class CBC3DESDecTrans : public DecryptBlockTrans { TripleDES_Decryption tdes; CBCDecryption cbc;public: CBC3DESDecTrans(DataBlock const &key, DataBlock const &IV); // 24 bytes for 3des key and // 8 bytes for CBC initialization vector};// wrapper for SHA1HMACclass SHA1HMAC : public HMAC { SHA *sha;private: SHA *initSha(); // necessary to defeat braindead C++ member initializer order semanticspublic: SHA1HMAC(DataBlock const &key); // key can be of any size, but should be at least 16 bytes ~SHA1HMAC();};// most of the DataBlock utilities have been moved to blokutil.hvoid checkNBO32(DataBlock &stream, long value, char const *message);// HMAC computation, verificationvoid appendDigest(DataBlock &data, HashModule &hash);void checkDigest(DataBlock &data, MessageAuthenticationCode &mac, char const *message);// These had to be moved to ssha to prevent libsmcrypto.a from// depending upon libsftp.a// generic hash//DataBlock hashDataBlock(DataBlock const &data, HashModule &hash);//DataBlock Sha1(DataBlock const &data);// DSAvoid dsaSign(DataBlock const &privKey, DataBlock &data);void dsaVerify(DataBlock const &pubKey, DataBlock &data, char const *message);// ElGamalDataBlock elGamalEncrypt(DataBlock const &pubKey, DataBlock const &src);DataBlock elGamalDecrypt(DataBlock const &privKey, DataBlock const &src);#endif // __CRYPUTIL_H
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -