00001
00002
00007 #ifndef __DSINFO_H__
00008 #define __DSINFO_H__
00009
00010 #include "KeyData.H"
00011 #include "StrUtil.H"
00012
00013 LIBEPP_NICBR_NS_BEGIN
00014
00016 class DSInfo {
00017 public:
00018 DSInfo& operator=(const DSInfo &dsInfo) {
00019 _key_tag = dsInfo._key_tag;
00020 _key_tag_f = dsInfo._key_tag_f;
00021 _algo = dsInfo._algo;
00022 _algo_f = dsInfo._algo_f;
00023 _digest_type = dsInfo._digest_type;
00024 _digest_type_f = dsInfo._digest_type_f;
00025 _digest = dsInfo._digest;
00026 _digest_f = dsInfo._digest_f;
00027 _max_sig_life = dsInfo._max_sig_life;
00028 _key_data = dsInfo._key_data;
00029 _hasKeyData = dsInfo._hasKeyData;
00030
00031 return *this;
00032 }
00033
00035 DSInfo()
00036 {
00037 this->reset();
00038 }
00039
00041
00044 void set_key_tag(const unsigned int key_tag)
00045 {
00046 _key_tag = key_tag;
00047 _key_tag_f = true;
00048 }
00049
00051
00054 unsigned int get_key_tag() const
00055 {
00056 return _key_tag;
00057 }
00058
00060
00063 void set_algo(const unsigned int algo)
00064 {
00065 _algo = algo;
00066 _algo_f = true;
00067 }
00068
00070
00073 unsigned int get_algo() const { return _algo; }
00074
00076
00079 void set_digest_type(const unsigned int digest_type)
00080 {
00081 _digest_type = digest_type;
00082 _digest_type_f = true;
00083 }
00084
00086
00089 unsigned int get_digest_type() const { return _digest_type; }
00090
00092
00095 void set_digest(const string& digest)
00096 {
00097 _digest = digest;
00098 _digest_f = true;
00099 }
00100
00102
00105 string get_digest() const
00106 {
00107 return _digest;
00108 }
00109
00111
00114 void set_max_sig_life(const unsigned int max_sig_life)
00115 {
00116 _max_sig_life = max_sig_life;
00117 }
00118
00120
00123 unsigned int get_max_sig_life() const
00124 {
00125 return _max_sig_life;
00126 }
00127
00129
00132 void set_key_data(const KeyData &key_data)
00133 {
00134 _key_data = key_data;
00135 _hasKeyData = true;
00136 }
00137
00139
00142 KeyData get_key_data() const
00143 {
00144 return _key_data;
00145 }
00146
00148 bool hasKeyData() const
00149 {
00150 return _hasKeyData;
00151 }
00152
00154
00157 string get_xml_format(string secDnsVersion = "1.1") const
00158 {
00159 string xml = "<secDNS:dsData>"
00160 "<secDNS:keyTag>" + StrUtil::to_string("%u", _key_tag) +
00161 "</secDNS:keyTag>"
00162 "<secDNS:alg>" + StrUtil::to_string("%u", _algo) +
00163 "</secDNS:alg>"
00164 "<secDNS:digestType>" + StrUtil::to_string("%u", _digest_type) +
00165 "</secDNS:digestType>"
00166 "<secDNS:digest>" + StrUtil::esc_xml_markup(_digest) +
00167 "</secDNS:digest>";
00168
00169 if (_max_sig_life > 0 && secDnsVersion == "1.0") {
00170 xml += "<secDNS:maxSigLife>" + StrUtil::to_string("%u", _max_sig_life) +
00171 "</secDNS:maxSigLife>";
00172 }
00173
00174 if (_hasKeyData) {
00175 xml += _key_data.get_xml_format();
00176 }
00177
00178 xml += "</secDNS:dsData>";
00179
00180 return xml;
00181 }
00182
00184 void reset()
00185 {
00186 _key_tag = 0;
00187 _algo = 0;
00188 _digest_type = 0;
00189 _max_sig_life = 0;
00190 _digest = "";
00191 _key_data.reset();
00192 _key_tag_f = false;
00193 _algo_f = false;
00194 _digest_type_f = false;
00195 _digest_f = false;
00196 _hasKeyData = false;
00197 }
00198
00199 protected:
00200
00201 bool _key_tag_f;
00202 bool _algo_f;
00203 bool _digest_type_f;
00204 bool _digest_f;
00205 bool _hasKeyData;
00206
00207
00208 unsigned int _key_tag;
00209 unsigned int _algo;
00210 unsigned int _digest_type;
00211 string _digest;
00212 unsigned int _max_sig_life;
00213 KeyData _key_data;
00214
00215 };
00216 LIBEPP_NICBR_NS_END
00217 #endif //__DSINFO_H__