/*
 * cryptui dll resources
 *
 * Copyright 2008 Juan Lang
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
 */

#include "cryptuires.h"

#pragma makedep po

LANGUAGE LANG_ENGLISH, SUBLANG_DEFAULT

STRINGTABLE
{
    IDS_CERTIFICATE "Certificate"
    IDS_CERTIFICATEINFORMATION "Certificate Information"
    IDS_CERT_INFO_BAD_SIG "This certificate has an invalid signature. The certificate may have been altered or corrupted."
    IDS_CERT_INFO_UNTRUSTED_CA "This root certificate is not trusted. To trust it, add it to your system's trusted root certificate store."
    IDS_CERT_INFO_UNTRUSTED_ROOT "This certificate could not be validated to a trusted root certificate."
    IDS_CERT_INFO_PARTIAL_CHAIN "This certificate's issuer could not be found."
    IDS_CERT_INFO_BAD_PURPOSES "All the intended purposes of this certificate could not be verified."
    IDS_CERT_INFO_PURPOSES "This certificate is intended for the following purposes:"
    IDS_SUBJECT_HEADING "Issued to: "
    IDS_ISSUER_HEADING "Issued by: "
    IDS_VALID_FROM "Valid from "
    IDS_VALID_TO " to "
    IDS_CERTIFICATE_BAD_SIGNATURE "This certificate has an invalid signature."
    IDS_CERTIFICATE_BAD_TIME "This certificate has expired or is not yet valid."
    IDS_CERTIFICATE_BAD_TIMENEST "This certificate's validity period exceeds that of its issuer."
    IDS_CERTIFICATE_REVOKED "This certificate was revoked by its issuer."
    IDS_CERTIFICATE_VALID "This certificate is OK."
    IDS_FIELD "Field"
    IDS_VALUE "Value"
    IDS_FIELDS_ALL "<All>"
    IDS_FIELDS_V1 "Version 1 Fields Only"
    IDS_FIELDS_EXTENSIONS "Extensions Only"
    IDS_FIELDS_CRITICAL_EXTENSIONS "Critical Extensions Only"
    IDS_FIELDS_PROPERTIES "Properties Only"
    IDS_FIELD_VERSION "Version"
    IDS_FIELD_SERIAL_NUMBER "Serial number"
    IDS_FIELD_ISSUER "Issuer"
    IDS_FIELD_VALID_FROM "Valid from"
    IDS_FIELD_VALID_TO "Valid to"
    IDS_FIELD_SUBJECT "Subject"
    IDS_FIELD_PUBLIC_KEY "Public key"
    IDS_FIELD_PUBLIC_KEY_FORMAT "%1 (%2!d! bits)"
    IDS_PROP_HASH "SHA1 hash"
    IDS_PROP_ENHKEY_USAGE "Enhanced key usage (property)"
    IDS_PROP_FRIENDLY_NAME "Friendly name"
    IDS_PROP_DESCRIPTION "Description"
    IDS_CERTIFICATE_PROPERTIES "Certificate Properties"
    IDS_CERTIFICATE_PURPOSE_ERROR "Please enter an OID in the form 1.2.3.4"
    IDS_CERTIFICATE_PURPOSE_EXISTS "The OID you entered already exists."
    IDS_SELECT_STORE_TITLE "Select Certificate Store"
    IDS_SELECT_STORE "Please select a certificate store."
    IDS_IMPORT_WIZARD "Certificate Import Wizard"
    IDS_IMPORT_TYPE_MISMATCH "The file contains objects that do not match the given criteria. Please select another file."
    IDS_IMPORT_FILE_TITLE "File to Import"
    IDS_IMPORT_FILE_SUBTITLE "Specify the file you want to import."
    IDS_IMPORT_STORE_TITLE "Certificate Store"
    IDS_IMPORT_STORE_SUBTITLE "Certificate stores are collections of certificates, certificate revocation lists, and certificate trust lists."
    IDS_IMPORT_FILTER_CERT "X.509 Certificate (*.cer; *.crt)"
    IDS_IMPORT_FILTER_PFX "Personal Information Exchange (*.pfx; *.p12)"
    IDS_IMPORT_FILTER_CRL "Certificate Revocation List (*.crl)"
    IDS_IMPORT_FILTER_CTL "Certificate Trust List (*.stl)"
    IDS_IMPORT_FILTER_SERIALIZED_STORE "Microsoft Serialized Certificate Store (*.sst)"
    IDS_IMPORT_FILTER_CMS "CMS/PKCS #7 Messages (*.spc; *.p7b)"
    IDS_IMPORT_FILTER_ALL "All files (*.*)"
    IDS_IMPORT_EMPTY_FILE "Please select a file."
    IDS_IMPORT_BAD_FORMAT "The file format is not recognized. Please select another file."
    IDS_IMPORT_OPEN_FAILED "Could not open "
    IDS_IMPORT_DEST_DETERMINED "Determined by the program"
    IDS_IMPORT_SELECT_STORE "Please select a store"
    IDS_IMPORT_STORE_SELECTION "Certificate Store Selected"
    IDS_IMPORT_DEST_AUTOMATIC "Automatically determined by the program"
    IDS_IMPORT_FILE "File"
    IDS_IMPORT_CONTENT "Content"
    IDS_IMPORT_CONTENT_CERT "Certificate"
    IDS_IMPORT_CONTENT_CRL "Certificate Revocation List"
    IDS_IMPORT_CONTENT_CTL "Certificate Trust List"
    IDS_IMPORT_CONTENT_CMS "CMS/PKCS #7 Message"
    IDS_IMPORT_CONTENT_PFX "Personal Information Exchange"
    IDS_IMPORT_CONTENT_STORE "Certificate Store"
    IDS_IMPORT_SUCCEEDED "The import was successful."
    IDS_IMPORT_FAILED "The import failed."
    IDS_WIZARD_TITLE_FONT "Arial"
    IDS_PURPOSE_ALL "<All>"
    IDS_PURPOSE_ADVANCED "<Advanced Purposes>"
    IDS_SUBJECT_COLUMN "Issued To"
    IDS_ISSUER_COLUMN "Issued By"
    IDS_EXPIRATION_COLUMN "Expiration Date"
    IDS_FRIENDLY_NAME_COLUMN "Friendly Name"
    IDS_ALLOWED_PURPOSE_ALL "<All>"
    IDS_ALLOWED_PURPOSE_NONE "<None>"
    IDS_WARN_REMOVE_MY "You will no longer be able to decrypt messages with this certificate, or sign messages with it.\nAre you sure you want to remove this certificate?"
    IDS_WARN_REMOVE_PLURAL_MY "You will no longer be able to decrypt messages with these certificates, or sign messages with them.\nAre you sure you want to remove these certificates?"
    IDS_WARN_REMOVE_ADDRESSBOOK "You will no longer be able to encrypt messages with this certificate, or verify messages signed with it.\nAre you sure you want to remove this certificate?"
    IDS_WARN_REMOVE_PLURAL_ADDRESSBOOK "You will no longer be able to encrypt messages with these certificates, or verify messages signed with it.\nAre you sure you want to remove these certificates?"
    IDS_WARN_REMOVE_CA "Certificates issued by this certification authority will no longer be trusted.\nAre you sure you want to remove this certificate?"
    IDS_WARN_REMOVE_PLURAL_CA "Certificates issued by these certification authorities will no longer be trusted.\nAre you sure you want to remove these certificates?"
    IDS_WARN_REMOVE_ROOT "Certificates issued by this root certification authority, or any certification authorities it issued, will no longer be trusted.\nAre you sure you want to remove this trusted root certificate?"
    IDS_WARN_REMOVE_PLURAL_ROOT "Certificates issued by these root certification authorities, or any certification authorities they issued, will no longer be trusted.\nAre you sure you want to remove these trusted root certificates?"
    IDS_WARN_REMOVE_TRUSTEDPUBLISHER "Software signed by this publisher will no longer be trusted.\nAre you sure you want to remove this certificate?"
    IDS_WARN_REMOVE_PLURAL_TRUSTEDPUBLISHER "Software signed by these publishers will no longer be trusted.\nAre you sure you want to remove these certificates?"
    IDS_WARN_REMOVE_DEFAULT "Are you sure you want to remove this certificate?"
    IDS_WARN_REMOVE_PLURAL_DEFAULT "Are you sure you want to remove these certificates?"
    IDS_CERT_MGR "Certificates"
    IDS_FRIENDLY_NAME_NONE "<None>"
    IDS_PURPOSE_SERVER_AUTH "Ensures the identity of a remote computer"
    IDS_PURPOSE_CLIENT_AUTH "Proves your identity to a remote computer"
    IDS_PURPOSE_CODE_SIGNING "Ensures software came from software publisher\nProtects software from alteration after publication"
    IDS_PURPOSE_EMAIL_PROTECTION "Protects e-mail messages"
    IDS_PURPOSE_IPSEC "Allows secure communication over the Internet"
    IDS_PURPOSE_TIMESTAMP_SIGNING "Allows data to be signed with the current time"
    IDS_PURPOSE_CTL_USAGE_SIGNING "Allows you to digitally sign a certificate trust list"
    IDS_PURPOSE_EFS "Allows data on disk to be encrypted"
    IDS_PURPOSE_EFS_RECOVERY "File Recovery"
    IDS_PURPOSE_WHQL "Windows Hardware Driver Verification"
    IDS_PURPOSE_NT5 "Windows System Component Verification"
    IDS_PURPOSE_OEM_WHQL "OEM Windows System Component Verification"
    IDS_PURPOSE_EMBEDDED_NT "Embedded Windows System Component Verification"
    IDS_PURPOSE_ROOT_LIST_SIGNER "Root List Signer"
    IDS_PURPOSE_QUALIFIED_SUBORDINATION "Qualified Subordination"
    IDS_PURPOSE_KEY_RECOVERY "Key Recovery"
    IDS_PURPOSE_DOCUMENT_SIGNING "Document Signing"
    IDS_PURPOSE_LIFETIME_SIGNING "Lifetime Signing"
    IDS_PURPOSE_DRM "Digital Rights"
    IDS_PURPOSE_LICENSES "Key Pack Licenses"
    IDS_PURPOSE_LICENSE_SERVER "License Server Verification"
    IDS_PURPOSE_ENROLLMENT_AGENT "Certificate Request Agent"
    IDS_PURPOSE_SMARTCARD_LOGON "Smart Card Logon"
    IDS_PURPOSE_CA_EXCHANGE "Private Key Archival"
    IDS_PURPOSE_KEY_RECOVERY_AGENT "Key Recovery Agent"
    IDS_PURPOSE_DS_EMAIL_REPLICATION "Directory Service Email Replication"
    IDS_EXPORT_WIZARD "Certificate Export Wizard"
    IDS_EXPORT_FORMAT_TITLE "Export Format"
    IDS_EXPORT_FORMAT_SUBTITLE "Choose the format in which the content will be saved."
    IDS_EXPORT_FILE_TITLE "Export Filename"
    IDS_EXPORT_FILE_SUBTITLE "Specify the name of the file in which the content will be saved."
    IDS_EXPORT_FILE_EXISTS "The specified file already exists. Do you want to replace it?"
    IDS_EXPORT_FILTER_CERT "DER-Encoded Binary X.509 (*.cer)"
    IDS_EXPORT_FILTER_BASE64_CERT "Base64-Encoded X.509 (*.cer)"
    IDS_EXPORT_FILTER_CRL "Certificate Revocation List (*.crl)"
    IDS_EXPORT_FILTER_CTL "Certificate Trust List (*.stl)"
    IDS_EXPORT_FILTER_CMS "CMS/PKCS #7 Messages (*.p7b)"
    IDS_EXPORT_FILTER_PFX "Personal Information Exchange (*.pfx)"
    IDS_EXPORT_FILTER_SERIALIZED_CERT_STORE "Microsoft Serialized Certificate Store (*.sst)"
    IDS_EXPORT_FORMAT "File Format"
    IDS_EXPORT_INCLUDE_CHAIN "Include all certificates in certificate path"
    IDS_EXPORT_KEYS "Export keys"
    IDS_YES "Yes"
    IDS_NO "No"
    IDS_EXPORT_SUCCEEDED "The export was successful."
    IDS_EXPORT_FAILED "The export failed."
    IDS_EXPORT_PRIVATE_KEY_TITLE "Export Private Key"
    IDS_EXPORT_PRIVATE_KEY_SUBTITLE "The certificate contains a private key which may be exported along with the certificate."
    IDS_EXPORT_PASSWORD_TITLE "Enter Password"
    IDS_EXPORT_PASSWORD_SUBTITLE "You may password-protect a private key."
    IDS_EXPORT_PASSWORD_MISMATCH "The passwords do not match."
    IDS_EXPORT_PRIVATE_KEY_UNAVAILABLE "Note: The private key for this certificate could not be opened."
    IDS_EXPORT_PRIVATE_KEY_NON_EXPORTABLE "Note: The private key for this certificate is not exportable."
}

