/*
 * 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"

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 "%s (%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 "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."
}

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
