You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by ka...@apache.org on 2007/03/05 12:55:27 UTC

svn commit: r514653 - in /webservices/axis2/trunk/c/rampart: include/oxs_xml_key_processor.h src/omxmlsec/xml_key_processor.c

Author: kaushalye
Date: Mon Mar  5 03:55:26 2007
New Revision: 514653

URL: http://svn.apache.org/viewvc?view=rev&rev=514653
Log:
Processing Key Information to obtain the Issuer name and the serial number

Modified:
    webservices/axis2/trunk/c/rampart/include/oxs_xml_key_processor.h
    webservices/axis2/trunk/c/rampart/src/omxmlsec/xml_key_processor.c

Modified: webservices/axis2/trunk/c/rampart/include/oxs_xml_key_processor.h
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/rampart/include/oxs_xml_key_processor.h?view=diff&rev=514653&r1=514652&r2=514653
==============================================================================
--- webservices/axis2/trunk/c/rampart/include/oxs_xml_key_processor.h (original)
+++ webservices/axis2/trunk/c/rampart/include/oxs_xml_key_processor.h Mon Mar  5 03:55:26 2007
@@ -36,6 +36,11 @@
 {
 #endif
 
+/*Process a ds:X509IssuerSerial element and populate a certificate*/
+AXIS2_EXTERN oxs_x509_cert_t *AXIS2_CALL
+oxs_xml_key_process_X509IssuerSerial(const axis2_env_t *env,
+    axiom_node_t *X509_issuer_serial_node);
+
 /*Process data in a ds:X509Certificate and returns a certificate*/
 AXIS2_EXTERN oxs_x509_cert_t *AXIS2_CALL
 oxs_xml_key_process_X509Certificate(const axis2_env_t *env,

Modified: webservices/axis2/trunk/c/rampart/src/omxmlsec/xml_key_processor.c
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/rampart/src/omxmlsec/xml_key_processor.c?view=diff&rev=514653&r1=514652&r2=514653
==============================================================================
--- webservices/axis2/trunk/c/rampart/src/omxmlsec/xml_key_processor.c (original)
+++ webservices/axis2/trunk/c/rampart/src/omxmlsec/xml_key_processor.c Mon Mar  5 03:55:26 2007
@@ -30,10 +30,47 @@
 #include <oxs_token_x509_data.h>
 #include <oxs_token_x509_certificate.h>
 #include <oxs_token_key_info.h>
+#include <oxs_token_x509_issuer_name.h>
+#include <oxs_token_x509_serial_number.h>
 #include <oxs_xml_key_processor.h>
 /*Private functions*/
 
 /*Public functions*/
+AXIS2_EXTERN oxs_x509_cert_t *AXIS2_CALL
+oxs_xml_key_process_X509IssuerSerial(const axis2_env_t *env,
+    axiom_node_t *X509_issuer_serial_node)
+{
+    oxs_x509_cert_t *cert = NULL;
+    axiom_node_t *issuer_name_node = NULL;
+    axiom_node_t *serial_num_node = NULL;
+    axis2_char_t *node_name = NULL;
+    axis2_char_t *issuer_name = NULL;
+    axis2_char_t *serial_num_str = NULL;
+
+    node_name = axiom_util_get_localname(X509_issuer_serial_node, env);
+    if(0 != axis2_strcmp(node_name, OXS_NODE_X509_ISSUER_SERIAL)){
+        oxs_error(env, ERROR_LOCATION, OXS_ERROR_INVALID_DATA,"Invalid node. Expected %s. Found", OXS_NODE_X509_ISSUER_SERIAL, node_name);
+        return NULL;
+    }
+
+    
+    issuer_name_node =  AXIOM_NODE_GET_FIRST_CHILD(X509_issuer_serial_node, env);
+    if(issuer_name_node){
+        issuer_name = oxs_token_get_issuer_name(env, issuer_name_node);
+    }
+    
+    serial_num_node = AXIOM_NODE_GET_NEXT_SIBLING(issuer_name_node, env);
+    if(serial_num_node){
+        serial_num_str = oxs_token_get_serial_number(env, serial_num_node);
+    }
+    
+    /*we set the key issuername and the serial number*/
+    cert = oxs_x509_cert_create(env); 
+    oxs_x509_cert_set_issuer(cert, env, issuer_name);
+    oxs_x509_cert_set_serial_number(cert, env, atoi(serial_num_str));
+
+    return cert;
+}
 
 AXIS2_EXTERN oxs_x509_cert_t *AXIS2_CALL
 oxs_xml_key_process_X509Certificate(const axis2_env_t *env,
@@ -76,6 +113,8 @@
     /*Check wht is inside the <ds:X509Data>*/
     if(0 == axis2_strcmp(child_name, OXS_NODE_X509_CERTIFICATE)){
         cert = oxs_xml_key_process_X509Certificate(env, child_node);
+    }else if(0 == axis2_strcmp(child_name, OXS_NODE_X509_ISSUER_SERIAL)){
+         cert = oxs_xml_key_process_X509IssuerSerial(env, child_node);
     }else if(0 == axis2_strcmp(child_name,OXS_NODE_X509_SUBJECT_NAME )){
         /*TODO*/ 
     }else{



---------------------------------------------------------------------
To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-cvs-help@ws.apache.org