IDD_GENERAL DIALOG 0, 0, 255, 236
CAPTION "General"
STYLE WS_VISIBLE
FONT 8, "MS Shell Dlg"
BEGIN
  CONTROL "", -1, "Static", WS_BORDER|SS_WHITERECT, 6,10,241,200
  CONTROL "", IDC_CERTIFICATE_ICON,"RichEdit20W", ES_READONLY|WS_DISABLED,8,11,26,26
  CONTROL "", IDC_CERTIFICATE_INFO,"RichEdit20W", ES_READONLY|WS_DISABLED,34,11,212,26
  CONTROL "", -1, "Static", SS_BLACKFRAME, 16,37,222,1
  CONTROL "", IDC_CERTIFICATE_STATUS,"RichEdit20W", ES_READONLY|ES_MULTILINE,8,38,238,78
  CONTROL "", -1, "Static", SS_BLACKFRAME, 16,116,222,1
  CONTROL "", IDC_CERTIFICATE_NAMES,"RichEdit20W", ES_READONLY|ES_MULTILINE|WS_DISABLED,8,118,238,90
  PUSHBUTTON "&Install Certificate...", IDC_ADDTOSTORE,53,216,95,14
  PUSHBUTTON "Issuer &Statement", IDC_ISSUERSTATEMENT,152,216,95,14
