Modified: webservices/rampart/scratch/c/saml/src/response.c URL: http://svn.apache.org/viewvc/webservices/rampart/scratch/c/saml/src/response.c?rev=592251&r1=592250&r2=592251&view=diff ============================================================================== --- webservices/rampart/scratch/c/saml/src/response.c (original) +++ webservices/rampart/scratch/c/saml/src/response.c Mon Nov 5 19:44:45 2007 @@ -215,6 +215,8 @@ response->sig_ctx = NULL; response->status = saml_status_create(env); response->saml_assertions = axutil_array_list_create(env, SAML_ARRAY_LIST_DEF); + response->signature = NULL; + response->original_xml = NULL; } return response; } @@ -267,6 +269,8 @@ } axutil_array_list_free(response->saml_assertions, env); } + response->original_xml = NULL; + response->signature = NULL; AXIS2_FREE(env->allocator, response); response = NULL; } @@ -306,7 +310,7 @@ axiom_attribute_t *attr = (axiom_attribute_t*)v; attr_val = axiom_attribute_get_value(attr, env); - if(!axutil_strcmp(axiom_attribute_get_localname(attr, env), SAML_RESPONCE_ID)) + if(!axutil_strcmp(axiom_attribute_get_localname(attr, env), SAML_RESPONSE_ID)) { response->response_id= attr_val; } @@ -400,7 +404,7 @@ { if(!response->response_id) response->response_id = saml_id_generate_random_bytes(env); - attr = axiom_attribute_create(env, SAML_RESPONCE_ID, response->response_id, NULL); + attr = axiom_attribute_create(env, SAML_RESPONSE_ID, response->response_id, NULL); axiom_element_add_attribute(e, env, attr, n); attr = axiom_attribute_create(env, SAML_MAJORVERSION, SAML_MAJOR_VERSION, NULL); @@ -416,6 +420,7 @@ { return NULL; } + t = axiom_node_to_string(n, env); if(response->request_response_id && response->recepient) { attr = axiom_attribute_create(env, SAML_IN_RESPONSE_TO, response->request_response_id, NULL); @@ -424,16 +429,22 @@ axiom_element_add_attribute(e, env, attr, n); } + t = axiom_node_to_string(n, env); + if(response->saml_assertions) { size = axutil_array_list_size(response->saml_assertions, env); for(i = 0 ; i < size ; i++) { - saml_assertion_to_om((saml_assertion_t*)axutil_array_list_get(response->saml_assertions, env, i), n, env); + assertion = (saml_assertion_t*)axutil_array_list_get(response->saml_assertions, env, i); + if(assertion) + saml_assertion_to_om(assertion, n, env); } } + t = axiom_node_to_string(n, env); + if(response->status) { saml_status_to_om(response->status, n, env); @@ -441,7 +452,7 @@ t = axiom_node_to_string(n, env); if(response->sig_ctx) { - saml_response_sign(response, &n, env); + saml_response_sign(response, n, env); } t = axiom_node_to_string(n, env); } @@ -614,7 +625,7 @@ response->sig_ctx = NULL; return AXIS2_SUCCESS; } -AXIS2_EXTERN int AXIS2_CALL saml_response_sign(saml_response_t *response, axiom_node_t **node, axutil_env_t *env) +AXIS2_EXTERN int AXIS2_CALL saml_response_sign(saml_response_t *response, axiom_node_t *node, axutil_env_t *env) { axiom_node_t *n= NULL, *sig_node = NULL; axis2_char_t *id = NULL; @@ -631,30 +642,27 @@ sig_part = axutil_array_list_get(sig_parts, env, i); if(sig_part) { - oxs_sign_part_set_node(sig_part, env, *node); + oxs_sign_part_set_node(sig_part, env, node); } } } + id = axiom_node_to_string(node, env); + oxs_xml_sig_sign(env, response->sig_ctx, node, &n); + id = axiom_node_to_string(node, env); + id = axiom_node_to_string(n, env); - oxs_xml_sig_sign(env, response->sig_ctx, *node, &n); /*Finally build KeyInfo*/ oxs_xml_key_info_build(env, n, oxs_sign_ctx_get_certificate(response->sig_ctx, env), OXS_KIBP_X509DATA_X509CERTIFICATE); return AXIS2_SUCCESS; } AXIS2_EXTERN void AXIS2_CALL saml_response_set_default_signature(saml_response_t *response, axutil_env_t *env, oxs_sign_ctx_t *sig_ctx) { - oxs_sign_part_t* sig_part = NULL; - oxs_transform_t *tr = NULL; - axutil_array_list_t *sig_parts = NULL, *trans = NULL; - axiom_attribute_t* att = NULL; - axiom_element_t *test = NULL; - if(response->sig_ctx) { oxs_sign_ctx_free(response->sig_ctx, env); } response->sig_ctx = sig_ctx; - saml_util_set_sig_ctx_defaults(response->sig_ctx, env); + saml_util_set_sig_ctx_defaults(response->sig_ctx, env, SAML_RESPONSE_ID); } AXIS2_EXTERN int AXIS2_CALL saml_status_set_status_code(saml_status_t *status, axis2_char_t *code, axutil_env_t *env) { @@ -666,29 +674,29 @@ return AXIS2_SUCCESS; } -AXIS2_EXTERN int AXIS2_CALL -saml_response_signature_verify(saml_response_t *response, axutil_env_t *env) -{ - return oxs_xml_sig_verify(env, response->sig_ctx, response->signature, response->original_xml); -} - -AXIS2_EXTERN int AXIS2_CALL -saml_response_is_sign_set(saml_response_t *response, axutil_env_t *env) -{ - if (response->sig_ctx) - { - return AXIS2_TRUE; - } - return AXIS2_FALSE; -} - -AXIS2_EXTERN int AXIS2_CALL -saml_response_is_signed(saml_response_t *response, axutil_env_t *env) -{ - if (response->signature) - { - return AXIS2_TRUE; - } - return AXIS2_FALSE; -} +AXIS2_EXTERN int AXIS2_CALL +saml_response_signature_verify(saml_response_t *response, axutil_env_t *env) +{ + return oxs_xml_sig_verify(env, response->sig_ctx, response->signature, response->original_xml); +} + +AXIS2_EXTERN int AXIS2_CALL +saml_response_is_sign_set(saml_response_t *response, axutil_env_t *env) +{ + if (response->sig_ctx) + { + return AXIS2_TRUE; + } + return AXIS2_FALSE; +} + +AXIS2_EXTERN int AXIS2_CALL +saml_response_is_signed(saml_response_t *response, axutil_env_t *env) +{ + if (response->signature) + { + return AXIS2_TRUE; + } + return AXIS2_FALSE; +}
Added: webservices/rampart/scratch/c/saml/test/assertion.c URL: http://svn.apache.org/viewvc/webservices/rampart/scratch/c/saml/test/assertion.c?rev=592251&view=auto ============================================================================== --- webservices/rampart/scratch/c/saml/test/assertion.c (added) +++ webservices/rampart/scratch/c/saml/test/assertion.c Mon Nov 5 19:44:45 2007 @@ -0,0 +1,256 @@ +#include <SAML.h> +#include <axutil_env.h> +#include "saml_test.h" +#include "saml_test.h" +#include"saml_test_pr.h" + +int main() +{ + axiom_element_t *e = NULL; + axiom_node_t *n = NULL, *assertion_node = NULL; + axis2_char_t *a_text = NULL, *b_text = NULL; + saml_assertion_t *assertion = NULL; + axutil_env_t *env = NULL; + axutil_date_time_t *time = NULL; + axiom_xml_reader_t *reader = NULL; + axiom_stax_builder_t *builder = NULL; + axiom_document_t *document = NULL; + axiom_xml_writer_t *writer = NULL; + saml_request_t *req = NULL; + saml_response_t *res = NULL; + axiom_node_t *req_node1 = NULL,*req_node2 = NULL, *res_node1 = NULL, *res_node2 = NULL; + axis2_char_t *res_text = NULL, *req_text = NULL; + FILE *fp = NULL; + + env = axutil_env_create_all("SAML_TEST.log", AXIS2_LOG_LEVEL_DEBUG); + + /* assertions */ + assertion = saml_test_assertion(env); + axiom_element_create(env, NULL, "TEST_ASSERTION", NULL, &n); + saml_assertion_to_om(assertion, n, env); + a_text = axiom_node_to_string(n, env); + saml_assertion_free(assertion, env); + + /* from file */ + /*reader = axiom_xml_reader_create_for_file(env, "test.xml", NULL); + builder = axiom_stax_builder_create(env, reader); + document = axiom_stax_builder_get_document(builder, env);*/ + /*assertion_node = axiom_document_build_all(document, env); + assertion = saml_assertion_create(env); + a_text = axiom_node_to_string(assertion_node, env); + saml_assertion_build(assertion, assertion_node, env); + assertion_node = saml_assertion_to_om(assertion, NULL, env); + b_text = axiom_node_to_string(assertion_node, env);*/ + + + + // saml request response test + /*req = saml_request_test(env); + res = saml_response_test(env);*/ + + res = saml_response_test_with_sign(env); + req = saml_request_test_with_sign(env); + + req_node1 = saml_request_to_om(req, NULL, env); + res_node1 = saml_response_to_om(res, NULL, env); + + req_text = axiom_node_to_string(req_node1, env); + res_text = axiom_node_to_string(res_node1, env); + + printf("%s \n",req_text); + + fp = fopen("request.xml", "w"); + fprintf(fp,"%s", req_text); + fclose(fp); + + fp = fopen("response.xml", "w"); + fprintf(fp,"%s", res_text); + fclose(fp); + + AXIS2_FREE(env->allocator, req_text); + AXIS2_FREE(env->allocator, res_text); + + saml_request_free(req, env); + saml_response_free(res, env); + //axiom_node_free_tree(req_node1, env); + //axiom_node_free_tree(res_node, env); + + reader = axiom_xml_reader_create_for_file(env, "request.xml", NULL); + builder = axiom_stax_builder_create(env, reader); + document = axiom_stax_builder_get_document(builder, env); + req_node2 = axiom_document_build_all(document, env); + + reader = axiom_xml_reader_create_for_file(env, "response.xml", NULL); + builder = axiom_stax_builder_create(env, reader); + document = axiom_stax_builder_get_document(builder, env); + res_node2 = axiom_document_build_all(document, env); + + req = saml_request_create(env); + res = saml_response_create(env); + + + saml_request_set_default_signature(req, env, saml_load_default_sign(env, "key.pem","cert.pem","")); + saml_response_set_default_signature(res, env, saml_load_default_sign(env, "key.pem","cert.pem","")); + + if(!req_node2) + saml_request_build(req, req_node1, env); + else + saml_request_build(req, req_node2, env); + + if(!res_node2) + saml_response_build(res, res_node1, env); + else + saml_response_build(res, res_node2, env); + + if(saml_request_is_signed(req, env)) + if(saml_request_signature_verify(req, env) == AXIS2_SUCCESS) + printf("verifying success\n"); + + + + return 0; +} + +saml_assertion_t * AXIS2_CALL saml_test_assertion(axutil_env_t *env) +{ + axutil_date_time_t *time = NULL; + saml_assertion_t *assertion = NULL; + time = axutil_date_time_create(env); + assertion = saml_assertion_create(env); + if (assertion) + { + saml_assertion_set_minor_version(assertion, env, 1); + saml_assertion_set_issue_instant(assertion, env, time); + saml_assertion_set_issuer(assertion, env, "http://ws.apache.org/rampart/c"); + saml_assertion_add_condition(assertion, env, saml_test_condition(env)); + saml_assertion_set_not_before(assertion, env, axutil_date_time_create(env)); + saml_assertion_add_statement(assertion, env, saml_test_auth_statement(env)); + saml_assertion_add_statement(assertion, env, saml_test_attr_statement(env)); + saml_assertion_add_statement(assertion, env, saml_test_auth_des_statement(env)); + } + return assertion; +} + +saml_condition_t * AXIS2_CALL saml_test_condition(axutil_env_t *env) +{ + saml_audi_restriction_cond_t *arc = NULL; + axis2_char_t *audience = NULL, *c_to_om = NULL; + axis2_char_t *cond_text = NULL; + axiom_element_t *e = NULL; + axiom_node_t *n = NULL; + saml_condition_t *condition = AXIS2_MALLOC(env->allocator, sizeof(saml_condition_t)); + arc = saml_audi_restriction_cond_create(env); + saml_audi_restriction_cond_add_audience(arc, env, "www.samle.com"); + + axiom_element_create(env, NULL, "TEST_COND", NULL, &n); + /*saml_condition_to_om(condition, n, env); + cond_text = axiom_node_to_string(n, env);*/ + return condition; +} + +saml_stmt_t * AXIS2_CALL saml_test_auth_statement(axutil_env_t *env) +{ + saml_auth_stmt_t *a_stmt = NULL; + saml_stmt_t *stmt = saml_stmt_create(env); + a_stmt = saml_auth_stmt_create(env); + saml_stmt_set_stmt(stmt, env, a_stmt, SAML_STMT_AUTHENTICATIONSTATEMENT); + + saml_auth_stmt_set_auth_method(a_stmt, env, SAML_AUTH_METHOD_URI_PASSWORD); + saml_auth_stmt_set_auth_instant(a_stmt, env, axutil_date_time_create(env)); + + saml_auth_stmt_set_subject(a_stmt, env, saml_test_subject(env)); + saml_auth_stmt_set_subject_dns(a_stmt, env, "192.148.5.8"); + saml_auth_stmt_set_subject_ip(a_stmt, env, "128.5.6.4"); + saml_auth_stmt_add_auth_binding(a_stmt, env, saml_test_autherity_binding(env)); + return stmt; +} + +saml_stmt_t * AXIS2_CALL saml_test_auth_des_statement(axutil_env_t *env) +{ + saml_auth_desicion_stmt_t *d_stmt = NULL; + saml_stmt_t *stmt = NULL; + d_stmt = saml_auth_desicion_stmt_create(env); + stmt = saml_stmt_create(env); + saml_stmt_set_stmt(stmt, env, d_stmt, SAML_STMT_AUTHORIZATIONDECISIONSTATEMENT); + + saml_auth_desicion_stmt_set_subject(d_stmt, env, saml_test_subject(env)); + saml_auth_desicion_stmt_set_resource(d_stmt, env, "http://cse.mrt.ac.lk/cs420/gruop7"); + saml_auth_desicion_stmt_set_desicion(d_stmt, env, "Permit"); + saml_auth_desicion_stmt_add_action(d_stmt, env, saml_test_action(env, SAML_ACTION_READ)); + saml_auth_desicion_stmt_add_action(d_stmt, env, saml_test_action(env, SAML_ACTION_WRITE)); + return stmt; +} + +saml_action_t * AXIS2_CALL saml_test_action(axutil_env_t *env, axis2_char_t *act) +{ + saml_action_t *action = NULL; + action = saml_action_create(env); + saml_action_set_namespace(action, env, SAML_ACTION_URI_RWEDC); + saml_action_set_data(action, env, act); + return action; +} + + +saml_auth_binding_t * AXIS2_CALL saml_test_autherity_binding(axutil_env_t *env) +{ + saml_auth_binding_t *bind = NULL; + bind = saml_auth_binding_create(env); + saml_auth_binding_set_authority_kind(bind, env, "abc:aa:aa"); + saml_auth_binding_set_binding(bind, env, "SOAP"); + saml_auth_binding_set_location(bind, env, "http://myhome.com/sevices/echo"); + return bind; +} + + +saml_subject_t * AXIS2_CALL saml_test_subject(axutil_env_t *env) +{ + saml_subject_t *subject = NULL; + saml_named_id_t *id = NULL; + subject = saml_subject_create(env); + + id = saml_named_id_create(env); + saml_named_id_set_name(id, env, "Computer Science Engineering Department"); + saml_named_id_set_format(id, env, SAML_EMAIL_ADDRESS); + saml_named_id_set_name_qualifier(id, env, "University of Moratuwa"); + saml_subject_set_named_id(subject, env, id); + + saml_subject_add_confirmation(subject, env, SAML_SUB_CONFIRMATION_ARTIFACT); + saml_subject_add_confirmation(subject, env, SAML_SUB_CONFIRMATION_BEARER); + return subject; +} + +saml_stmt_t * AXIS2_CALL saml_test_attr_statement(axutil_env_t *env) +{ + axiom_node_t *n = NULL; + axiom_element_t *e = NULL; + axis2_char_t *text = NULL; + saml_attr_stmt_t *attr_stmt = NULL; + saml_stmt_t *stmt = saml_stmt_create(env); + attr_stmt = saml_attr_stmt_create(env); + + /* set the specific statement to the saml_stmt_t */ + saml_stmt_set_stmt(stmt, env, attr_stmt, SAML_STMT_ATTRIBUTESTATEMENT); + + /*Now set the properties of the attr_stmt */ + saml_attr_stmt_set_subject(attr_stmt, env, saml_test_subject(env)); + + saml_attr_stmt_add_attribute(attr_stmt, env, saml_test_attribute(env)); + return stmt; +} + +saml_attr_t *AXIS2_CALL saml_test_attribute(axutil_env_t *env) +{ + saml_attr_t *attr = NULL; + axiom_namespace_t *ns = NULL; + axiom_node_t *n = NULL; + axiom_element_t *e = NULL; + attr = saml_attr_create(env); + ns = axiom_namespace_create(env, "http://cse.mrt.ac.lk", "mora"); + e = axiom_element_create(env, NULL, "CS420", ns, &n); + saml_attr_add_value(attr, env, n); + + saml_attr_set_name(attr, env, "Projects"); + saml_attr_set_namespace(attr, env, "mora:http://cse.mrt.ac.lk"); + return attr; +} + Added: webservices/rampart/scratch/c/saml/test/cert.pem URL: http://svn.apache.org/viewvc/webservices/rampart/scratch/c/saml/test/cert.pem?rev=592251&view=auto ============================================================================== --- webservices/rampart/scratch/c/saml/test/cert.pem (added) +++ webservices/rampart/scratch/c/saml/test/cert.pem Mon Nov 5 19:44:45 2007 @@ -0,0 +1,62 @@ +Certificate: + Data: + Version: 3 (0x2) + Serial Number: + dc:83:fa:3c:1e:93:11:ae + Signature Algorithm: sha1WithRSAEncryption + Issuer: C=SL, ST=WP, O=WS, OU=C, CN=Kaushalye/[EMAIL PROTECTED] + Validity + Not Before: Dec 6 10:27:18 2006 GMT + Not After : Dec 6 10:27:18 2007 GMT + Subject: C=SL, ST=WP, L=Katubedda, O=WS, OU=C, CN=Aaa/[EMAIL PROTECTED] + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + RSA Public Key: (1024 bit) + Modulus (1024 bit): + 00:c7:e1:d8:5c:ef:16:dd:5d:05:95:c8:16:7c:2f: + f5:13:15:b4:7a:0c:c8:fb:95:c8:03:db:3d:a8:41: + 5d:70:75:ce:27:15:e2:a3:ef:87:24:38:5a:ee:72: + ea:70:c2:45:44:b5:dd:46:ca:51:60:15:ac:51:c3: + 59:af:a8:17:85:af:cd:77:74:87:b2:4b:ab:13:e0: + 00:82:2f:2a:d0:6b:12:7d:09:dc:52:dc:16:10:58: + 46:38:74:c7:cf:98:96:e3:58:ce:8a:c8:31:fa:77: + 6c:69:65:dc:a1:4c:38:e7:b0:9e:dc:64:06:ae:aa: + 13:90:23:62:84:14:c0:9e:31 + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Basic Constraints: + CA:FALSE + Netscape Comment: + OpenSSL Generated Certificate + X509v3 Subject Key Identifier: + 67:B7:BC:8C:22:29:1E:17:58:C6:43:91:A6:FB:82:E7:11:77:62:D6 + X509v3 Authority Key Identifier: + keyid:D7:27:10:74:4B:F8:2F:44:0B:BC:C7:9E:04:EF:22:5B:15:18:21:CC + + Signature Algorithm: sha1WithRSAEncryption + 4d:36:00:f0:51:10:44:72:73:5f:09:e4:fe:ad:f4:5b:a0:48: + 5f:50:50:d7:bb:bb:2a:98:b3:b7:d7:54:9e:57:6d:d2:cd:de: + d5:d5:30:4d:c7:03:09:b4:7d:d8:72:17:f7:c6:e8:72:69:89: + b9:bc:91:5a:a8:c8:9e:ee:76:0b:c2:ae:c2:65:59:94:5b:fe: + a2:30:bf:aa:49:25:b1:42:bc:6d:c4:0a:99:aa:2d:17:14:d8: + 8d:19:cd:75:22:84:51:22:55:4e:e1:9e:50:1f:c6:c2:57:e1: + 4b:58:87:d5:73:c1:69:fd:25:dd:3d:50:ee:0e:9f:6a:9a:13: + 52:45 +-----BEGIN CERTIFICATE----- +MIICzjCCAjegAwIBAgIJANyD+jwekxGuMA0GCSqGSIb3DQEBBQUAMGUxCzAJBgNV +BAYTAlNMMQswCQYDVQQIEwJXUDELMAkGA1UEChMCV1MxCjAIBgNVBAsTAUMxEjAQ +BgNVBAMTCUthdXNoYWx5ZTEcMBoGCSqGSIb3DQEJARYNa2F1c0B3c28yLmNvbTAe +Fw0wNjEyMDYxMDI3MThaFw0wNzEyMDYxMDI3MThaMHAxCzAJBgNVBAYTAlNMMQsw +CQYDVQQIEwJXUDESMBAGA1UEBxMJS2F0dWJlZGRhMQswCQYDVQQKEwJXUzEKMAgG +A1UECxMBQzEMMAoGA1UEAxMDQWFhMRkwFwYJKoZIhvcNAQkBFgphYWFAd3MuY29t +MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDH4dhc7xbdXQWVyBZ8L/UTFbR6 +DMj7lcgD2z2oQV1wdc4nFeKj74ckOFrucupwwkVEtd1GylFgFaxRw1mvqBeFr813 +dIeyS6sT4ACCLyrQaxJ9CdxS3BYQWEY4dMfPmJbjWM6KyDH6d2xpZdyhTDjnsJ7c +ZAauqhOQI2KEFMCeMQIDAQABo3sweTAJBgNVHRMEAjAAMCwGCWCGSAGG+EIBDQQf +Fh1PcGVuU1NMIEdlbmVyYXRlZCBDZXJ0aWZpY2F0ZTAdBgNVHQ4EFgQUZ7e8jCIp +HhdYxkORpvuC5xF3YtYwHwYDVR0jBBgwFoAU1ycQdEv4L0QLvMeeBO8iWxUYIcww +DQYJKoZIhvcNAQEFBQADgYEATTYA8FEQRHJzXwnk/q30W6BIX1BQ17u7Kpizt9dU +nldt0s3e1dUwTccDCbR92HIX98bocmmJubyRWqjInu52C8KuwmVZlFv+ojC/qkkl +sUK8bcQKmaotFxTYjRnNdSKEUSJVTuGeUB/GwlfhS1iH1XPBaf0l3T1Q7g6fapoT +UkU= +-----END CERTIFICATE----- Added: webservices/rampart/scratch/c/saml/test/key.pem URL: http://svn.apache.org/viewvc/webservices/rampart/scratch/c/saml/test/key.pem?rev=592251&view=auto ============================================================================== --- webservices/rampart/scratch/c/saml/test/key.pem (added) +++ webservices/rampart/scratch/c/saml/test/key.pem Mon Nov 5 19:44:45 2007 @@ -0,0 +1,15 @@ +-----BEGIN RSA PRIVATE KEY----- +MIICWwIBAAKBgQDH4dhc7xbdXQWVyBZ8L/UTFbR6DMj7lcgD2z2oQV1wdc4nFeKj +74ckOFrucupwwkVEtd1GylFgFaxRw1mvqBeFr813dIeyS6sT4ACCLyrQaxJ9CdxS +3BYQWEY4dMfPmJbjWM6KyDH6d2xpZdyhTDjnsJ7cZAauqhOQI2KEFMCeMQIDAQAB +AoGAQIrSvJ+PeIdTCFyFtjAeKL13e3mpZGOnJGek7zG8JFZF7SUJ+/maX726zwhY +X3S7vUYkX3lw8V/ONtCnoyrZ/QQBqvUPUGg2XJI+NDYDrc3RR9YHTBFiYt791iXX +2/hpQJV7Fj2K40AxAgcDmOmsjhMROhc52cERXNUTvqo+sIECQQD+WbS0NQL4kcRZ +kELonmCHNAFA+vYvfB82RCspctNbfoZUAUPn/BMWTf9jZms89mDGfzaWKP5xd9aB +Hi7sTp4JAkEAyS204Q36vnbDh5Dzz5YkJNFTdgyrLTBIQ5r4ax+K1i6V/Mwq07Zw +SCvdDaTiBHOSaVJSHE38iwZZxUsWAs6I6QJADGFlcFgcOukte4aQGy6KWEppvTX6 +Abmy8ztCNpRGQW/ZLgGZwpL8gtttEPONSLxdXYwXpht8tx00LbjAY/Q3sQJAHqEg +2ur/9COs3WUKWd6oHhrotB51qWmidviPPfANeVKab2S+WIF8UuCqxTsHVloqPnLU +IY8WFiyfWlR2Q3MikQJASXg8KPM8C8Jp17iBbF5f09V18iA1fAbQSaLk3Lcbp1/h +0VsiOHjW05LvI8zIHMX2Ops7qAjxixK1T/2ec9qhuQ== +-----END RSA PRIVATE KEY----- Added: webservices/rampart/scratch/c/saml/test/protocol.c URL: http://svn.apache.org/viewvc/webservices/rampart/scratch/c/saml/test/protocol.c?rev=592251&view=auto ============================================================================== --- webservices/rampart/scratch/c/saml/test/protocol.c (added) +++ webservices/rampart/scratch/c/saml/test/protocol.c Mon Nov 5 19:44:45 2007 @@ -0,0 +1,149 @@ +#include<SAML.h> +#include"saml_test.h" +#include"saml_test_pr.h" + +saml_request_t* AXIS2_CALL saml_request_test(axutil_env_t *env) +{ + saml_request_t *request = NULL; + axutil_date_time_t *time = NULL; + axutil_array_list_t *id_ref = NULL; + saml_query_t *q1 = NULL, *q2 = NULL, *q3 = NULL; + axutil_qname_t *qname = NULL; + saml_artifact_t *artifact1 = NULL, *artifact2 = NULL; + + qname = axutil_qname_create_from_string(env,"saml:AuthorizationDecisionQuery"); + request = saml_request_create(env); + time = axutil_date_time_create(env); + artifact1 = saml_artifact_create(env); + artifact2 = saml_artifact_create(env); + + saml_artifact_set_data(artifact1, env, "ID178AE"); + saml_artifact_set_data(artifact2, env, "ID278AB"); + + q1 = saml_query_create(env); + saml_query_set_subject(q1, saml_test_subject(env), env); + saml_query_set_type(q1, SAML_AUTHORIZATION_DECISION_QUERY, env); + saml_query_set_query(q1, saml_autho_decision_query_test(env), SAML_AUTHORIZATION_DECISION_QUERY, env); + + saml_request_set_issue_instant(request, time, env); + saml_request_set_minor_version(request, 1, env); + saml_request_set_query(request, q1, env); + + saml_request_add_artifact(request, artifact1, env); + saml_request_add_id_refs(request, "bc1cbaf00742737c2299f1baa88290eb", env); + saml_request_add_artifact(request, artifact2, env); + saml_request_add_id_refs(request, "bc2cbaf00742737c2299f1baa88290ec", env); + saml_request_add_respond_with(request, qname, env); + return request; + +} +saml_response_t* AXIS2_CALL saml_response_test(axutil_env_t *env) +{ + saml_response_t *res = NULL; + axutil_date_time_t *time = NULL; + time = axutil_date_time_create(env); + res = saml_response_create(env); + saml_response_set_issue_instant(res, time, env); + saml_response_set_minor_version(res, 1, env); + saml_response_set_recepient(res, "www.webex.com", env); + saml_response_set_status(res, saml_status_test(env), env); + saml_response_set_in_reponses_to(res, "d0aac0fb9e6b4ffda4576e7a15e55b5d", env); + saml_response_add_assertion(res, saml_test_assertion(env), env); + saml_response_add_assertion(res, saml_test_assertion(env), env); + saml_response_add_assertion(res, saml_test_assertion(env), env); + + return res; +} +saml_status_t* AXIS2_CALL saml_status_test(axutil_env_t *env) +{ + saml_status_t *st = NULL; + axiom_node_t *n_det = NULL; + axutil_qname_t *qname = NULL; + + qname = axutil_qname_create_from_string(env, "samlp:Success"); + n_det = axiom_node_create(env); + st = saml_status_create(env); + saml_status_set_status_msg(st, "Success", env); + saml_status_set_status_detail(st, n_det, env); + saml_status_set_status_value(st, qname, env); + saml_status_set_status_code(st, "SAML1.567A", env); + return st; +} + +saml_subject_query_t* AXIS2_CALL saml_subject_query_test(axutil_env_t *env) +{ + saml_subject_query_t *subj_q = NULL; + subj_q = saml_subject_query_create(env); + return subj_q; +} + +saml_attr_query_t* AXIS2_CALL saml_attr_query_test(axutil_env_t *env) +{ + saml_attr_query_t *attr_q = NULL; + saml_attr_desig_t *desig = NULL; + + attr_q = saml_attr_query_create(env); + desig = saml_attr_desig_create(env); + saml_attr_desig_set_name(desig, env, ""); + saml_attr_desig_set_namespace(desig, env, ""); + + saml_attr_query_set_resource(attr_q, env, ""); + saml_attr_query_add_designators(attr_q, desig, env); + return attr_q; +} + +saml_authentication_query_t* AXIS2_CALL saml_authentication_query_test(axutil_env_t *env) +{ + saml_authentication_query_t *auth_q = NULL; + auth_q = saml_authentication_query_create(env); + saml_auth_query_set_authentication_method(auth_q, "", env); + return auth_q; +} +saml_autho_decision_query_t* AXIS2_CALL saml_autho_decision_query_test(axutil_env_t *env) +{ + saml_autho_decision_query_t *auth_dec_q = NULL; + saml_evidence_t *evidence = NULL; + saml_assertion_t *assert = NULL; + + auth_dec_q = saml_autho_decision_query_create(env); + evidence = saml_evidence_create(env); + assert = saml_test_assertion(env); + saml_evidence_add_assertion(evidence, env, assert); + saml_evidence_add_assertion_id(evidence, env, assert->assertion_id); + saml_autho_decision_query_add_action(auth_dec_q, saml_test_action(env,"opensciencegrid:authorization"), env); + saml_autho_decision_query_set_evidence(auth_dec_q,evidence, env); + saml_autho_decision_query_set_resource(auth_dec_q, "/DC=org/DC=doegrids/OU=Services/CN=fcdfosg1.fnal.gov", env); + return auth_dec_q; +} + +oxs_sign_ctx_t* AXIS2_CALL saml_load_default_sign(axutil_env_t *env, axis2_char_t *pvk_path, axis2_char_t *cert_path, axis2_char_t *pswd) +{ + oxs_sign_ctx_t *sig_ctx = NULL; + oxs_x509_cert_t *cert = NULL; + openssl_pkey_t *pkey = NULL; + + sig_ctx = oxs_sign_ctx_create(env); + pkey = oxs_key_mgr_load_private_key_from_pem_file(env, pvk_path, pswd); + cert = oxs_key_mgr_load_x509_cert_from_pem_file(env, cert_path); + + oxs_sign_ctx_set_private_key(sig_ctx, env, pkey); + oxs_sign_ctx_set_certificate(sig_ctx, env,cert); + + return sig_ctx; + +} +saml_request_t* AXIS2_CALL saml_request_test_with_sign(axutil_env_t *env) +{ + saml_request_t *req = NULL; + req = saml_request_test(env); + saml_request_set_default_signature(req, env, saml_load_default_sign(env, "key.pem","cert.pem","")); + return req; +} +saml_response_t* AXIS2_CALL saml_response_test_with_sign(axutil_env_t *env) +{ + saml_response_t *res = NULL; + res = saml_response_test(env); + saml_response_set_default_signature(res, env, saml_load_default_sign(env, "key.pem","cert.pem","")); + return res; + +} Added: webservices/rampart/scratch/c/saml/test/saml_test_assertion.h URL: http://svn.apache.org/viewvc/webservices/rampart/scratch/c/saml/test/saml_test_assertion.h?rev=592251&view=auto ============================================================================== --- webservices/rampart/scratch/c/saml/test/saml_test_assertion.h (added) +++ webservices/rampart/scratch/c/saml/test/saml_test_assertion.h Mon Nov 5 19:44:45 2007 @@ -0,0 +1,12 @@ +#include<SAML.h> +#include<saml_req.h> + +saml_assertion_t * AXIS2_CALL saml_test_assertion(axutil_env_t *env); +saml_condition_t * AXIS2_CALL saml_test_condition(axutil_env_t *env); +saml_stmt_t * AXIS2_CALL saml_test_auth_statement(axutil_env_t *env); +saml_stmt_t * AXIS2_CALL saml_test_auth_des_statement(axutil_env_t *env); +saml_action_t * AXIS2_CALL saml_test_action(axutil_env_t *env, axis2_char_t *act); +saml_auth_binding_t * AXIS2_CALL saml_test_autherity_binding(axutil_env_t *env); +saml_subject_t * AXIS2_CALL saml_test_subject(axutil_env_t *env); +saml_stmt_t * AXIS2_CALL saml_test_attr_statement(axutil_env_t *env); +saml_attr_t *AXIS2_CALL saml_test_attribute(axutil_env_t *env); Added: webservices/rampart/scratch/c/saml/test/saml_test_protocol.h URL: http://svn.apache.org/viewvc/webservices/rampart/scratch/c/saml/test/saml_test_protocol.h?rev=592251&view=auto ============================================================================== --- webservices/rampart/scratch/c/saml/test/saml_test_protocol.h (added) +++ webservices/rampart/scratch/c/saml/test/saml_test_protocol.h Mon Nov 5 19:44:45 2007 @@ -0,0 +1,23 @@ +#include"saml_test.h" +#include<saml_req.h> +#include <oxs_xml_signature.h> +#include <oxs_sign_ctx.h> +#include <oxs_xml_key_processor.h> +#include <oxs_utility.h> +#include <oxs_transforms_factory.h> +#include <oxs_xml_key_info_builder.h> +#include <oxs_key_mgr.h> +#include <oxs_transform.h> +#include <oxs_x509_cert.h> + +saml_request_t* AXIS2_CALL saml_request_test(axutil_env_t *env); +saml_response_t* AXIS2_CALL saml_response_test(axutil_env_t *env); +saml_request_t* AXIS2_CALL saml_request_test_with_sign(axutil_env_t *env); +saml_response_t* AXIS2_CALL saml_response_test_with_sign(axutil_env_t *env); + +saml_status_t* AXIS2_CALL saml_status_test(axutil_env_t *env); +saml_subject_query_t* AXIS2_CALL saml_subject_query_test(axutil_env_t *env); +saml_attr_query_t* AXIS2_CALL saml_attr_query_test(axutil_env_t *env); +saml_authentication_query_t* AXIS2_CALL saml_authentication_query_test(axutil_env_t *env); +saml_autho_decision_query_t* AXIS2_CALL saml_autho_decision_query_test(axutil_env_t *env); +oxs_sign_ctx_t* AXIS2_CALL saml_load_default_sign(axutil_env_t *env, axis2_char_t *pvk_path, axis2_char_t *cert_path, axis2_char_t *pswd); \ No newline at end of file
