-rw-r--r-- | include/opkele/consumer.h | 2 | ||||
-rw-r--r-- | include/opkele/util.h | 1 |
2 files changed, 2 insertions, 1 deletions
diff --git a/include/opkele/consumer.h b/include/opkele/consumer.h index b9c29bd..3c0ed5f 100644 --- a/include/opkele/consumer.h +++ b/include/opkele/consumer.h @@ -1,135 +1,137 @@ #ifndef __OPKELE_CONSUMER_H #define __OPKELE_CONSUMER_H #include <opkele/types.h> /** * @file * @brief OpenID consumer-side functionality */ /** * @brief the main opkele namespace */ namespace opkele { /** * implementation of basic consumer functionality */ class consumer_t { public: /** * store association. The function should be overridden in the real * implementation to provide persistent associations store. * @param server the OpenID server * @param handle association handle * @param secret the secret associated with the server and handle * @param expires_in the number of seconds until the handle is expired * @return the auto_ptr<> for the newly allocated association_t object */ virtual assoc_t store_assoc(const string& server,const string& handle,const secret_t& secret,int expires_in) = 0; /** * retrieve stored association. The function should be overridden * in the real implementation to provide persistent assocations * store. * @param server the OpenID server * @param handle association handle * @return the autho_ptr<> for the newly allocated association_t object * @throw failed_lookup in case of error */ virtual assoc_t retrieve_assoc(const string& server,const string& handle) = 0; /** * invalidate stored association. The function should be overridden * in the real implementation of the consumer. * @param server the OpenID server * @param handle association handle */ virtual void invalidate_assoc(const string& server,const string& handle) = 0; /** * retrieve any unexpired association for the server. If the * function is not overridden in the real implementation, the new * association will be established for each request. * @param server the OpenID server * @return the auto_ptr<> for the newly allocated association_t object * @throw failed_lookup in case of absence of the handle */ virtual assoc_t find_assoc(const string& server); /** * retrieve the metainformation contained in link tags from the * page pointed by url. the function may implement caching of the * information. * @param url url to harvest for link tags * @param server reference to the string object where to put * openid.server value * @param delegate reference to the string object where to put the * openid.delegate value (if any) */ virtual void retrieve_links(const string& url,string& server,string& delegate); /** * perform the associate request to OpenID server. * @param server the OpenID server * @return the auto_ptr<> for the newly allocated association_t * object, representing established association * @throw exception in case of error */ assoc_t associate(const string& server); /** * prepare the parameters for the checkid_immediate * request. * @param identity the identity to verify * @param return_to the return_to url to pass with the request * @param trust_root the trust root to advertise with the request * @return the location string * @throw exception in case of error */ string checkid_immediate(const string& identity,const string& return_to,const string& trust_root=""); /** * prepare the parameters for the checkid_setup * request. * @param identity the identity to verify * @param return_to the return_to url to pass with the request * @param trust_root the trust root to advertise with the request * @return the location string * @throw exception in case of error */ string checkid_setup(const string& identity,const string& return_to,const string& trust_root=""); /** * the actual implementation behind checkid_immediate() and * checkid_setup() functions. * @param mode checkid_* mode - either mode_checkid_immediate or mode_checkid_setup * @param identity the identity to verify * @param return_to the return_to url to pass with the request * @param trust_root the trust root to advertise with the request * @return the location string * @throw exception in case of error */ string checkid_(mode_t mode,const string& identity,const string& return_to,const string& trust_root=""); /** * verify the id_res response * @param pin the response parameters * @param identity the identity being checked (if not specified, extracted * from the openid.identity parameter * @throw id_res_mismatch in case of signature * mismatch * @throw id_res_setup in case of * openid.user_setup_url failure (supposedly * checkid_immediate only) * @throw id_res_failed in case of failure * @throw exception in case of other failures */ void id_res(const params_t& pin,const string& identity=""); /** * perform a check_authentication request. * @param server the OpenID server * @param p request parameters */ void check_authentication(const string& server,const params_t& p); + static string canonicalize(const string& url); + }; } #endif /* __OPKELE_CONSUMER_H */ diff --git a/include/opkele/util.h b/include/opkele/util.h index fbbef93..5372498 100644 --- a/include/opkele/util.h +++ b/include/opkele/util.h @@ -1,60 +1,59 @@ #ifndef __OPKELE_UTIL_H #define __OPKELE_UTIL_H #include <time.h> #include <string> #include <openssl/bn.h> #include <openssl/dh.h> namespace opkele { using std::string; namespace util { 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; } }; 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; } }; BIGNUM *base64_to_bignum(const string& b64); BIGNUM *dec_to_bignum(const string& dec); string bignum_to_base64(const BIGNUM *bn); string time_to_w3c(time_t t); time_t w3c_to_time(const string& w); - string canonicalize_url(const string& url); string url_encode(const string& str); string long_to_string(long l); long string_to_long(const string& s); } } #endif /* __OPKELE_UTIL_H */ |