END

IDD_DETAIL DIALOG 0, 0, 255, 236
CAPTION "Details"
STYLE WS_VISIBLE
FONT 8, "MS Shell Dlg"
BEGIN
  LTEXT "&Show:", -1, 6,12,40,14
  COMBOBOX IDC_DETAIL_SELECT, 48,10,100,14, CBS_DROPDOWNLIST|WS_BORDER|WS_VSCROLL|WS_TABSTOP
  CONTROL "", IDC_DETAIL_LIST, "SysListView32",
    LVS_REPORT|LVS_SINGLESEL|WS_CHILD|WS_VISIBLE|WS_TABSTOP|WS_BORDER, 6,28,241,100
  CONTROL "", IDC_DETAIL_VALUE, "RichEdit20W", ES_READONLY|ES_MULTILINE|WS_TABSTOP, 6,136,241,70
  PUSHBUTTON "&Edit Properties...", IDC_EDITPROPERTIES,53,216,95,14
  PUSHBUTTON "&Copy to File...", IDC_EXPORT,152,216,95,14
END

IDD_HIERARCHY DIALOG 0, 0, 255, 236
CAPTION "Certification Path"
STYLE WS_VISIBLE
FONT 8, "MS Shell Dlg"
BEGIN
  GROUPBOX "Certification path", -1,6,10,245,165, BS_GROUPBOX
  CONTROL "",IDC_CERTPATH, "SysTreeView32", TVS_HASLINES|WS_BORDER,
    13,22,231,130
  PUSHBUTTON "&View Certificate", IDC_VIEWCERTIFICATE,155,156,90,14
  LTEXT "Certificate &status:", IDC_CERTIFICATESTATUS,6,183,200,14
  CONTROL "", IDC_CERTIFICATESTATUSTEXT,"RichEdit20W",
    WS_BORDER|ES_READONLY|ES_MULTILINE|WS_DISABLED,6,195,245,36
