(file) Return to CIMTrustCommand.h CVS log (file) (dir) Up to [Pegasus] / pegasus / src / Clients / cimtrust

File: [Pegasus] / pegasus / src / Clients / cimtrust / CIMTrustCommand.h (download)
Revision: 1.1, Tue Aug 8 16:25:08 2006 UTC (17 years, 10 months ago) by sushma.fernandes
Branch: MAIN
CVS Tags: TASK_PEP328_SOLARIS_NEVADA_PORT, TASK-TASK-BUG4011_WinLocalConnect-branch-New-root, TASK-TASK-BUG4011_WinLocalConnect-branch-New-merged_out_to_branch, TASK-TASK-BUG4011_WinLocalConnect-branch-New-merged_out_from_trunk, TASK-TASK-BUG4011_WinLocalConnect-branch-New-merged_in_to_trunk, TASK-TASK-BUG4011_WinLocalConnect-branch-New-merged_in_from_branch, TASK-TASK-BUG4011_WinLocalConnect-branch-New-branch, TASK-PEP328_SOLARIS_NEVADA_PORT_v2-root, TASK-PEP328_SOLARIS_NEVADA_PORT_v2-branch, TASK-PEP328_SOLARIS_NEVADA_PORT-root, TASK-PEP328_SOLARIS_NEVADA_PORT-branch, TASK-PEP328_SOLARIS_IX86_CC_PORT-root, TASK-PEP328_SOLARIS_IX86_CC_PORT-branch-v2, TASK-PEP328_SOLARIS_IX86_CC_PORT-branch, TASK-PEP311_WSMan-root, TASK-PEP311_WSMan-branch, TASK-PEP305_VXWORKS-root, TASK-PEP305_VXWORKS-branch-pre-solaris-port, TASK-PEP305_VXWORKS-branch-post-solaris-port, TASK-PEP305_VXWORKS-branch-beta2, TASK-PEP305_VXWORKS-branch, TASK-PEP305_VXWORKS-2008-10-23, TASK-PEP291_IPV6-root, TASK-PEP291_IPV6-branch, TASK-PEP286_PRIVILEGE_SEPARATION-root, TASK-PEP286_PRIVILEGE_SEPARATION-branch, TASK-PEP274_dacim-root, TASK-PEP274_dacim-merged_out_to_branch, TASK-PEP274_dacim-merged_out_from_trunk, TASK-PEP274_dacim-merged_in_to_trunk, TASK-PEP274_dacim-merged_in_from_branch, TASK-PEP274_dacim-branch, TASK-PEP268_SSLClientCertificatePropagation-root, TASK-PEP268_SSLClientCertificatePropagation-merged_out_to_branch, TASK-PEP268_SSLClientCertificatePropagation-merged_out_from_trunk, TASK-PEP268_SSLClientCertificatePropagation-merged_in_to_trunk, TASK-PEP268_SSLClientCertificatePropagation-merged_in_from_branch, TASK-PEP268_SSLClientCertificatePropagation-branch, TASK-PEP267_SLPReregistrationSupport-root, TASK-PEP267_SLPReregistrationSupport-merging_out_to_branch, TASK-PEP267_SLPReregistrationSupport-merging_out_from_trunk, TASK-PEP267_SLPReregistrationSupport-merged_out_to_branch, TASK-PEP267_SLPReregistrationSupport-merged_out_from_trunk, TASK-PEP267_SLPReregistrationSupport-merged_in_to_trunk, TASK-PEP267_SLPReregistrationSupport-merged_in_from_branch, TASK-PEP267_SLPReregistrationSupport-branch, TASK-Bugs5690_3913_RemoteCMPI-root, TASK-Bugs5690_3913_RemoteCMPI-merged_out_to_branch, TASK-Bugs5690_3913_RemoteCMPI-merged_out_from_trunk, TASK-Bugs5690_3913_RemoteCMPI-merged_in_to_trunk, TASK-Bugs5690_3913_RemoteCMPI-merged_in_from_branch, TASK-Bugs5690_3913_RemoteCMPI-branch, TASK-Bug2102_RCMPIWindows-root, TASK-Bug2102_RCMPIWindows-merged_out_to_branch, TASK-Bug2102_RCMPIWindows-merged_out_from_trunk, TASK-Bug2102_RCMPIWindows-merged_in_to_trunk, TASK-Bug2102_RCMPIWindows-merged_in_from_branch, TASK-Bug2102_RCMPIWindows-branch, TASK-Bug2102Final-root, TASK-Bug2102Final-merged_out_to_branch, TASK-Bug2102Final-merged_out_from_trunk, TASK-Bug2102Final-merged_in_to_trunk, TASK-Bug2102Final-merged_in_from_branch, TASK-Bug2102Final-branch, TASK-Bug2021_RemoteCMPIonWindows-root, TASK-Bug2021_RemoteCMPIonWindows-merged_out_to_branch, TASK-Bug2021_RemoteCMPIonWindows-merged_out_from_trunk, TASK-Bug2021_RemoteCMPIonWindows-merged_in_to_trunk, TASK-Bug2021_RemoteCMPIonWindows-merged_in_from_branch, TASK-Bug2021_RemoteCMPIonWindows-branch, TASK-Bug2021_RCMPIonWindows-root, TASK-Bug2021_RCMPIonWindows-merged_out_to_branch, TASK-Bug2021_RCMPIonWindows-merged_out_from_trunk, TASK-Bug2021_RCMPIonWindows-merged_in_to_trunk, TASK-Bug2021_RCMPIonWindows-merged_in_from_branch, TASK-Bug2021_RCMPIonWindows-branch, TASK-BUG7240-root, TASK-BUG7240-branch, TASK-BUG7146_SqlRepositoryPrototype-root, TASK-BUG7146_SqlRepositoryPrototype-merged_out_to_branch, TASK-BUG7146_SqlRepositoryPrototype-merged_out_from_trunk, TASK-BUG7146_SqlRepositoryPrototype-merged_in_to_trunk, TASK-BUG7146_SqlRepositoryPrototype-merged_in_from_branch, TASK-BUG7146_SqlRepositoryPrototype-branch, TASK-BUG4011_WinLocalConnect-branch-New, RELEASE_2_8_2-RC1, RELEASE_2_8_2, RELEASE_2_8_1-RC1, RELEASE_2_8_1, RELEASE_2_8_0_BETA, RELEASE_2_8_0-RC2, RELEASE_2_8_0-RC1, RELEASE_2_8_0-FC, RELEASE_2_8_0, RELEASE_2_8-root, RELEASE_2_8-branch, RELEASE_2_7_3-RC1, RELEASE_2_7_3, RELEASE_2_7_2-RC1, RELEASE_2_7_2, RELEASE_2_7_1-RC1, RELEASE_2_7_1, RELEASE_2_7_0-RC1, RELEASE_2_7_0-BETA, RELEASE_2_7_0, RELEASE_2_7-root, RELEASE_2_7-branch, RELEASE_2_6_3-RC2, RELEASE_2_6_3-RC1, RELEASE_2_6_3, RELEASE_2_6_2-RC1, RELEASE_2_6_2, RELEASE_2_6_1-RC1, RELEASE_2_6_1, RELEASE_2_6_0-RC1, RELEASE_2_6_0-FC, RELEASE_2_6_0, RELEASE_2_6-root, RELEASE_2_6-branch-clean, RELEASE_2_6-branch, PEP286_PRIVILEGE_SEPARATION_ROOT, PEP286_PRIVILEGE_SEPARATION_CODE_FREEZE, PEP286_PRIVILEGE_SEPARATION_BRANCH, PEP286_PRIVILEGE_SEPARATION_1, Makefile
BUG#: 5327
TITLE: PEP 259 SSL Certificate Management Command Interfaces - phase 1

