xmlsecurityengine/xmlseccrypto/inc/xmlsecc_x509wrapper.h
changeset 0 e35f40988205
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/xmlsecurityengine/xmlseccrypto/inc/xmlsecc_x509wrapper.h	Thu Dec 17 09:29:21 2009 +0200
@@ -0,0 +1,194 @@
+/*
+* Copyright (c) 2005-2006 Nokia Corporation and/or its subsidiary(-ies). 
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Methods that allows to process X509 certificates.
+*
+*/
+
+
+/* A wrapper for x509.h in openssl */
+
+#ifndef __XMLSEC_SYMBIANCRYPTO_X509_WRAPPER_H__
+#define __XMLSEC_SYMBIANCRYPTO_X509_WRAPPER_H__    
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */ 
+#include "xmlsecc_config.h"
+
+#ifndef XMLSEC_NO_X509
+
+#include "xmlsecc_evpwrapper.h"
+
+/*
+struct ScX509PubKeySt;
+typedef struct ScX509PubKeySt X509_PUBKEY;
+typedef struct ScX509St
+{
+	char*			der;		// Certificate in ASN.1 DER format 
+	unsigned int	derlen;
+	X509_PUBKEY		*extractedPublicKey;	
+
+} X509;
+*/
+
+typedef struct ScX509CrlSt
+{
+	/* actual signature */
+	int 		dummy;
+} X509_CRL; /* X509_CRL */
+
+
+typedef struct ScX509NameSt
+{
+	char *bytes;
+	unsigned long hash; /* Keep the hash around for lookups */
+} X509_NAME; /* X509_NAME */
+
+/*
+typedef struct ScX509Store
+{
+	int 		dummy;
+} X509_STORE; // X509_STORE 
+*/
+struct ScX509Store;
+typedef struct ScX509Store X509_STORE;
+
+
+#define STACK_OF(type) type
+//#define STACK_OF(type)	struct stack_st_##type
+
+/** 
+ * Free the X509 structure
+ *
+ * @param aCert X509 structure
+ */
+void X509_free(X509* aCert);
+
+/** 
+ * Free the X509_crl structure 
+ *
+ * @param aCrl X509_CRL structure
+ */
+void X509_crl_free(X509_CRL* aCrl);
+
+/** 
+ * Duplicate the X509 structure
+ *
+ * @param aCert X509 structure
+ * @return reference to X509 duplicated structure 
+ */
+X509* X509_dup(X509* aCert);
+
+/** 
+ * Get the public key
+ * 
+ * @param aCert X509 structure
+ * @return EVP_PKEY structure 
+ */
+EVP_PKEY* X509_get_pubkey(X509* aCert);
+
+/** 
+ * Read the certificate from DER format
+ *
+ * @param aBIO BIO structure
+ * @return reference to X509 structure 
+ */
+X509* d2i_X509_bio(BIO *aBio);
+
+/** 
+ * Test the validity period from the certificate
+ * 
+ * @param aCert X509 structure
+ *  @return validation period status
+ */
+int X509_test_validityPeriod(X509* aCert);
+
+/************************************
+ *                                          
+ *   		X509 Store	        
+ *                                                         
+ ************************************/
+
+/**
+ * Add a X509 certificate to the X509_STORE
+ *
+ * @param aCertStore X509_STORE structure
+ * @param aCert X509 structure
+ * @return 0 if correct adding
+ * @return error in the other hand
+ */
+int X509_STORE_add_cert(X509_STORE *aCertStore, X509 *aCert);
+
+/**
+ * Initialize the X509_STORE structure
+ * 
+ * @return reference to X509_STORE structure 
+ */
+X509_STORE *X509_STORE_new(void );
+
+/**
+ * Initialize the SymbianCertChain
+ *
+ * @param aCertStore X509_STORE structure
+ * @param aCert STACK_OF(X509) structure
+ * @return 0 if correct initializing
+ * @return error in the other hand
+ */
+int X509_STORE_certchain_init (X509_STORE *aCertStore, STACK_OF(X509) *aCert);
+
+/**
+ * Initialize the SymbianCertChain with cert from SymbianCertStore
+ *
+ * @param aCertStore X509_STORE structure
+ * @param aCert STACK_OF(X509) structure
+ * @return 0 if correct initializing
+ * @return error in the other hand
+ */
+int X509_STORE_certchain_init_fromCertStore (X509_STORE *aCertStore, STACK_OF(X509) *aCert);
+
+/**
+ * Validate the certificates 
+ *
+ * @param aCertStore X509_STORE structure
+ * @return 0 if correct initializing
+ * @return error in the other hand
+ */
+int X509_STORE_certchain_validate (X509_STORE *aCertStore);
+
+/** 
+ * Get the validation result: 1 - success; 0 - failed 
+ *
+ * @param aCertStore X509_STORE structure
+ * @return 1 if validation succeed
+ * @return 0 if validation failed
+ */
+int X509_STORE_certchain_getValidateResult (X509_STORE *aCertStore);
+
+/** 
+ * Free the X509_STORE structure 
+ *
+ * @param aCertStore X509_STORE structure
+ */
+void X509_STORE_free(X509_STORE *aCertStore);
+
+#endif /* XMLSEC_NO_X509 */
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif /* __SYMBIANCRYPTO_X509_WRAPPER_H__ */
+
+#define __SYMBIANCRYPTO_X509_WRAPPER_H__