-rw-r--r-- | lib/basic_rp.cc | 29 |
1 files changed, 27 insertions, 2 deletions
diff --git a/lib/basic_rp.cc b/lib/basic_rp.cc index e65d9fb..3357d0b 100644 --- a/lib/basic_rp.cc +++ b/lib/basic_rp.cc | |||
@@ -9,7 +9,26 @@ | |||
9 | #include <opkele/util-internal.h> | 9 | #include <opkele/util-internal.h> |
10 | #include <opkele/curl.h> | 10 | #include <opkele/curl.h> |
11 | #include <opkele/debug.h> | ||
11 | 12 | ||
12 | namespace opkele { | 13 | namespace opkele { |
13 | 14 | ||
15 | void basic_RP::reset_vars() { | ||
16 | claimed_id.clear(); identity.clear(); | ||
17 | } | ||
18 | |||
19 | const string& basic_RP::get_claimed_id() const { | ||
20 | if(claimed_id.empty()) | ||
21 | throw non_identity(OPKELE_CP_ "attempting to retreive claimed_id of non-identity assertion"); | ||
22 | assert(!identity.empty()); | ||
23 | return claimed_id; | ||
24 | } | ||
25 | |||
26 | const string& basic_RP::get_identity() const { | ||
27 | if(identity.empty()) | ||
28 | throw non_identity(OPKELE_CP_ "attempting to retrieve identity of non-identity related assertion"); | ||
29 | assert(!claimed_id.empty()); | ||
30 | return identity; | ||
31 | } | ||
32 | |||
14 | static void dh_get_secret( | 33 | static void dh_get_secret( |
15 | secret_t& secret, const basic_openid_message& om, | 34 | secret_t& secret, const basic_openid_message& om, |
@@ -197,4 +216,5 @@ namespace opkele { | |||
197 | 216 | ||
198 | void basic_RP::id_res(const basic_openid_message& om,extension_t *ext) { | 217 | void basic_RP::id_res(const basic_openid_message& om,extension_t *ext) { |
218 | reset_vars(); | ||
199 | bool o2 = om.has_field("ns") | 219 | bool o2 = om.has_field("ns") |
200 | && om.get_field("ns")==OIURI_OPENID20; | 220 | && om.get_field("ns")==OIURI_OPENID20; |
@@ -272,10 +292,15 @@ namespace opkele { | |||
272 | 292 | ||
273 | if(om.has_field("claimed_id")) { | 293 | if(om.has_field("claimed_id")) { |
294 | claimed_id = om.get_field("claimed_id"); | ||
295 | identity = om.get_field("identity"); | ||
274 | verify_OP( | 296 | verify_OP( |
275 | om.get_field("op_endpoint"), | 297 | om.get_field("op_endpoint"), |
276 | om.get_field("claimed_id"), | 298 | claimed_id, identity ); |
277 | om.get_field("identity") ); | ||
278 | } | 299 | } |
279 | 300 | ||
301 | }else{ | ||
302 | claimed_id = get_endpoint().claimed_id; | ||
303 | /* TODO: check if this is the identity we asked for */ | ||
304 | identity = om.get_field("identity"); | ||
280 | } | 305 | } |
281 | if(ext) ext->rp_id_res_hook(om,signeds); | 306 | if(ext) ext->rp_id_res_hook(om,signeds); |