END

IDD_USERNOTICE DIALOG 0, 0, 255, 256
CAPTION "Disclaimer"
STYLE WS_VISIBLE
FONT 8, "MS Shell Dlg"
BEGIN
  CONTROL "", IDC_USERNOTICE,"RichEdit20W",
    WS_BORDER|ES_READONLY|ES_MULTILINE|WS_DISABLED,6,10,241,200
  PUSHBUTTON "Close", IDOK,73,216,85,14
  PUSHBUTTON "More &Info", IDC_CPS,162,216,85,14
END

IDD_CERT_PROPERTIES_GENERAL DIALOG 0, 0, 255, 236
CAPTION "General"
STYLE WS_VISIBLE
FONT 8, "MS Shell Dlg"
BEGIN
  LTEXT "&Friendly name:", -1, 6,14,60,14
  EDITTEXT IDC_FRIENDLY_NAME, 70,12,181,14, ES_AUTOHSCROLL|WS_TABSTOP
  LTEXT "&Description:", -1, 6,32,60,14
  EDITTEXT IDC_DESCRIPTION, 70,30,181,14, ES_AUTOVSCROLL|ES_MULTILINE|WS_TABSTOP|WS_VSCROLL
  GROUPBOX "Certificate purposes", -1,6,48,245,185, BS_GROUPBOX
  AUTORADIOBUTTON "&Enable all purposes for this certificate",
    IDC_ENABLE_ALL_PURPOSES, 12,58,230,14, BS_AUTORADIOBUTTON|WS_TABSTOP
  AUTORADIOBUTTON "D&isable all purposes for this certificate",
    IDC_DISABLE_ALL_PURPOSES, 12,70,230,14, BS_AUTORADIOBUTTON
  AUTORADIOBUTTON "Enable &only the following purposes for this certificate:",
    IDC_ENABLE_SELECTED_PURPOSES, 12,82,230,14, BS_AUTORADIOBUTTON
  CONTROL "", IDC_CERTIFICATE_USAGES,"SysListView32",
    LVS_REPORT|LVS_NOCOLUMNHEADER|LVS_SINGLESEL|WS_CHILD|WS_VISIBLE|WS_TABSTOP|WS_BORDER,
    24,100,220,106
  PUSHBUTTON "Add &Purpose...", IDC_ADD_PURPOSE,168,212,76,14
