00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef CRYPTOCONTROLLERIMPL_H
00022 #define CRYPTOCONTROLLERIMPL_H
00023
00024 #include "diffiehellman.h"
00025 #include "cipher.h"
00026 #include "random.h"
00027 #include "message.h"
00028 #include "ipaddress.h"
00029 #include "keyring.h"
00030 #include "pseudorandomfunction.h"
00031 #include "payload_sa.h"
00032
00033 namespace openikev2 {
00034
00039 class CryptoControllerImpl {
00040
00041
00042 protected:
00048 virtual auto_ptr<Proposal> selectBestTransfroms( Proposal& proposal );
00049
00050 public:
00056 virtual auto_ptr<DiffieHellman> getDiffieHellman( Enums::DH_ID group ) = 0;
00057
00065 virtual auto_ptr<Cipher> getCipher( Proposal& proposal, auto_ptr<ByteArray> encr_key, auto_ptr<ByteArray> integ_key ) = 0;
00066
00071 virtual auto_ptr<Random> getRandom() = 0;
00072
00078 virtual auto_ptr<PseudoRandomFunction> getPseudoRandomFunction( Transform& prf_transform ) = 0;
00079
00086 virtual auto_ptr<KeyRing> getKeyRing(Proposal& proposal, const PseudoRandomFunction& prf) = 0;
00087
00093 virtual auto_ptr<Payload_NOTIFY> generateCookie( Message& message ) = 0;
00094
00101 virtual auto_ptr<Proposal> chooseProposal( Payload_SA& received_payload_sa, Proposal& desired_proposal );
00102
00103 virtual ~CryptoControllerImpl();
00104
00105 };
00106 };
00107 #endif