DESCRIPTION: Updated the Certificate Provider, HTTPAuthenticator and PG_SSLCertificate MOF to incorporate changes as per PEP 259. Added the new cimtrust CLI and unit tests.

//%2006////////////////////////////////////////////////////////////////////////
//
// Copyright (c) 2000, 2001, 2002 BMC Software; Hewlett-Packard Development
// Company, L.P.; IBM Corp.; The Open Group; Tivoli Systems.
// Copyright (c) 2003 BMC Software; Hewlett-Packard Development Company, L.P.;
// IBM Corp.; EMC Corporation, The Open Group.
// Copyright (c) 2004 BMC Software; Hewlett-Packard Development Company, L.P.;
// IBM Corp.; EMC Corporation; VERITAS Software Corporation; The Open Group.
// Copyright (c) 2005 Hewlett-Packard Development Company, L.P.; IBM Corp.;
// EMC Corporation; VERITAS Software Corporation; The Open Group.
// Copyright (c) 2006 Hewlett-Packard Development Company, L.P.; IBM Corp.;
// EMC Corporation; Symantec Corporation; The Open Group.
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to
// deal in the Software without restriction, including without limitation the
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
// sell copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
// 
// THE ABOVE COPYRIGHT NOTICE AND THIS PERMISSION NOTICE SHALL BE INCLUDED IN
// ALL COPIES OR SUBSTANTIAL PORTIONS OF THE SOFTWARE. THE SOFTWARE IS PROVIDED
// "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
// LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
// PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
//
//==============================================================================
//
// Author: Nag Boranna, Hewlett-Packard Company (nagaraja.boranna@hp.com)
//
// Modified By: David Dillard, VERITAS Software Corp.
//                  (david.dillard@veritas.com)
//              Vijay Eli, vijayeli@in.ibm.com, fix for #2572
//              Sushma Fernandes,  Hewlett-Packard Company 
//                  sushma@hp.com, PEP 259 
//
//%/////////////////////////////////////////////////////////////////////////////