END

IDD_ADD_CERT_PURPOSE DIALOG 0,0,200,68
CAPTION "Add Purpose"
FONT 8, "MS Shell Dlg"
BEGIN
  LTEXT "Add the object identifier (OID) for the certificate purpose you wish to add:",
    -1, 6,6,190,28
  EDITTEXT IDC_NEW_PURPOSE, 6,28,190,14, ES_AUTOVSCROLL|ES_MULTILINE|WS_TABSTOP|WS_VSCROLL
  PUSHBUTTON "OK", IDOK, 33,48,60,14
  PUSHBUTTON "Cancel", IDCANCEL, 100,48,60,14
END

IDD_SELECT_STORE DIALOG 0,0,200,136
CAPTION "Select Certificate Store"
FONT 8, "MS Shell Dlg"
BEGIN
  LTEXT "Select the certificate store you want to use:", IDC_STORE_TEXT, 6,6,190,28
  CONTROL "",IDC_STORE_LIST, "SysTreeView32", TVS_HASLINES|WS_BORDER|WS_TABSTOP,
    6,28,188,70
  CHECKBOX "&Show physical stores", IDC_SHOW_PHYSICAL_STORES, 6,102,180,14, BS_AUTOCHECKBOX|WS_TABSTOP
  PUSHBUTTON "OK", IDOK, 90,118,50,14, BS_DEFPUSHBUTTON
  PUSHBUTTON "Cancel", IDCANCEL, 144,118,50,14
END

