SOL9 2.0 Class: CertExportDialog

 SOL9 C++ Class Library  SOL9 Samples  SOL9 Tutorial  SOL9 FAQ  SOL9 ClassTree 

Source code

/*
 * CertExportDialog.h 
 * Copyright (c) 2009 Antillia.com TOSHIYUKI ARAI. ALL RIGHTS RESERVED. 
 */


// SOL9 
// 2009/03/31

#pragma once

#include <sol/crypt/CertDialog.h>


namespace SOL {

class CertExportDialog :public CertDialog {

private:
    CRYPTUI_WIZ_EXPORT_INFO exportInfo;

public:
    /**
      * Constructor
     */
    CertExportDialog(HWND hParent = NULL) 
    :CertDialog(hParent)
    {
        memset(&exportInfo, 0, sizeof(exportInfo));
        exportInfo.dwSize = sizeof(exportInfo);

    }    

public:

    /**
     * @param pCertContext A pointer to CERT_CONEXT for a certficate to export.
     * @param 
     */
    //Export a ceriticate of PCERT_CONTEXT to a file of exportFileName without UI .

    int doExport(__in PCCERT_CONTEXT pCertContext,
        __in_opt const wchar_t* exportFileName,
        __in_opt const wchar_t* wizardTitle = NULL
        )
    {
        int rc = NO_ERROR;

        HWND hwndParent = getParent();                
          exportInfo.pwszExportFileName = exportFileName;
          exportInfo.dwSubjectChoice  = CRYPTUI_WIZ_EXPORT_CERT_CONTEXT; 
  
           exportInfo.pCertContext = pCertContext;
    
        if (!CryptUIWizExport(
             CRYPTUI_WIZ_NO_UI,
             hwndParent,
              wizardTitle,
              &exportInfo,
              NULL)) {

            rc = GetLastError();    
        }
        return rc;
    }


public:
    //Export a ceriticate of PCERT_CONTEXT with UI.
    int doExport(__in PCCERT_CONTEXT pCertContext,
        __in_opt const wchar_t* wizardTitle = NULL
        )
    {
        int rc = NO_ERROR;

        HWND hwndParent = getParent();                
          exportInfo.pwszExportFileName = NULL;//
          exportInfo.dwSubjectChoice  = CRYPTUI_WIZ_EXPORT_CERT_CONTEXT; 
  
           exportInfo.pCertContext = pCertContext;
    
        if (!CryptUIWizExport(
             0,
             hwndParent,
              wizardTitle,
              &exportInfo,
              NULL)) {

            rc = GetLastError();    
        }
        return rc;
    }

};

/*
typedef struct _CRYPTUI_WIZ_EXPORT_INFO {
  DWORD dwSize;
  LPCWSTR pwszExportFileName;
  DWORD dwSubjectChoice;
  union {
    PCCERT_CONTEXT pCertContext;
    PCCTL_CONTEXT pCTLContext;
    PCCRL_CONTEXT pCRLContext;
    HCERTSTORE hCertStore;
  };
  DWORD cStores;
  HCERTSTORE* rghStores;
} CRYPTUI_WIZ_EXPORT_INFO,  *PCRYPTUI_WIZ_EXPORT_INFO;

 dwSubjectChoice:
    CRYPTUI_WIZ_EXPORT_CERT_CONTEXT
    CRYPTUI_WIZ_EXPORT_CTL_CONTEXT
    CRYPTUI_WIZ_EXPORT_CRL_CONTEXT
    CRYPTUI_WIZ_EXPORT_CERT_STORE
    CRYPTUI_WIZ_EXPORT_CERT_STORE_CERTIFICATES_ONLY 
 */

}

Last modified: 19 Dec 2009

Copyright (c) 2009 Antillia.com ALL RIGHTS RESERVED.