summaryrefslogtreecommitdiffabout
path: root/include
authorMichael Krelin <hacker@klever.net>2008-01-31 22:07:53 (UTC)
committer Michael Krelin <hacker@klever.net>2008-01-31 22:07:53 (UTC)
commit67133db1f33b142561575cdf99fedca8fb6ad79b (patch) (unidiff)
tree4320aff864ce4848808c6643bf289b9bbfe70a60 /include
parent66b14d4368d661daf2248e36ac4f9a3f69f6a75a (diff)
downloadlibopkele-67133db1f33b142561575cdf99fedca8fb6ad79b.zip
libopkele-67133db1f33b142561575cdf99fedca8fb6ad79b.tar.gz
libopkele-67133db1f33b142561575cdf99fedca8fb6ad79b.tar.bz2
added util::change_mode_message_proxy class
generatlized checkauth_message_proxy and added it to util namespace. To be later used for constructing setup url in 1.0 checkid_immediate reply. Signed-off-by: Michael Krelin <hacker@klever.net>
Diffstat (limited to 'include') (more/less context) (ignore whitespace changes)
-rw-r--r--include/opkele/util.h18
1 files changed, 18 insertions, 0 deletions
diff --git a/include/opkele/util.h b/include/opkele/util.h
index e9176b0..6f3ddf6 100644
--- a/include/opkele/util.h
+++ b/include/opkele/util.h
@@ -51,101 +51,119 @@ namespace opkele {
51 operator const DH*(void) const { return _dh; } 51 operator const DH*(void) const { return _dh; }
52 operator DH*(void) { return _dh; } 52 operator DH*(void) { return _dh; }
53 53
54 DH* operator->() { return _dh; } 54 DH* operator->() { return _dh; }
55 const DH* operator->() const { return _dh; } 55 const DH* operator->() const { return _dh; }
56 }; 56 };
57 57
58 /** 58 /**
59 * Convert base64-encoded SSL BIGNUM to internal representation. 59 * Convert base64-encoded SSL BIGNUM to internal representation.
60 * @param b64 base64-encoded number 60 * @param b64 base64-encoded number
61 * @return SSL BIGNUM 61 * @return SSL BIGNUM
62 * @throw failed_conversion in case of error 62 * @throw failed_conversion in case of error
63 */ 63 */
64 BIGNUM *base64_to_bignum(const string& b64); 64 BIGNUM *base64_to_bignum(const string& b64);
65 /** 65 /**
66 * Convert decimal representation to SSL BIGNUM. 66 * Convert decimal representation to SSL BIGNUM.
67 * @param dec decimal representation 67 * @param dec decimal representation
68 * @return resulting BIGNUM 68 * @return resulting BIGNUM
69 * @throw failed_conversion in case of error 69 * @throw failed_conversion in case of error
70 */ 70 */
71 BIGNUM *dec_to_bignum(const string& dec); 71 BIGNUM *dec_to_bignum(const string& dec);
72 /** 72 /**
73 * Convert SSL BIGNUM data to base64 encoded string. 73 * Convert SSL BIGNUM data to base64 encoded string.
74 * @param bn BIGNUM 74 * @param bn BIGNUM
75 * @return base64encoded string 75 * @return base64encoded string
76 */ 76 */
77 string bignum_to_base64(const BIGNUM *bn); 77 string bignum_to_base64(const BIGNUM *bn);
78 78
79 /** 79 /**
80 * Convert internal time representation to w3c format 80 * Convert internal time representation to w3c format
81 * @param t internal representation 81 * @param t internal representation
82 * @return w3c time 82 * @return w3c time
83 * @throw failed_conversion in case of error 83 * @throw failed_conversion in case of error
84 */ 84 */
85 string time_to_w3c(time_t t); 85 string time_to_w3c(time_t t);
86 /** 86 /**
87 * Convert W3C time representation to internal time_t 87 * Convert W3C time representation to internal time_t
88 * @param w w3c representation 88 * @param w w3c representation
89 * @return converted time 89 * @return converted time
90 * @throw failed_conversion in case of error 90 * @throw failed_conversion in case of error
91 */ 91 */
92 time_t w3c_to_time(const string& w); 92 time_t w3c_to_time(const string& w);
93 93
94 /** 94 /**
95 * Encode string to the representation suitable for using in URL. 95 * Encode string to the representation suitable for using in URL.
96 * @param str string to encode 96 * @param str string to encode
97 * @return encoded string 97 * @return encoded string
98 * @throw failed_conversion in case of failure 98 * @throw failed_conversion in case of failure
99 */ 99 */
100 string url_encode(const string& str); 100 string url_encode(const string& str);
101 101
102 /** 102 /**
103 * Convert number to string 103 * Convert number to string
104 * @param l number 104 * @param l number
105 * @return string representation 105 * @return string representation
106 * @throw failed_conversion in case of failure 106 * @throw failed_conversion in case of failure
107 */ 107 */
108 string long_to_string(long l); 108 string long_to_string(long l);
109 /** 109 /**
110 * Convert string to number 110 * Convert string to number
111 * @param s string, containing the number 111 * @param s string, containing the number
112 * @return the number 112 * @return the number
113 * @throw failed_conversion in case of failure 113 * @throw failed_conversion in case of failure
114 */ 114 */
115 long string_to_long(const string& s); 115 long string_to_long(const string& s);
116 116
117 /** 117 /**
118 * Encode binary data using base64. 118 * Encode binary data using base64.
119 * @param data pointer to binary data 119 * @param data pointer to binary data
120 * @param length length of data 120 * @param length length of data
121 * @return encoded data 121 * @return encoded data
122 */ 122 */
123 string encode_base64(const void *data,size_t length); 123 string encode_base64(const void *data,size_t length);
124 /** 124 /**
125 * Decode binary data from base64 representation. 125 * Decode binary data from base64 representation.
126 * @param data base64-encoded data 126 * @param data base64-encoded data
127 * @param rv container for decoded binary 127 * @param rv container for decoded binary
128 */ 128 */
129 void decode_base64(const string& data,vector<unsigned char>& rv); 129 void decode_base64(const string& data,vector<unsigned char>& rv);
130 130
131 /** 131 /**
132 * Normalize http(s) URI according to RFC3986, section 6. URI is 132 * Normalize http(s) URI according to RFC3986, section 6. URI is
133 * expected to have scheme: in front of it. 133 * expected to have scheme: in front of it.
134 * @param uri URI 134 * @param uri URI
135 * @return normalized URI 135 * @return normalized URI
136 * @throw not_implemented in case of non-httpi(s) URI 136 * @throw not_implemented in case of non-httpi(s) URI
137 * @throw bad_input in case of malformed URI 137 * @throw bad_input in case of malformed URI
138 */ 138 */
139 string rfc_3986_normalize_uri(const string& uri); 139 string rfc_3986_normalize_uri(const string& uri);
140 140
141 string& strip_uri_fragment_part(string& uri); 141 string& strip_uri_fragment_part(string& uri);
142 142
143 string abi_demangle(const char* mn); 143 string abi_demangle(const char* mn);
144 144
145 string base64_signature(const assoc_t& assoc,const basic_openid_message& om); 145 string base64_signature(const assoc_t& assoc,const basic_openid_message& om);
146 146
147 class change_mode_message_proxy : public basic_openid_message {
148 public:
149 const basic_openid_message& x;
150 const string& mode;
151
152 change_mode_message_proxy(const basic_openid_message& xx,const string& m) : x(xx), mode(m) { }
153
154 bool has_field(const string& n) const { return x.has_field(n); }
155 const string& get_field(const string& n) const {
156 return (n=="mode")?mode:x.get_field(n); }
157 bool has_ns(const string& uri) const {return x.has_ns(uri); }
158 string get_ns(const string& uri) const { return x.get_ns(uri); }
159 fields_iterator fields_begin() const {
160 return x.fields_begin(); }
161 fields_iterator fields_end() const {
162 return x.fields_end(); }
163 };
164
147 } 165 }
148 166
149} 167}
150 168
151#endif /* __OPKELE_UTIL_H */ 169#endif /* __OPKELE_UTIL_H */