IDD_IMPORT_WELCOME DIALOG 0,0,317,143
CAPTION "Certificate Import Wizard"
FONT 8, "MS Shell Dlg"
BEGIN
  LTEXT "Welcome to the Certificate Import Wizard", IDC_IMPORT_TITLE, 115,7,195,30
  LTEXT "This wizard helps you import certificates, certificate revocation lists, and certificate trust lists from a file to a certificate store.\n\n\
A certificate can be used to identify you or the computer with which you are communicating. It can also be used for authentication, and to sign messages. Certificate stores are collections of certificates, certificate revocation lists, and certificate trust lists.\n\n\
To continue, click Next.",
    -1, 115,40,195,120
END

IDD_IMPORT_FILE DIALOG 0,0,317,178
CAPTION "Certificate Import Wizard"
FONT 8, "MS Shell Dlg"
BEGIN
  LTEXT "&File name:", -1, 21,1,195,10
  EDITTEXT IDC_IMPORT_FILENAME, 21,11,208,14, ES_AUTOHSCROLL|WS_TABSTOP
  PUSHBUTTON "B&rowse...", IDC_IMPORT_BROWSE_FILE, 236,11,60,14
  LTEXT "Note: The following file formats may contain more than one certificate, certificate revocation list, or certificate trust list:",
    -1, 21,30,265,16
  LTEXT "Cryptographic Message Syntax Standard/PKCS #7 Messages (*.p7b)",
    -1, 31,53,265,10
  LTEXT "Personal Information Exchange/PKCS #12 (*.pfx; *.p12)",
    -1, 31,68,265,10
  LTEXT "Microsoft Serialized Certificate Store (*.sst)",
    -1, 31,83,265,10
END

IDD_IMPORT_STORE DIALOG 0,0,317,143
CAPTION "Certificate Import Wizard"
FONT 8, "MS Shell Dlg"
BEGIN
  LTEXT "Wine can automatically select the certificate store, or you can specify a location for the certificates.",
    -1, 21,1,220,25
  AUTORADIOBUTTON "&Automatically select certificate store",
    IDC_IMPORT_AUTO_STORE, 31,28,220,12, BS_AUTORADIOBUTTON|WS_TABSTOP
  AUTORADIOBUTTON "&Place all certificates in the following store:",
    IDC_IMPORT_SPECIFY_STORE, 31,42,220,12, BS_AUTORADIOBUTTON
  EDITTEXT IDC_IMPORT_STORE, 44,61,185,14, ES_READONLY
  PUSHBUTTON "B&rowse...", IDC_IMPORT_BROWSE_STORE, 236,61,60,14
END

IDD_IMPORT_FINISH DIALOG 0,0,317,178
CAPTION "Certificate Import Wizard"
FONT 8, "MS Shell Dlg"
BEGIN
  LTEXT "Completing the Certificate Import Wizard", IDC_IMPORT_TITLE,
    115,1,195,40
  LTEXT "You have successfully completed the Certificate Import Wizard.",
    -1, 115,33,195,24
  LTEXT "You have specified the following settings:",
    -1, 115,57,195,12
  CONTROL "", IDC_IMPORT_SETTINGS, "SysListView32",
    LVS_REPORT|LVS_NOCOLUMNHEADER|LVS_SINGLESEL|WS_CHILD|WS_VISIBLE|WS_TABSTOP|WS_BORDER,
    115,67,174,100
END

IDD_CERT_MGR DIALOG 0,0,335,270
CAPTION "Certificates"
FONT 8, "MS Shell Dlg"
BEGIN
  LTEXT "I&ntended purpose:", -1, 7,9,100,12
  COMBOBOX IDC_MGR_PURPOSE_SELECTION, 83,7,245,14, CBS_DROPDOWNLIST|WS_BORDER|WS_VSCROLL|WS_TABSTOP
  CONTROL "", IDC_MGR_STORES, "SysTabControl32", WS_CLIPSIBLINGS|WS_TABSTOP, 7,25,321,140
  CONTROL "", IDC_MGR_CERTS, "SysListView32", LVS_REPORT|WS_CHILD|WS_VISIBLE|WS_TABSTOP|WS_BORDER, 15,46,305,111
  PUSHBUTTON "&Import...", IDC_MGR_IMPORT, 7,172,65,14
  PUSHBUTTON "&Export...", IDC_MGR_EXPORT, 76,172,65,14, WS_DISABLED
  PUSHBUTTON "&Remove", IDC_MGR_REMOVE, 145,172,65,14, WS_DISABLED
  PUSHBUTTON "&Advanced...", IDC_MGR_ADVANCED, 263,172,65,14
  GROUPBOX "Certificate intended purposes", -1,7,194,321,47, BS_GROUPBOX
  LTEXT "", IDC_MGR_PURPOSES, 13,206,252,32
  PUSHBUTTON "&View", IDC_MGR_VIEW, 269,218,51,14, WS_DISABLED
  PUSHBUTTON "&Close", IDCANCEL, 277,249,51,14, BS_DEFPUSHBUTTON