#ifndef Pegasus_CIMTrustCommand_h
#define Pegasus_CIMTrustCommand_h

#include <Pegasus/Common/String.h>
#include <Pegasus/Client/CIMClient.h>
#include <Clients/cliutils/Command.h>
#include <Clients/cliutils/CommandException.h>

PEGASUS_NAMESPACE_BEGIN

/**

    The CIMTrustCommand command provides a command line interface to manage X509
    certificates in a PEM format truststore. The command supports add, remove 
    and list operations on the trust store. The CIMTrustCommand command
    requires the CIM Server to be running on the local host.

    @author  Hewlett-Packard Company

 */
class CIMTrustCommand : public Command
{
public:

    enum { DEFAULT_TIMEOUT_MILLISECONDS = 200000 };

    /**
        Constructs a CIMTrustCommand and initializes instance variables.
     */
    CIMTrustCommand ();

    /**
        Parses the command line, validates the options, and sets instance
        variables based on the option arguments.

        @param  argc   the number of command line arguments
        @param  argv   the string vector of command line arguments

        @exception  CommandFormatException  if an error is encountered in
                                            parsing the command line
     */
    void setCommand (Uint32 argc, char* argv []);

    /**
        Executes the command and writes the results to the PrintWriters.

        @param  outPrintWriter    the ostream to which output should be
                                  written
        @param  errPrintWriter    the ostream to which error output should be
                                  written

        @return  0                if the command is successful
                 1                if an error occurs in executing the command
     */
    Uint32 execute (
        PEGASUS_STD(ostream)& outPrintWriter,
        PEGASUS_STD(ostream)& errPrintWriter);

    /**
        The command name.
     */
    static const char   COMMAND_NAME [];

private:

    /**
        Connect to cimserver.

        @param  client          the handle to CIMClient object

        @param  outPrintWriter  the ostream to which output should be
                                written

        @exception  Exception   if an error is encountered in creating
                                the connection
     */
    void _connectToServer(
        CIMClient& client,
        PEGASUS_STD(ostream)& outPrintWriter );

    /**
        Convert CIMDateTime to user-readable string of the format
        month day-of-month, year  hour:minute:second (value-hrs-GMT-offset)

        @param  cimDateTimeStr  CIM formated DateTime String

        @return  String user-readable date time string.
     */
    String _formatCIMDateTime(const String& cimDateTimeStr);


    /**
        Read certificate content.

        @param  certFilePath    the certificate file path

        @return  Buffer containing the certificate content
     */
    Buffer _readCertificateContent(const String &certFilePath);

    /**
       Add a new certificate to the trust store

       @param  client           the handle to CIMClient object

       @param  outPrintWriter   the ostream to which output should be written
     */
    void _addCertificate (
        CIMClient&               client,
        PEGASUS_STD(ostream)&    outPrintWriter);

    /**
       Remove an existing certificate from the trust store

       @param  client           the handle to CIMClient object

       @param  outPrintWriter   the ostream to which output should be written
     */
    void _removeCertificate (
        CIMClient&               client,
        PEGASUS_STD(ostream)&    outPrintWriter);

