00001 #ifndef __ARC_SAMLUTIL_H__
00002 #define __ARC_SAMLUTIL_H__
00003
00004 #include <vector>
00005 #include <string>
00006
00007 #include <xmlsec/crypto.h>
00008
00009 #include <arc/XMLNode.h>
00010
00011
00012 #define SAML_NAMESPACE "urn:oasis:names:tc:SAML:2.0:assertion"
00013 #define SAMLP_NAMESPACE "urn:oasis:names:tc:SAML:2.0:protocol"
00014
00015 #define XENC_NAMESPACE "http://www.w3.org/2001/04/xmlenc#"
00016 #define DSIG_NAMESPACE "http://www.w3.org/2000/09/xmldsig#"
00017
00018 namespace Arc {
00019
00020 typedef enum {
00021 RSA_SHA1,
00022 DSA_SHA1
00023 } SignatureMethod;
00024
00025 std::string DeflateData(const std::string& data);
00026
00027 std::string InflateData(const std::string& data);
00028
00029 std::string URIEscape(const std::string& data);
00030
00031 std::string URIUnEscape(const std::string& data);
00032
00033 std::string Base64Encode(const std::string& data);
00034
00035 std::string Base64Decode(const std::string& data);
00036
00037
00038 std::string SignQuery(std::string query, SignatureMethod sign_method, std::string& privkey_file);
00039
00040
00041
00042 bool VerifyQuery(const std::string& query, const std::string& sender_cert_str);
00043
00044 std::string BuildDeflatedQuery(const XMLNode& node);
00045
00046 bool BuildNodefromMsg(const std::string& msg, XMLNode& node);
00047
00048 }
00049
00050 #endif