summaryrefslogtreecommitdiffabout
Side-by-side diff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--include/opkele/types.h2
-rw-r--r--lib/openid_message.cc20
2 files changed, 22 insertions, 0 deletions
diff --git a/include/opkele/types.h b/include/opkele/types.h
index 842a722..5d39a5c 100644
--- a/include/opkele/types.h
+++ b/include/opkele/types.h
@@ -150,2 +150,4 @@ namespace opkele {
+ virtual void to_htmlhiddens(ostream& o) const;
+
void add_to_signed(const string& fields);
diff --git a/lib/openid_message.cc b/lib/openid_message.cc
index 905ea95..fdb4b04 100644
--- a/lib/openid_message.cc
+++ b/lib/openid_message.cc
@@ -161,2 +161,22 @@ namespace opkele {
+ struct __om_html_outputter : public unary_function<const string&,void> {
+ public:
+ const basic_openid_message& om;
+ ostream& os;
+
+ __om_html_outputter(const basic_openid_message& om,ostream& os)
+ : om(om), os(os) { }
+
+ result_type operator()(argument_type f) {
+ os <<
+ "<input type=\"hidden\""
+ " name=\"" << util::attr_escape(f) << "\""
+ " value=\"" << util::attr_escape(om.get_field(f)) << "\" />";
+ }
+ };
+
+ void basic_openid_message::to_htmlhiddens(ostream& o) const {
+ for_each(fields_begin(),fields_end(),__om_html_outputter(*this,o));
+ }
+
void basic_openid_message::add_to_signed(const string& fields) {