/** @file
  String definitions for Secure Boot Configuration form.

Copyright (c) 2011 - 2017, Intel Corporation. All rights reserved.<BR>
This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
which accompanies this distribution.  The full text of the license may be found at
http://opensource.org/licenses/bsd-license.php

THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.

**/

#langdef en-US "English"

#string STR_SECUREBOOT_TITLE               #language en-US "Secure Boot Configuration"
#string STR_SECUREBOOT_HELP                #language en-US "Press <Enter> to select Secure Boot options."

#string STR_NULL                           #language en-US ""
#string STR_DBX_SUBTITLE_TEXT              #language en-US ""

#string STR_SECURE_BOOT_STATE_PROMPT       #language en-US "Current Secure Boot State"
#string STR_SECURE_BOOT_STATE_HELP         #language en-US "Current Secure Boot state: enabled or disabled."
#string STR_SECURE_BOOT_STATE_CONTENT      #language en-US " "

#string STR_SECURE_BOOT_PROMPT             #language en-US "Attempt Secure Boot"
#string STR_SECURE_BOOT_HELP               #language en-US "Enable/Disable the Secure Boot feature after platform reset"

#string STR_SECURE_BOOT_ENROLL_SIGNATURE   #language en-US "Enroll Signature"
#string STR_SECURE_BOOT_DELETE_SIGNATURE   #language en-US "Delete Signature"

#string STR_SECURE_BOOT_SIGNATURE_GUID     #language en-US "Signature GUID"
#string STR_SECURE_BOOT_SIGNATURE_GUID_HELP #language en-US "Input digit character in 11111111-2222-3333-4444-1234567890ab format."
#string STR_SECURE_BOOT_ADD_SIGNATURE_FILE #language en-US "Enroll Signature Using File"

#string STR_DBX_CERTIFICATE_FORMAT_PROMPT  #language en-US "Signature Format"
#string STR_DBX_CERTIFICATE_FORMAT_HELP    #language en-US "X509 DER-Cert enrolled. Select different option to enroll it into DBX."
#string STR_DBX_CERTIFICATE_FORMAT_SHA256  #language en-US "X509 CERT SHA256"
#string STR_DBX_CERTIFICATE_FORMAT_SHA384  #language en-US "X509 CERT SHA384"
#string STR_DBX_CERTIFICATE_FORMAT_SHA512  #language en-US "X509 CERT SHA512"
#string STR_DBX_CERTIFICATE_FORMAT_RAW     #language en-US "X509 CERT"

#string STR_DBX_PE_IMAGE_FORMAT_HELP       #language en-US "PE image enrolled. Use SHA256 hash to enroll it into DBX"
#string STR_DBX_PE_FORMAT_SHA256           #language en-US "PE Image SHA256"

#string STR_DBX_AUTH_2_FORMAT_HELP         #language en-US "VARIABLE_AUTHENICATION_2 binary enrolled. Use raw binary to enroll it into DBX"
#string STR_DBX_AUTH_2_FORMAT              #language en-US "VARIABLE_AUTHENICATION_2"

#string STR_CERTIFICATE_REVOCATION_TIME_PROMPT #language en-US "  Revocation Time"
#string STR_CERTIFICATE_REVOCATION_TIME_HELP   #language en-US "Input the revocation time of the certificate"
#string STR_CERTIFICATE_REVOCATION_DATE_PROMPT #language en-US "  Revocation Date"
#string STR_CERTIFICATE_REVOCATION_DATE_HELP   #language en-US "Input the revocation date of the certificate"

#string STR_ALWAYS_CERTIFICATE_REVOCATION_PROMPT   #language en-US "Always Revocation"
#string STR_ALWAYS_CERTIFICATE_REVOCATION_HELP     #language en-US "Indicate whether the certificate is always revoked."


#string STR_SAVE_SIGNATURE_FILE            #language en-US "Save Signature File"

#string STR_SAVE_AND_EXIT                  #language en-US  "Commit Changes and Exit"
#string STR_NO_SAVE_AND_EXIT               #language en-US  "Discard Changes and Exit"