END

IDD_CERT_MGR_ADVANCED DIALOG 0,0,248,176
CAPTION "Advanced Options"
FONT 8, "MS Shell Dlg"
BEGIN
  GROUPBOX "Certificate purpose", -1, 7,7,234,141, BS_GROUPBOX
  LTEXT "Select one or more purposes to be listed when Advanced Purposes is selected.",
    -1, 14,18,220,16
  LTEXT "&Certificate purposes:", -1, 14,41,90,12, WS_TABSTOP
  CONTROL "", IDC_CERTIFICATE_USAGES,"SysListView32",
    LVS_REPORT|LVS_NOCOLUMNHEADER|LVS_SINGLESEL|WS_CHILD|WS_VISIBLE|WS_TABSTOP|WS_BORDER,
    14,51,220,90
  PUSHBUTTON "OK", IDOK, 132,155,51,14, BS_DEFPUSHBUTTON
  PUSHBUTTON "Cancel", IDCANCEL, 190,155,51,14
END

IDD_EXPORT_WELCOME DIALOG 0,0,317,143
CAPTION "Certificate Export Wizard"
FONT 8, "MS Shell Dlg"
BEGIN
  LTEXT "Welcome to the Certificate Export Wizard", IDC_EXPORT_TITLE, 115,7,195,30
  LTEXT "This wizard helps you export certificates, certificate revocation lists, and certificate trust lists from a certificate store to a file.\n\n\
A certificate can be used to identify you or the computer with which you are communicating. It can also be used for authentication, and to sign messages. Certificate stores are collections of certificates, certificate revocation lists, and certificate trust lists.\n\n\
To continue, click Next.",
    -1, 115,40,195,120
END

IDD_EXPORT_PRIVATE_KEY DIALOG 0,0,317,143
CAPTION "Certificate Export Wizard"
FONT 8, "MS Shell Dlg"
BEGIN
  LTEXT "If you choose to export the private key, you will be prompted for a password to protect the private key on a later page.", -1, 21,1,195,25
  LTEXT "Do you wish to export the private key?", -1, 21,27,195,10
  AUTORADIOBUTTON "&Yes, export the private key",
    IDC_EXPORT_PRIVATE_KEY_YES, 31,36,200,12, BS_AUTORADIOBUTTON|WS_TABSTOP
  AUTORADIOBUTTON "N&o, do not export the private key",
    IDC_EXPORT_PRIVATE_KEY_NO, 31,48,200,12, BS_AUTORADIOBUTTON
  LTEXT "", IDC_EXPORT_PRIVATE_KEY_UNAVAILABLE, 21,60,200,24
END

IDD_EXPORT_PASSWORD DIALOG 0,0,317,143
CAPTION "Certificate Export Wizard"
FONT 8, "MS Shell Dlg"
BEGIN
  LTEXT "&Password:", -1, 21,1,195,10
  EDITTEXT IDC_EXPORT_PASSWORD, 21,11,208,14, ES_AUTOHSCROLL|WS_TABSTOP
  LTEXT "&Confirm password:", -1, 21,35,195,10
  EDITTEXT IDC_EXPORT_PASSWORD_CONFIRM, 21,45,208,14, ES_AUTOHSCROLL|WS_TABSTOP
END

