00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef CRYPTOCONTROLLER_H
00022 #define CRYPTOCONTROLLER_H
00023
00024 #include "cryptocontrollerimpl.h"
00025
00026 #include "ipaddress.h"
00027
00028 namespace openikev2 {
00029
00034 class CryptoController {
00035
00036
00037 protected:
00038 static auto_ptr<CryptoControllerImpl> implementation;
00040
00041 public:
00042
00047 static void setImplementation( auto_ptr<CryptoControllerImpl> impl );
00048
00054 static auto_ptr<DiffieHellman> getDiffieHellman( Enums::DH_ID group );
00055
00063 static auto_ptr<Cipher> getCipher( Proposal& proposal, auto_ptr<ByteArray> encr_key, auto_ptr<ByteArray> integ_key );
00064
00065
00070 static auto_ptr<Random> getRandom();
00071
00077 static auto_ptr<PseudoRandomFunction> getPseudoRandomFunction( Transform& prf_transform );
00078
00085 static auto_ptr<KeyRing> getKeyRing( Proposal& proposal, const PseudoRandomFunction& prf );
00086
00092 static auto_ptr<Payload_NOTIFY> generateCookie( Message& message );
00093
00100 static auto_ptr<Proposal> chooseProposal( Payload_SA& received_payload_sa, Proposal& desired_proposal );
00101 };
00102 }
00103
00104 #endif