/*
 * crypt32 dll resources
 *
 * Copyright (C) 2006 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
 */

LANGUAGE LANG_ENGLISH, SUBLANG_DEFAULT

STRINGTABLE DISCARDABLE
{
    IDS_AUTHORITY_KEY_ID "Authority Key Identifier"
    IDS_KEY_ATTRIBUTES "Key Attributes"
    IDS_KEY_USAGE_RESTRICTION "Key Usage Restriction"
    IDS_SUBJECT_ALT_NAME "Subject Alternative Name"
    IDS_ISSUER_ALT_NAME "Issuer Alternative Name"
    IDS_BASIC_CONSTRAINTS "Basic Constraints"
    IDS_KEY_USAGE "Key Usage"
    IDS_CERT_POLICIES "Certificate Policies"
    IDS_SUBJECT_KEY_IDENTIFIER "Subject Key Identifier"
    IDS_CRL_REASON_CODE "CRL Reason Code"
    IDS_CRL_DIST_POINTS "CRL Distribution Points"
    IDS_ENHANCED_KEY_USAGE "Enhanced Key Usage"
    IDS_AUTHORITY_INFO_ACCESS "Authority Information Access"
    IDS_CERT_EXTENSIONS "Certificate Extensions"
    IDS_NEXT_UPDATE_LOCATION "Next Update Location"
    IDS_YES_OR_NO_TRUST "Yes or No Trust"
    IDS_EMAIL_ADDRESS "Email Address"
    IDS_UNSTRUCTURED_NAME "Unstructured Name"
    IDS_CONTENT_TYPE "Content Type"
    IDS_MESSAGE_DIGEST "Message Digest"
    IDS_SIGNING_TIME "Signing Time"
    IDS_COUNTER_SIGN "Counter Sign"
    IDS_CHALLENGE_PASSWORD "Challenge Password"
    IDS_UNSTRUCTURED_ADDRESS "Unstructured Address"
    IDS_SMIME_CAPABILITIES "SMIME Capabilities"
    IDS_PREFER_SIGNED_DATA "Prefer Signed Data"
    IDS_CPS "CPS"
    IDS_USER_NOTICE "User Notice"
    IDS_OCSP "On-line Certificate Status Protocol"
    IDS_CA_ISSUER "Certification Authority Issuer"
    IDS_CERT_TEMPLATE_NAME "Certification Template Name"
    IDS_CERT_TYPE "Certificate Type"
    IDS_CERT_MANIFOLD "Certificate Manifold"
    IDS_NETSCAPE_CERT_TYPE "Netscape Cert Type"
    IDS_NETSCAPE_BASE_URL "Netscape Base URL"
    IDS_NETSCAPE_REVOCATION_URL "Netscape Revocation URL"
    IDS_NETSCAPE_CA_REVOCATION_URL "Netscape CA Revocation URL"
    IDS_NETSCAPE_CERT_RENEWAL_URL "Netscape Cert Renewal URL"
    IDS_NETSCAPE_CA_POLICY_URL "Netscape CA Policy URL"
    IDS_NETSCAPE_SSL_SERVER_NAME "Netscape SSL ServerName"
    IDS_NETSCAPE_COMMENT "Netscape Comment"
    IDS_SPC_SP_AGENCY_INFO "SpcSpAgencyInfo"
    IDS_SPC_FINANCIAL_CRITERIA "SpcFinancialCriteria"
    IDS_SPC_MINIMAL_CRITERIA "SpcMinimalCriteria"
    IDS_COUNTRY "Country/Region"
    IDS_ORGANIZATION "Organization"
    IDS_ORGANIZATIONAL_UNIT "Organizational Unit"
    IDS_COMMON_NAME "Common Name"
    IDS_LOCALITY "Locality"
    IDS_STATE_OR_PROVINCE "State or Province"
    IDS_TITLE "Title"
    IDS_GIVEN_NAME "Given Name"
    IDS_INITIALS "Initials"
    IDS_SUR_NAME "Sur Name"
    IDS_DOMAIN_COMPONENT "Domain Component"
    IDS_STREET_ADDRESS "Street Address"
    IDS_SERIAL_NUMBER "Serial Number"
    IDS_CA_VERSION "CA Version"
    IDS_CROSS_CA_VERSION "Cross CA Version"
    IDS_SERIALIZED_SIG_SERIAL_NUMBER "Serialized Signature Serial Number"
    IDS_PRINCIPAL_NAME "Principal Name"
    IDS_WINDOWS_PRODUCT_UPDATE "Windows Product Update"
    IDS_ENROLLMENT_NAME_VALUE_PAIR "Enrollment Name Value Pair"
    IDS_OS_VERSION "OS Version"
    IDS_ENROLLMENT_CSP "Enrollment CSP"
    IDS_CRL_NUMBER "CRL Number"
    IDS_DELTA_CRL_INDICATOR "Delta CRL Indicator"
    IDS_ISSUING_DIST_POINT "Issuing Distribution Point"
    IDS_FRESHEST_CRL "Freshest CRL"
    IDS_NAME_CONSTRAINTS "Name Constraints"
    IDS_POLICY_MAPPINGS "Policy Mappings"
    IDS_POLICY_CONSTRAINTS "Policy Constraints"
    IDS_CROSS_CERT_DIST_POINTS "Cross-Certificate Distribution Points"
    IDS_APPLICATION_POLICIES "Application Policies"
    IDS_APPLICATION_POLICY_MAPPINGS "Application Policy Mappings"
    IDS_APPLICATION_POLICY_CONSTRAINTS "Application Policy Constraints"
    IDS_CMC_DATA "CMC Data"
    IDS_CMC_RESPONSE "CMC Response"
    IDS_UNSIGNED_CMC_REQUEST "Unsigned CMC Request"
    IDS_CMC_STATUS_INFO "CMC Status Info"
    IDS_CMC_EXTENSIONS "CMC Extensions"
    IDS_CMC_ATTRIBUTES "CMC Attributes"
    IDS_PKCS_7_DATA "PKCS 7 Data"
    IDS_PKCS_7_SIGNED "PKCS 7 Signed"
    IDS_PKCS_7_ENVELOPED "PKCS 7 Enveloped"
    IDS_PKCS_7_SIGNED_ENVELOPED "PKCS 7 Signed Enveloped"
    IDS_PKCS_7_DIGESTED "PKCS 7 Digested"
    IDS_PKCS_7_ENCRYPTED "PKCS 7 Encrypted"
    IDS_PREVIOUS_CA_CERT_HASH "Previous CA Certificate Hash"
    IDS_CRL_VIRTUAL_BASE "Virtual Base CRL Number"
    IDS_CRL_NEXT_PUBLISH "Next CRL Publish"
    IDS_CA_EXCHANGE "CA Encryption Certificate"
    IDS_KEY_RECOVERY_AGENT "Key Recovery Agent"
    IDS_CERTIFICATE_TEMPLATE "Certificate Template Information"
    IDS_ENTERPRISE_ROOT_OID "Enterprise Root OID"
    IDS_RDN_DUMMY_SIGNER "Dummy Signer"
    IDS_ARCHIVED_KEY_ATTR "Encrypted Private Key"
    IDS_CRL_SELF_CDP "Published CRL Locations"
    IDS_REQUIRE_CERT_CHAIN_POLICY "Enforce Certificate Chain Policy"
    IDS_TRANSACTION_ID "Transaction Id"
    IDS_SENDER_NONCE "Sender Nonce"
    IDS_RECIPIENT_NONCE "Recipient Nonce"
    IDS_REG_INFO "Reg Info"
    IDS_GET_CERTIFICATE "Get Certificate"
    IDS_GET_CRL "Get CRL"
    IDS_REVOKE_REQUEST "Revoke Request"
    IDS_QUERY_PENDING "Query Pending"
    IDS_SORTED_CTL "Certificate Trust List"
    IDS_ARCHIVED_KEY_CERT_HASH "Archived Key Certificate Hash"
    IDS_PRIVATE_KEY_USAGE_PERIOD "Private Key Usage Period"
    IDS_CLIENT_INFORMATION "Client Information"
    IDS_SERVER_AUTHENTICATION "Server Authentication"
    IDS_CLIENT_AUTHENTICATION "Client Authentication"
    IDS_CODE_SIGNING "Code Signing"
    IDS_SECURE_EMAIL "Secure Email"
    IDS_TIME_STAMPING "Time Stamping"
    IDS_MICROSOFT_TRUST_LIST_SIGNING "Microsoft Trust List Signing"
    IDS_MICROSOFT_TIME_STAMPING "Microsoft Time Stamping"
    IDS_IPSEC_END_SYSTEM "IP security end system"
    IDS_IPSEC_TUNNEL "IP security tunnel termination"
    IDS_IPSEC_USER "IP security user"
    IDS_EFS "Encrypting File System"
    IDS_WHQL_CRYPTO "Windows Hardware Driver Verification"
    IDS_NT5_CRYPTO "Windows System Component Verification"
    IDS_OEM_WHQL_CRYPTO "OEM Windows System Component Verification"
    IDS_EMBEDDED_NT_CRYPTO "Embedded Windows System Component Verification"
    IDS_KEY_PACK_LICENSES "Key Pack Licenses"
    IDS_LICENSE_SERVER "License Server Verification"
    IDS_SMART_CARD_LOGON "Smart Card Logon"
    IDS_DIGITAL_RIGHTS "Digital Rights"
    IDS_QUALIFIED_SUBORDINATION "Qualified Subordination"
    IDS_KEY_RECOVERY "Key Recovery"
    IDS_DOCUMENT_SIGNING "Document Signing"
    IDS_IPSEC_IKE_INTERMEDIATE "IP security IKE intermediate"
    IDS_FILE_RECOVERY "File Recovery"
    IDS_ROOT_LIST_SIGNER "Root List Signer"
    IDS_ANY_APPLICATION_POLICIES "All application policies"
    IDS_DS_EMAIL_REPLICATION "Directory Service Email Replication"
    IDS_ENROLLMENT_AGENT "Certificate Request Agent"
    IDS_LIFETIME_SIGNING "Lifetime Signing"
    IDS_ANY_CERT_POLICY "All issuance policies"
}
