00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015 #ifndef PRCKEYREGISTRY_H
00016 #define PRCKEYREGISTRY_H
00017
00018 #include "dtoolbase.h"
00019
00020
00021
00022
00023
00024 #ifdef HAVE_OPENSSL
00025
00026 #include <vector>
00027 #include "openssl/evp.h"
00028
00029
00030 #undef set_key
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043 class EXPCL_DTOOLCONFIG PrcKeyRegistry {
00044 protected:
00045 PrcKeyRegistry();
00046 ~PrcKeyRegistry();
00047
00048 public:
00049 struct KeyDef {
00050 const char *_data;
00051 size_t _length;
00052 time_t _generated_time;
00053 };
00054
00055 void record_keys(const KeyDef *key_def, int num_keys);
00056 void set_key(int n, EVP_PKEY *pkey, time_t generated_time);
00057
00058 int get_num_keys() const;
00059 EVP_PKEY *get_key(int n) const;
00060 time_t get_generated_time(int n) const;
00061
00062 static PrcKeyRegistry *get_global_ptr();
00063
00064 private:
00065
00066 class Key {
00067 public:
00068 const KeyDef *_def;
00069 EVP_PKEY *_pkey;
00070 time_t _generated_time;
00071 };
00072
00073 typedef vector<Key> Keys;
00074 Keys _keys;
00075
00076 static PrcKeyRegistry *_global_ptr;
00077 };
00078
00079 #include "prcKeyRegistry.I"
00080
00081 #endif // HAVE_OPENSSL
00082
00083 #endif
00084
00085
00086
00087
00088