IDD_EXPORT_FORMAT DIALOG 0,0,317,143
CAPTION "Certificate Export Wizard"
FONT 8, "MS Shell Dlg"
BEGIN
  LTEXT "Select the format you want to use:", -1, 21,1,195,10
  AUTORADIOBUTTON "&DER-encoded X.509 (*.cer)",
    IDC_EXPORT_FORMAT_DER, 31,18,280,12, BS_AUTORADIOBUTTON|WS_TABSTOP
  AUTORADIOBUTTON "Ba&se64-encoded X.509 (*.cer):",
    IDC_EXPORT_FORMAT_BASE64, 31,30,280,12, BS_AUTORADIOBUTTON
  AUTORADIOBUTTON "&Cryptographic Message Syntax Standard/PKCS #7 Message (*.p7b)",
    IDC_EXPORT_FORMAT_CMS, 31,42,280,12, BS_AUTORADIOBUTTON
  CHECKBOX "&Include all certificates in the certification path if possible",
    IDC_EXPORT_CMS_INCLUDE_CHAIN, 44,57,280,8, BS_AUTOCHECKBOX|WS_TABSTOP|WS_DISABLED
  AUTORADIOBUTTON "&Personal Information Exchange/PKCS #12 (*.pfx)",
    IDC_EXPORT_FORMAT_PFX, 31,72,280,12, BS_AUTORADIOBUTTON|WS_DISABLED
  CHECKBOX "Incl&ude all certificates in the certification path if possible",
    IDC_EXPORT_PFX_INCLUDE_CHAIN, 44,87,280,8, BS_AUTOCHECKBOX|WS_TABSTOP|WS_DISABLED
  CHECKBOX "&Enable strong encryption",
    IDC_EXPORT_PFX_STRONG_ENCRYPTION, 44,102,280,8, BS_AUTOCHECKBOX|WS_TABSTOP|WS_DISABLED
  CHECKBOX "Delete the private &key if the export is successful",
    IDC_EXPORT_PFX_DELETE_PRIVATE_KEY, 44,117,280,8, BS_AUTOCHECKBOX|WS_TABSTOP|WS_DISABLED
END

IDD_EXPORT_FILE DIALOG 0,0,317,143
CAPTION "Certificate Export Wizard"
FONT 8, "MS Shell Dlg"
BEGIN
  LTEXT "&File name:", -1, 21,1,195,10
  EDITTEXT IDC_EXPORT_FILENAME, 21,11,208,14, ES_AUTOHSCROLL|WS_TABSTOP
  PUSHBUTTON "B&rowse...", IDC_EXPORT_BROWSE_FILE, 236,11,60,14
END

IDD_EXPORT_FINISH DIALOG 0,0,317,178
CAPTION "Certificate Export Wizard"
FONT 8, "MS Shell Dlg"
BEGIN
  LTEXT "Completing the Certificate Export Wizard", IDC_EXPORT_TITLE,
    115,1,195,40
  LTEXT "You have successfully completed the Certificate Export Wizard.",
    -1, 115,33,195,24
  LTEXT "You have specified the following settings:",
    -1, 115,57,195,12
  CONTROL "", IDC_EXPORT_SETTINGS, "SysListView32",
    LVS_REPORT|LVS_NOCOLUMNHEADER|LVS_SINGLESEL|WS_CHILD|WS_VISIBLE|WS_TABSTOP|WS_BORDER,
    115,67,174,100
END

LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL

/* @makedep: smallicons.bmp */
IDB_SMALL_ICONS BITMAP smallicons.bmp

/* @makedep: cert.bmp */
IDB_CERT BITMAP cert.bmp

/* @makedep: certerror.bmp */
IDB_CERT_ERROR BITMAP certerror.bmp

/* @makedep: certwarning.bmp */
IDB_CERT_WARNING BITMAP certwarning.bmp

/* @makedep: checks.bmp */
IDB_CHECKS BITMAP checks.bmp

/* @makedep: certwatermark.bmp */
IDB_CERT_WATERMARK BITMAP certwatermark.bmp

/* @makedep: certheader.bmp */
IDB_CERT_HEADER BITMAP certheader.bmp