#string STR_FILE_EXPLORER_TITLE            #language en-US  "File Explorer"

#string STR_SECURE_BOOT_MODE_PROMPT        #language en-US "Secure Boot Mode"
#string STR_SECURE_BOOT_MODE_HELP          #language en-US "Secure Boot Mode: Custom Mode or Standard Mode"

#string STR_STANDARD_MODE                  #language en-US "Standard Mode"
#string STR_CUSTOM_MODE                    #language en-US "Custom Mode"

#string STR_SECURE_BOOT_OPTION             #language en-US "Custom Secure Boot Options"
#string STR_SECURE_BOOT_OPTION_HELP        #language en-US "Enter into Custom Secure Boot Options Form"

#string STR_SECURE_BOOT_OPTION_TITLE       #language en-US "Custom Secure Boot Options"

#string STR_SECURE_BOOT_PK_OPTION          #language en-US "PK Options"
#string STR_SECURE_BOOT_PK_OPTION_HELP     #language en-US "Enroll/Delete PK"
#string STR_SECURE_BOOT_KEK_OPTION         #language en-US "KEK Options"
#string STR_SECURE_BOOT_KEK_OPTION_HELP    #language en-US "Enroll/Delete KEK"
#string STR_SECURE_BOOT_DB_OPTION          #language en-US "DB Options"
#string STR_SECURE_BOOT_DB_OPTION_HELP     #language en-US "Enroll/Delete Signature"
#string STR_SECURE_BOOT_DBX_OPTION         #language en-US "DBX Options"
#string STR_SECURE_BOOT_DBX_OPTION_HELP    #language en-US "Enroll/Delete DBX"
#string STR_SECURE_BOOT_DBT_OPTION         #language en-US "DBT Options"
#string STR_SECURE_BOOT_DBT_OPTION_HELP    #language en-US "Enroll/Delete DBT"

#string STR_ENROLL_PK                      #language en-US "Enroll PK"
#string STR_ENROLL_PK_HELP                 #language en-US "Enter into Enroll PK Form"
#string STR_SAVE_PK_FILE                   #language en-US "Save PK file"
#string STR_SECURE_BOOT_ENROLL_PK_FILE     #language en-US "Enroll PK Using File"

#string STR_DELETE_PK                      #language en-US "Delete Pk"
#string STR_DELETE_PK_HELP	               #language en-US "Choose to Delete PK, Otherwise keep the PK"

#string STR_ENROLL_PK_TITLE                #language en-US "Enroll PK"

#string STR_ENROLL_KEK                     #language en-US "Enroll KEK"
#string STR_ENROLL_KEK_HELP                #language en-US "Enter into Enroll KEK Form"

#string STR_DELETE_KEK                     #language en-US "Delete KEK"
#string STR_DELETE_KEK_HELP	               #language en-US "Enter into Delete KEK Form"

#string STR_ENROLL_KEK_TITLE                #language en-US "Enroll KEK"
#string STR_DELETE_KEK_TITLE                #language en-US "Delete KEK"

#string STR_FORM_ENROLL_KEK_FROM_FILE_TITLE         #language en-US "Enroll KEK using File"
#string STR_FORM_ENROLL_KEK_FROM_FILE_TITLE_HELP    #language en-US "Read the public key of KEK from file"
#string STR_FILE_EXPLORER_TITLE                   #language en-US "File Explorer"
#string STR_CERT_TYPE_RSA2048_SHA256_GUID         #language en-US "RSA2048_SHA256_GUID"
#string STR_CERT_TYPE_PCKS7_GUID                  #language en-US "PKCS7_GUID"
#string STR_CERT_TYPE_SHA1_GUID                   #language en-US "SHA1_GUID"
#string STR_CERT_TYPE_SHA256_GUID                 #language en-US "SHA256_GUID"
#string STR_CERT_TYPE_X509_SHA256_GUID            #language en-US "X509_SHA256_GUID"
#string STR_CERT_TYPE_X509_SHA384_GUID            #language en-US "X509_SHA384_GUID"
#string STR_CERT_TYPE_X509_SHA512_GUID            #language en-US "X509_SHA512_GUID"