    /**
       List certificates in the trust store

       @param  client           the handle to CIMClient object

       @param  outPrintWriter   the ostream to which output should be written

     */
    void _listCertificates (
        CIMClient&               client,
        PEGASUS_STD(ostream)&    outPrintWriter);

    /**
        The certificate file to be added to the trust store.
     */
    String _certFile;

    /**
        Indicates that the certificate file is set.
     */
    Boolean _certFileSet;

    /**
        The user name to be mapped with the certificate being added
        to the trust store.
     */
    String _certUser;

    /**
        Indicates that the mapping certificate user is set.
     */
    Boolean _certUserSet;

    /**
        The issuer name of the certificate to be removed or listed
        from the trust store.
     */
    String _issuer;

    /**
        Indicates that the issuer name is set.
     */
    Boolean _issuerSet;

    /**
        The type of the certificate
     */
    String _type;

    /**
        Indicates that the type is set.
     */
    Boolean _typeSet;

    /**
        The serial number of the certificate to be removed or listed
        from the trust store for a specified issuer.
     */
    String _serialNumber;

    /**
        Indicates that the serial number is set.
     */
    Boolean _serialNumberSet;

    /**
        The subject of the certificate to be removed 
        from the trust store for a specified issuer.
     */
    String _subject;

    /**
        Indicates that the subject name is set.
     */
    Boolean _subjectSet;

    /**
        The timeout value to be used in milliseconds.
        The default timeout value is DEFAULT_TIMEOUT_MILLISECONDS.
     */
    Uint32 _timeout;

    /**
        The type of operation specified on the command line.
     */
    Uint32 _operationType;

    /**
        The usage string.
     */
    String _usage;

    /**
        The option character used to specify the add option.
     */
    static const char   _OPTION_ADD;

    /**
        The option character used to specify the remove option.
     */
    static const char   _OPTION_REMOVE;

    /**
        The option character used to specify the list option.

     */
    static const char   _OPTION_LIST;

    /**
        The option character used to display help info.
     */
    static const char   _OPTION_HELP;

    /**
        The option character used to display version info.
     */
    static const char   _OPTION_VERSION;

    /**
        The option character used to specify the certificate file.
     */
    static const char   _OPTION_CERTFILE;

    /**
        The option character used to specify the certificate user name.
     */
    static const char   _OPTION_CERTUSER;

    /**
        The option character used to specify the issuer name.
     */
    static const char   _OPTION_ISSUER;

    /**
        The option character used to specify the serial number.
     */
    static const char   _OPTION_SERIALNUMBER;

    /**
        The option character used to specify the certificate type.
     */
    static const char _OPTION_TYPE;

    /**
        Specifies the certificate types.
     */
    enum _CERTIFICATE_TYPES 
    { 
        _CERTIFICATE_TYPE_UNKNOWN = 0,
        _CERTIFICATE_TYPE_AUTHORITY = 2,
        _CERTIFICATE_TYPE_AUTHORITY_END_ENTITY = 3,
        _CERTIFICATE_TYPE_SELF_SIGNED_IDENTITY = 4
    };

    /**
        The character used to specify the authority type.
     */
    static const String _ARG_TYPE_AUTHORITY;

    /**
        The character used to specify the authority 
        issued end-entity type.
     */
    static const String _ARG_TYPE_AUTHORITY_END_ENTITY;

    /**
        The character used to specify the self-signed 
        identity type.
     */
    static const String _ARG_TYPE_SELF_SIGNED_IDENTITY;

    /**
        The option character used to specify the subject.
     */
    static const char   _OPTION_SUBJECT;

    /**
        Label for the usage string for this command.
     */
    static const char   _USAGE [];

    /**
        This constant signifies that an operation option has not been recorded
     */
    static const Uint32 _OPERATION_TYPE_UNINITIALIZED;

    /**
        The constant representing a add operation
     */
    static const Uint32 _OPERATION_TYPE_ADD;

    /**
        The constant representing a remove operation
     */
    static const Uint32 _OPERATION_TYPE_REMOVE;

    /**
        The constant representing a list operation
     */
    static const Uint32 _OPERATION_TYPE_LIST;

    /**
        The constant representing a help operation
     */
    static const Uint32 _OPERATION_TYPE_HELP;

    /**
        The constant representing a version display operation
     */
    static const Uint32 _OPERATION_TYPE_VERSION;

};

PEGASUS_NAMESPACE_END

#endif /* Pegasus_CIMTrustCommand_h */

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2