Signature.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00023 #ifndef _CLASS_BEE_SECURITY_SIGNATURE_H
00024 #define _CLASS_BEE_SECURITY_SIGNATURE_H
00025
00026 #ifdef __cplusplus
00027
00028 #include "beecrypt/c++/lang/Object.h"
00029 using beecrypt::lang::Object;
00030 #include "beecrypt/c++/security/SignatureSpi.h"
00031 using beecrypt::security::SignatureSpi;
00032 #include "beecrypt/c++/security/NoSuchAlgorithmException.h"
00033 using beecrypt::security::NoSuchAlgorithmException;
00034 #include "beecrypt/c++/security/NoSuchProviderException.h"
00035 using beecrypt::security::NoSuchProviderException;
00036
00037 namespace beecrypt {
00038 namespace security {
00041 class BEECRYPTCXXAPI Signature : public Object
00042 {
00043 protected:
00044 static const int UNINITIALIZED = 0;
00045 static const int VERIFY = 1;
00046 static const int SIGN = 2;
00047
00048 public:
00058 static Signature* getInstance(const String& algorithm) throw (NoSuchAlgorithmException);
00066 static Signature* getInstance(const String& algorithm, const String& provider) throw (NoSuchAlgorithmException, NoSuchProviderException);
00067 static Signature* getInstance(const String& algorithm, const Provider& provider) throw (NoSuchAlgorithmException);
00068
00069 protected:
00070 int state;
00071
00072 private:
00073 SignatureSpi* _sspi;
00074 const Provider* _prov;
00075 String _algo;
00076
00077 protected:
00078 Signature(SignatureSpi* spi, const Provider* provider, const String& algorithm);
00079
00080 public:
00081 virtual ~Signature();
00082
00083 AlgorithmParameters* getParameters() const;
00084 void setParameter(const AlgorithmParameterSpec&) throw (InvalidAlgorithmParameterException);
00085
00086 void initSign(const PrivateKey&) throw (InvalidKeyException);
00087 void initSign(const PrivateKey&, SecureRandom*) throw (InvalidKeyException);
00088
00089 void initVerify(const PublicKey&) throw (InvalidKeyException);
00090
00091 bytearray* sign() throw (IllegalStateException, SignatureException);
00092 int sign(byte*, int, int) throw (ShortBufferException, IllegalStateException, SignatureException);
00093 int sign(bytearray&) throw (IllegalStateException, SignatureException);
00094 bool verify(const bytearray&) throw (IllegalStateException, SignatureException);
00095 bool verify(const byte*, int, int) throw (IllegalStateException, SignatureException);
00096
00097 void update(byte) throw (IllegalStateException);
00098 void update(const byte*, int, int) throw (IllegalStateException);
00099 void update(const bytearray&) throw (IllegalStateException);
00100
00101 const String& getAlgorithm() const throw ();
00102 const Provider& getProvider() const throw ();
00103 };
00104 }
00105 }
00106
00107 #endif
00108
00109 #endif