pkiutilities/CertSaver/inc/certparser.h
changeset 0 164170e6151a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pkiutilities/CertSaver/inc/certparser.h	Tue Jan 26 15:20:08 2010 +0200
@@ -0,0 +1,175 @@
+/*
+* Copyright (c) 2003-2007 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:   Header of class used to parse and validate a certificate or PKCS#12 PFX.
+*
+*/
+
+
+#ifndef CERTPARSER_H
+#define CERTPARSER_H
+
+//  INCLUDES
+#include <e32base.h>
+#include <mpkcs12.h>
+
+// CONSTANTS
+const TInt KHashLength( 20 );
+// CertSaver panic category
+_LIT( KCertSaverPanic, "Certificate saver" );
+// Panic reasons
+const TInt KPanicNullPointer( 0 );
+const TInt KErrWrongCryptoLib( 1 );
+const TInt KErrExitApp( -333333 );
+
+// FORWARD DECLARATIONS
+class CCertificate;
+class CX509Certificate;
+class CX500DistinguishedName;
+class CPKCS12;
+class RFs;
+class CEikonEnv;
+
+// CLASS DECLARATION
+
+/**
+*  CCertParser - X.509 certificate and PKCS#12 PFX parsing class.
+*/
+class CCertParser :public CBase
+    {
+    public:  // Constructors and destructor
+
+        /**
+        * Two-phased constructor.
+        */
+        static CCertParser* NewL();
+
+        /**
+        * Destructor.
+        */
+        virtual ~CCertParser();
+
+    public: // New functions
+
+        enum TCertType
+            {
+            ETypeX509,
+            ETypeURL,
+            ETypeX509CA,
+            ETypeX509Peer,
+            ETypePKCS12,
+            ETypeCorrupt
+            };
+
+        /**
+        * Sets parsers state according to aBuffer. If certificate or PKCS#12
+        * is corrupted, any of the query functions can't be called.
+        * @param aBuffer, buffer containing the certificate
+        * @return Type of certificate, can also be corrupted.
+        */
+        void SetContentL( RFile& aFile );
+
+        /**
+        * Returns the type of the certificate.
+        * @return TCertType, type of certificate.
+        */
+        TCertType CertType() const;
+
+        /**
+        * Returns the content of the certificate.
+        * Returned data is valid so long as state of this object
+        * is not modified.
+        * @return TPtrC8, the certificate
+        */
+        const TPtrC8 CertificateBuf() const;
+
+        /**
+        * Returns the X.509 certificate object.
+        * Returned data is valid so long as state of this object
+        * is not modified.
+        * @return TPtrC8, the certificate
+        */
+        const CX509Certificate& Certificate() const;
+
+
+        /**
+        * Returns the private key of the PKCS#12 PDU.
+        * Returned data is valid so long as state of this object
+        * is not modified.
+        * @return TPtrC8, the certificate
+        */
+        const CArrayPtr<HBufC8>& Keys() const;
+
+        /**
+        * Returns the CA certificates from the PKCS#12 PDU.
+        * Returned data is valid so long as state of this object
+        * is not modified.
+        * @return TPtrC8, the certificate
+        */
+        const CArrayPtr<CX509Certificate>& CACertificates() const;
+
+        /**
+        * Returns the user certificates from the PKCS#12 PDU.
+        * Returned data is valid so long as state of this object
+        * is not modified.
+        * @return TPtrC8, the certificate
+        */
+        const CArrayPtr<CX509Certificate>& UserCertificates() const;
+
+    public: // Functions from base classes
+
+    protected:  // New functions
+
+    protected:  // Functions from base classes
+
+    private:
+
+        /**
+        * C++ default constructor.
+        */
+        CCertParser();
+
+        /**
+        * By default EPOC constructor is private.
+        */
+        void ConstructL();
+
+        TInt CheckIfX509CertificateL( const TDesC8& aCert );
+
+        void CreatePKCS12L();
+        TBool CheckIfPKCS12L( const TDesC8& aPKCS12, const TDesC& aFileName );
+
+        TInt GetPasswordL( TDes& aPassword, const TDesC& aFileName );
+
+        void ShowErrorNoteL( TInt aResourceID );
+
+    public:     // Data
+
+    protected:  // Data
+
+    private:    // Data
+        TCertType         iCertType;    // The type of the response
+        CX509Certificate* iCert;
+        MPKCS12*          iPKCS12;
+        RLibrary          iLibrary;
+        CEikonEnv*        iEikEnv;
+
+    public:     // Friend classes
+    protected:  // Friend classes
+    private:    // Friend classes
+
+    };
+
+#endif      // CERTPARSER_H
+
+// End of File