-rw-r--r-- | include/Makefile.am | 3 | ||||
-rw-r--r-- | include/opkele/util-internal.h | 92 | ||||
-rw-r--r-- | include/opkele/util.h | 92 | ||||
-rw-r--r-- | lib/basic_op.cc | 1 | ||||
-rw-r--r-- | lib/basic_rp.cc | 1 | ||||
-rw-r--r-- | lib/consumer.cc | 1 | ||||
-rw-r--r-- | lib/server.cc | 1 | ||||
-rw-r--r-- | test/idiscover.cc | 1 |
8 files changed, 110 insertions, 82 deletions
diff --git a/include/Makefile.am b/include/Makefile.am index 9f5982c..f842bb9 100644 --- a/include/Makefile.am +++ b/include/Makefile.am @@ -19,12 +19,13 @@ nobase_include_HEADERS = \ opkele/basic_rp.h opkele/prequeue_rp.h \ opkele/iterator.h \ opkele/basic_op.h opkele/verify_op.h \ + opkele/util.h \ ${NODIST_HEADERS_} noinst_HEADERS = \ opkele/data.h \ opkele/curl.h opkele/expat.h opkele/tidy.h \ - opkele/util.h \ + opkele/util-internal.h \ opkele/debug.h \ opkele/discovery.h diff --git a/include/opkele/util-internal.h b/include/opkele/util-internal.h new file mode 100644 index 0000000..ec091ce --- a/dev/null +++ b/include/opkele/util-internal.h @@ -0,0 +1,92 @@ +#ifndef __OPKELE_UTIL_INTERNAL_H +#define __OPKELE_UTIL_INTERNAL_H + +#include <openssl/bn.h> +#include <openssl/dh.h> + +namespace opkele { + namespace util { + + /** + * Convenience class encapsulating SSL BIGNUM object for the purpose of + * automatical freeing. + */ + class bignum_t { + public: + BIGNUM *_bn; + + bignum_t() : _bn(0) { } + bignum_t(BIGNUM *bn) : _bn(bn) { } + ~bignum_t() throw() { if(_bn) BN_free(_bn); } + + bignum_t& operator=(BIGNUM *bn) { if(_bn) BN_free(_bn); _bn = bn; return *this; } + + operator const BIGNUM*(void) const { return _bn; } + operator BIGNUM*(void) { return _bn; } + }; + /** + * Convenience clas encapsulating SSL DH object for the purpose of + * automatic freeing. + */ + class dh_t { + public: + DH *_dh; + + dh_t() : _dh(0) { } + dh_t(DH *dh) : _dh(dh) { } + ~dh_t() throw() { if(_dh) DH_free(_dh); } + + dh_t& operator=(DH *dh) { if(_dh) DH_free(_dh); _dh = dh; return *this; } + + operator const DH*(void) const { return _dh; } + operator DH*(void) { return _dh; } + + DH* operator->() { return _dh; } + const DH* operator->() const { return _dh; } + }; + + /** + * Convert base64-encoded SSL BIGNUM to internal representation. + * @param b64 base64-encoded number + * @return SSL BIGNUM + * @throw failed_conversion in case of error + */ + BIGNUM *base64_to_bignum(const string& b64); + /** + * Convert decimal representation to SSL BIGNUM. + * @param dec decimal representation + * @return resulting BIGNUM + * @throw failed_conversion in case of error + */ + BIGNUM *dec_to_bignum(const string& dec); + /** + * Convert SSL BIGNUM data to base64 encoded string. + * @param bn BIGNUM + * @return base64encoded string + */ + string bignum_to_base64(const BIGNUM *bn); + + string abi_demangle(const char* mn); + + class change_mode_message_proxy : public basic_openid_message { + public: + const basic_openid_message& x; + const string& mode; + + change_mode_message_proxy(const basic_openid_message& xx,const string& m) : x(xx), mode(m) { } + + bool has_field(const string& n) const { return x.has_field(n); } + const string& get_field(const string& n) const { + return (n=="mode")?mode:x.get_field(n); } + bool has_ns(const string& uri) const {return x.has_ns(uri); } + string get_ns(const string& uri) const { return x.get_ns(uri); } + fields_iterator fields_begin() const { + return x.fields_begin(); } + fields_iterator fields_end() const { + return x.fields_end(); } + }; + + } +} + +#endif /* __OPKELE_UTIL_INTERNAL_H */ diff --git a/include/opkele/util.h b/include/opkele/util.h index bc1a0ea..60955e1 100644 --- a/include/opkele/util.h +++ b/include/opkele/util.h @@ -4,8 +4,6 @@ #include <time.h> #include <string> #include <vector> -#include <openssl/bn.h> -#include <openssl/dh.h> #include <opkele/types.h> namespace opkele { @@ -18,65 +16,6 @@ namespace opkele { namespace util { /** - * Convenience class encapsulating SSL BIGNUM object for the purpose of - * automatical freeing. - */ - class bignum_t { - public: - BIGNUM *_bn; - - bignum_t() : _bn(0) { } - bignum_t(BIGNUM *bn) : _bn(bn) { } - ~bignum_t() throw() { if(_bn) BN_free(_bn); } - - bignum_t& operator=(BIGNUM *bn) { if(_bn) BN_free(_bn); _bn = bn; return *this; } - - operator const BIGNUM*(void) const { return _bn; } - operator BIGNUM*(void) { return _bn; } - }; - /** - * Convenience clas encapsulating SSL DH object for the purpose of - * automatic freeing. - */ - class dh_t { - public: - DH *_dh; - - dh_t() : _dh(0) { } - dh_t(DH *dh) : _dh(dh) { } - ~dh_t() throw() { if(_dh) DH_free(_dh); } - - dh_t& operator=(DH *dh) { if(_dh) DH_free(_dh); _dh = dh; return *this; } - - operator const DH*(void) const { return _dh; } - operator DH*(void) { return _dh; } - - DH* operator->() { return _dh; } - const DH* operator->() const { return _dh; } - }; - - /** - * Convert base64-encoded SSL BIGNUM to internal representation. - * @param b64 base64-encoded number - * @return SSL BIGNUM - * @throw failed_conversion in case of error - */ - BIGNUM *base64_to_bignum(const string& b64); - /** - * Convert decimal representation to SSL BIGNUM. - * @param dec decimal representation - * @return resulting BIGNUM - * @throw failed_conversion in case of error - */ - BIGNUM *dec_to_bignum(const string& dec); - /** - * Convert SSL BIGNUM data to base64 encoded string. - * @param bn BIGNUM - * @return base64encoded string - */ - string bignum_to_base64(const BIGNUM *bn); - - /** * Convert internal time representation to w3c format * @param t internal representation * @return w3c time @@ -153,30 +92,21 @@ namespace opkele { */ bool uri_matches_realm(const string& uri,const string& realm); + /** + * Strip fragment part from URI + * @param uri input/output parameter containing the URI + * @return reference to uri + */ string& strip_uri_fragment_part(string& uri); - string abi_demangle(const char* mn); - + /** + * Calculate signature and encode it using base64 + * @param assoc association being used for signing + * @param om openid message + * @return base64 representation of the signature + */ string base64_signature(const assoc_t& assoc,const basic_openid_message& om); - class change_mode_message_proxy : public basic_openid_message { - public: - const basic_openid_message& x; - const string& mode; - - change_mode_message_proxy(const basic_openid_message& xx,const string& m) : x(xx), mode(m) { } - - bool has_field(const string& n) const { return x.has_field(n); } - const string& get_field(const string& n) const { - return (n=="mode")?mode:x.get_field(n); } - bool has_ns(const string& uri) const {return x.has_ns(uri); } - string get_ns(const string& uri) const { return x.get_ns(uri); } - fields_iterator fields_begin() const { - return x.fields_begin(); } - fields_iterator fields_end() const { - return x.fields_end(); } - }; - } } diff --git a/lib/basic_op.cc b/lib/basic_op.cc index c247493..fa659ac 100644 --- a/lib/basic_op.cc +++ b/lib/basic_op.cc @@ -6,6 +6,7 @@ #include <opkele/basic_op.h> #include <opkele/exception.h> #include <opkele/util.h> +#include <opkele/util-internal.h> #include <opkele/uris.h> namespace opkele { diff --git a/lib/basic_rp.cc b/lib/basic_rp.cc index a0ad130..e65d9fb 100644 --- a/lib/basic_rp.cc +++ b/lib/basic_rp.cc @@ -6,6 +6,7 @@ #include <opkele/uris.h> #include <opkele/data.h> #include <opkele/util.h> +#include <opkele/util-internal.h> #include <opkele/curl.h> namespace opkele { diff --git a/lib/consumer.cc b/lib/consumer.cc index ebda262..801496e 100644 --- a/lib/consumer.cc +++ b/lib/consumer.cc @@ -2,6 +2,7 @@ #include <cassert> #include <cstring> #include <opkele/util.h> +#include <opkele/util-internal.h> #include <opkele/curl.h> #include <opkele/exception.h> #include <opkele/data.h> diff --git a/lib/server.cc b/lib/server.cc index 776f1ae..0dea1eb 100644 --- a/lib/server.cc +++ b/lib/server.cc @@ -3,6 +3,7 @@ #include <openssl/sha.h> #include <openssl/hmac.h> #include <opkele/util.h> +#include <opkele/util-internal.h> #include <opkele/exception.h> #include <opkele/server.h> #include <opkele/data.h> diff --git a/test/idiscover.cc b/test/idiscover.cc index 44df9ce..4b1e90c 100644 --- a/test/idiscover.cc +++ b/test/idiscover.cc @@ -6,6 +6,7 @@ using namespace std; #include <opkele/exception.h> #include <opkele/discovery.h> #include <opkele/util.h> +#include <opkele/util-internal.h> namespace opkele { ostream& operator<<(ostream& o,const opkele::openid_endpoint_t& oep) { |