--- /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__