secureswitools/makekeys/src/PARSECMD.H
author William Roberts <williamr@symbian.org>
Thu, 22 Jul 2010 16:35:01 +0100
branchGCC_SURGE
changeset 56 afe7195bb6c3
parent 0 ba25891c3a9e
permissions -rw-r--r--
Catchup to latest Symbian^4

/*
* Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies).
* All rights reserved.
* This component and the accompanying materials are made available
* under the terms of the License "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: 
* Handles parsing of makekeys command line args
*
*/


/**
 @file 
 @internalComponent 
*/

#ifndef __PARSE_CMD_H_
#define __PARSE_CMD_H_

#include <stdio.h>
#include <iostream>
#include "utils.h"
#include "KeyGenerator.h"
#include "CertificateGenerator.h"

//undefined by default, the ability to generate keys on its own is useful for testing
//and maybe in the real-world too
#define KEYS
//some work that's already been done, thats planned as optional so may or may not be needed
#define OPTIONAL


// ===========================================================================
// CONSTANTS
// ===========================================================================


#define MAXLEN 256
#define DEFAULTKEYLEN 1024
#define DEFAULTCERTEXPIRYDAYS 365


//These constants are temporarily file names. They will be changed
//with original ones at the end of the program 
#define KEYFILENAME "mytempkey.key"
#define CERTFILENAME "mytempcert.cer"
#define REQUESTFILENAME "mytemprequest.p10"

enum TCommandLineException
	{ErrInsufficientArgs,
	ErrTooManyArgs,
	ErrBadReqCommand,
	ErrBadCommandFlag,
	ErrUnknownCommandFlag,
	ErrCantViewCertificate,
	ErrMalformedCommand,
	ErrUnsupportedCP,
	ErrInvalidPassword
	}; 

enum Mode
	{EKeys = 1,
	ECert,
	EReq,
	EChain,
	EView,
	EPassword,
	EDname,
	ERSA,
	EDSA,
	EUnknown
	};

enum TOptions
	{EOptVerbose  = 0x01,
	};
		


#define MIN_VIEW_ARGS 3
#define MIN_CERT_ARGS 6
#define MIN_REQ_ARGS 7


// ===========================================================================
// CLASS DEFINITION
// ===========================================================================

class CParseCmd
// Responsable for processing and maintaining the command line options
	{
	public:
		TKeyType GetKeyType();
		bool GetPasswordEnabled();
		
		_TCHAR* GetPassword();
		_TCHAR* GetPrivateName();
		_TCHAR* GetPublicName();
		_TCHAR* GetRequestName();
		_TCHAR* GetDNameString();
		bool GetVerbose();

		int GetCMDKeyLen();
		int GetCMDCertExpiryInDays();
		CParseCmd();
		
		ParseCommandLine(const int argc, const _TCHAR *argv[], Mode* aApp);
		
		BOOL  ShowSyntax()			const { return m_fShowSyntax; }
		DWORD Flags()				const { return m_dwOptions;   }

	private:
		bool m_bVerbose;
		void SetVerbose(const bool bVerbose);
		
		DWORD m_dwKeyLen;
		DWORD m_dwCertExpiryInDays;
		
		DWORD m_dwOptions;
		BOOL  m_fShowSyntax;
		TKeyType m_CMDKey;
		bool m_bPassword;

		_TCHAR m_password[MAXLEN];
		_TCHAR m_dname[512];
		_TCHAR m_privateKeyFile[MAX_PATH];
		_TCHAR m_publicKeyFile[MAX_PATH];
		_TCHAR m_requestFile[MAX_PATH];
		_TCHAR m_KeyLenStr[MAXLEN];
		_TCHAR m_CertExpiryInDaysStr[MAXLEN];

	};

#endif // __PARSE_CMD_H_