summaryrefslogtreecommitdiffabout
path: root/lib
Side-by-side diff
Diffstat (limited to 'lib') (more/less context) (show whitespace changes)
-rw-r--r--lib/consumer.cc29
-rw-r--r--lib/util.cc25
2 files changed, 27 insertions, 27 deletions
diff --git a/lib/consumer.cc b/lib/consumer.cc
index bd76b61..cbe0769 100644
--- a/lib/consumer.cc
+++ b/lib/consumer.cc
@@ -134,13 +134,13 @@ namespace opkele {
if(mode==mode_checkid_immediate)
p["mode"]="checkid_immediate";
else if(mode==mode_checkid_setup)
p["mode"]="checkid_setup";
else
throw bad_input(OPKELE_CP_ "unknown checkid_* mode");
- string iurl = util::canonicalize_url(identity);
+ string iurl = canonicalize(identity);
string server, delegate;
retrieve_links(iurl,server,delegate);
p["identity"] = delegate.empty()?iurl:delegate;
if(!trust_root.empty())
p["trust_root"] = trust_root;
p["return_to"] = return_to;
@@ -157,13 +157,13 @@ namespace opkele {
}
void consumer_t::id_res(const params_t& pin,const string& identity) {
if(pin.has_param("openid.user_setup_url"))
throw id_res_setup(OPKELE_CP_ "assertion failed, setup url provided",pin.get_param("openid.user_setup_url"));
string server,delegate;
- retrieve_links(identity.empty()?pin.get_param("openid.identity"):util::canonicalize_url(identity),server,delegate);
+ retrieve_links(identity.empty()?pin.get_param("openid.identity"):canonicalize(identity),server,delegate);
try {
assoc_t assoc = retrieve_assoc(server,pin.get_param("openid.assoc_handle"));
const string& sigenc = pin.get_param("openid.sig");
mimetic::Base64::Decoder b;
vector<unsigned char> sig;
mimetic::decode(
@@ -310,7 +310,32 @@ namespace opkele {
}
assoc_t consumer_t::find_assoc(const string& server) {
throw failed_lookup(OPKELE_CP_ "no find_assoc() provided");
}
+ string consumer_t::canonicalize(const string& url) {
+ string rv = url;
+ // strip leading and trailing spaces
+ string::size_type i = rv.find_first_not_of(" \t\r\n");
+ if(i==string::npos)
+ throw bad_input(OPKELE_CP_ "empty URL");
+ if(i)
+ rv.erase(0,i);
+ i = rv.find_last_not_of(" \t\r\n");
+ assert(i!=string::npos);
+ if(i<(rv.length()-1))
+ rv.erase(i+1);
+ // add missing http://
+ i = rv.find("://");
+ if(i==string::npos) { // primitive. but do we need more?
+ rv.insert(0,"http://");
+ i = sizeof("http://")-1;
+ }else{
+ i += sizeof("://")-1;
+ }
+ if(rv.find('/',i)==string::npos)
+ rv += '/';
+ return rv;
+ }
+
}
diff --git a/lib/util.cc b/lib/util.cc
index 1e7335c..d78b5e0 100644
--- a/lib/util.cc
+++ b/lib/util.cc
@@ -80,37 +80,12 @@ namespace opkele {
}
/*
*
*/
- string canonicalize_url(const string& url) {
- string rv = url;
- // strip leading and trailing spaces
- string::size_type i = rv.find_first_not_of(" \t\r\n");
- if(i==string::npos)
- throw bad_input(OPKELE_CP_ "empty URL");
- if(i)
- rv.erase(0,i);
- i = rv.find_last_not_of(" \t\r\n");
- assert(i!=string::npos);
- if(i<(rv.length()-1))
- rv.erase(i+1);
- // add missing http://
- i = rv.find("://");
- if(i==string::npos) { // primitive. but do we need more?
- rv.insert(0,"http://");
- i = sizeof("http://")-1;
- }else{
- i += sizeof("://")-1;
- }
- if(rv.find('/',i)==string::npos)
- rv += '/';
- return rv;
- }
-
string url_encode(const string& str) {
char * t = curl_escape(str.c_str(),str.length());
if(!t)
throw failed_conversion(OPKELE_CP_ "failed to curl_escape()");
string rv(t);
curl_free(t);