xmlsecurityengine/xmlseccrypto/inc/xmlsecc_evpwrapper.h
changeset 0 e35f40988205
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/xmlsecurityengine/xmlseccrypto/inc/xmlsecc_evpwrapper.h	Thu Dec 17 09:29:21 2009 +0200
@@ -0,0 +1,193 @@
+/*
+* 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 sign and verify data.
+*
+*/
+
+
+/* A wrapper for evp.h in openssl */
+
+#ifndef __SYMBIANCRYPTO_EVP_WRAPPER_H__
+#define __SYMBIANCRYPTO_EVP_WRAPPER_H__    
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */ 
+#include "xmlsecc_config.h"
+#include "xmlsecc_bio.h"
+
+
+/************************************
+ *                                  
+ *            RSA Sign functions    
+ *                                  
+ ************************************/
+
+/* data type compatibility for OpenSSL*/
+
+#define	HASKEY	1
+#define NOKEY	0
+
+/** 
+ * Key algorithms. 
+ * EVP_PKEY_UNKNOWN  unknown algorithm
+ * EVP_PKEY_RSA RSA algorithm
+ * EVP_PKEY_DSA DSA algorithm
+ */ 
+enum sc_key_algos
+{
+	EVP_PKEY_UNKNOWN=0,
+	EVP_PKEY_RSA,
+	EVP_PKEY_DSA
+};
+
+struct ScKeyStore;
+typedef struct ScKeyStore		ScKeyStore, *ScKeyStorePtr;
+typedef unsigned char*			RSA;
+
+typedef struct ScPkey
+{
+	int				type;
+	int				load; 				// HASKEY - 1, NOKEY - 0
+	unsigned int	bitsize;			// Bit size of the key
+	int				duplicate;			// Indicate whether this is a duplicate copy
+	char 			*name;
+	ScKeyStorePtr	keyStore;
+} EVP_PKEY;
+
+
+/**
+ * Create a new key store structure
+ *
+ * @param keytype type of the key
+ * @param keyname name of the key
+ * @return EVP_PKEY structure
+ */
+EVP_PKEY *sc_pkey_new(int keytype, char *keyname);
+
+/** 
+ * Symbian key store Initialization
+ *
+ * @return 0 if correct initialization
+ * @return error code in the other hand  
+ */
+int sc_pkey_init();
+
+/** 
+ * Load an RSA key
+ * 
+ * @param pkey EVP_PKEY structure
+ * @return 0 if key is loaded
+ * @return -1 if key is not loaded
+ * @return error code in the other hand
+ */
+int sc_pkey_load(EVP_PKEY *pkey);
+
+/** 
+ * Generate an RSA key
+ * 
+ * @param pkey EVP_KEY structure
+ * @param sizeBits size of the key
+ * @return 0 if key is loaded
+ * @return -1 if key is not loaded
+ * @return error code in the other hand
+ */
+int sc_pkey_generate(EVP_PKEY *pkey, unsigned int sizeBits);
+
+/** 
+ * Free the EVP_PKEY structure 
+ */
+void sc_pkey_free(EVP_PKEY *pkey);
+
+/** 
+ * Duplicate an EVP key
+ * 
+ * @param pkey EVP_KEY structure
+ * @return EVP_PKEY duplicated structure
+ */
+EVP_PKEY *sc_pkey_duplicate(EVP_PKEY *aPKey);
+
+/** 
+ * Symbian key store shutdown process 
+ */
+void sc_pkey_shutdown();
+
+/** 
+ * Get the pkey size
+ *
+ * @param pkey EVP_KEY structure
+ * @return size of the key
+ */
+unsigned int sc_pkey_size(EVP_PKEY *aPKey);
+
+/** 
+ * Read the private key from ASN.1 DER encoded PKCS#8 format 
+ *
+ * @param aBio BIO structure
+ * @param aPwdCallback callback
+ * @param aPwdCallbackCtx callback context
+ * @return EVP_PKEY structure
+ */
+EVP_PKEY* d2i_PKCS8PrivateKey_bio(BIO *aBio, void *aPwdCallback, void *aPwdCallbackCtx);
+
+/** 
+ * Read the private key from Unified Key Store
+ *
+ * @param keyname name of the key
+ * @return EVP_PKEY structure
+ */
+EVP_PKEY* d2i_PKCS8PrivateKey(char *keyname);
+
+/** 
+ * Read the public key from ASN.1 DER encoded format
+ *
+ * @param aBio BIO structure
+ * @return EVP_PKEY structure
+ */
+EVP_PKEY* d2i_PUBKEY_bio(BIO *aBio);
+
+#ifndef XMLSEC_NO_X509
+
+/************************************
+ *                                  
+ *       X.509 related functions    
+ *                                  
+ ************************************/
+
+typedef struct ScX509St
+{
+	char*			der;		// Certificate in ASN.1 DER format 
+	unsigned int	derlen;	
+
+} X509;
+
+/** 
+ * Set the public key info 
+ *
+ * @param pkey EVP_KEY structure
+ * @param aCert X509 structure
+ * @return 0 if operation correct
+ * @return error code if operation fail
+ */
+int sc_pkey_setPublic(EVP_PKEY* aPKey, X509 *aCert);
+
+#endif // XMLSEC_NO_X509
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif /* __SYMBIANCRYPTO_EVP_WRAPPER_H__ */
+
+#define __SYMBIANCRYPTO_EVP_WRAPPER_H__