00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00023 #ifndef _CLASS_MAC_H
00024 #define _CLASS_MAC_H
00025
00026
00027
00028 #ifdef __cplusplus
00029
00030 #include "beecrypt/c++/crypto/MacSpi.h"
00031 using beecrypt::crypto::MacSpi;
00032 #include "beecrypt/c++/lang/Object.h"
00033 using beecrypt::lang::Object;
00034 #include "beecrypt/c++/security/Provider.h"
00035 using beecrypt::security::Provider;
00036 #include "beecrypt/c++/security/NoSuchAlgorithmException.h"
00037 using beecrypt::security::NoSuchAlgorithmException;
00038 #include "beecrypt/c++/security/NoSuchProviderException.h"
00039 using beecrypt::security::NoSuchProviderException;
00040
00041 namespace beecrypt {
00042 namespace crypto {
00045 class BEECRYPTCXXAPI Mac : public beecrypt::lang::Object
00046 {
00047 public:
00048 static Mac* getInstance(const String&) throw (NoSuchAlgorithmException);
00049 static Mac* getInstance(const String&, const String&) throw (NoSuchAlgorithmException, NoSuchProviderException);
00050 static Mac* getInstance(const String&, const Provider&) throw (NoSuchAlgorithmException);
00051
00052 private:
00053 MacSpi* _mspi;
00054 String _algo;
00055 const Provider* _prov;
00056 bool _init;
00057
00058 protected:
00059 Mac(MacSpi* macSpi, const Provider* provider, const String& algorithm);
00060
00061 public:
00062 virtual ~Mac();
00063
00064 Mac* clone() const throw ();
00065
00066 const bytearray& doFinal() throw (IllegalStateException);
00067 const bytearray& doFinal(const bytearray&) throw (IllegalStateException);
00068 size_t doFinal(byte* data, size_t offset, size_t length) throw (IllegalStateException, ShortBufferException);
00069 size_t getMacLength();
00070 void init(const Key&) throw (InvalidKeyException);
00071 void init(const Key&, const AlgorithmParameterSpec*) throw (InvalidKeyException, InvalidAlgorithmParameterException);
00072 void reset();
00073 void update(byte) throw (IllegalStateException);
00074 void update(const byte* data, size_t offset, size_t length) throw (IllegalStateException);
00075 void update(const bytearray&) throw (IllegalStateException);
00076
00077 const String& getAlgorithm() const throw ();
00078 const Provider& getProvider() const throw ();
00079 };
00080 }
00081 }
00082
00083 #endif
00084
00085 #endif