boot process for authentication or data signing/decryption, especially if the\r
application has to make use of PKI.\r
\r
- Copyright (c) 2015, Intel Corporation. All rights reserved.<BR>\r
- This program and the accompanying materials\r
- are licensed and made available under the terms and conditions of the BSD License\r
- which accompanies this distribution. The full text of the license may be found at\r
- http://opensource.org/licenses/bsd-license.php\r
+ Copyright (c) 2015-2018, Intel Corporation. All rights reserved.<BR>\r
+ SPDX-License-Identifier: BSD-2-Clause-Patent\r
\r
- THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
- WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+ @par Revision Reference:\r
+ This Protocol was introduced in UEFI Specification 2.5.\r
\r
**/\r
\r
0xd317f29b, 0xa325, 0x4712, {0x9b, 0xf1, 0xc6, 0x19, 0x54, 0xdc, 0x19, 0x8c} \\r
}\r
\r
-typedef struct _EFI_SMART_CARD_EDGE_PROTOCOL EFI_SMART_CARD_EDGE_PROTOCOL;\r
+typedef struct _EFI_SMART_CARD_EDGE_PROTOCOL EFI_SMART_CARD_EDGE_PROTOCOL;\r
\r
//\r
// Maximum size for a Smart Card AID (Application IDentifier)\r
//\r
-#define SCARD_AID_MAXSIZE 0x0010\r
+#define SCARD_AID_MAXSIZE 0x0010\r
//\r
// Size of CSN (Card Serial Number)\r
//\r
-#define SCARD_CSN_SIZE 0x0010\r
+#define SCARD_CSN_SIZE 0x0010\r
//\r
// Current specification version 1.00\r
//\r
-#define SMART_CARD_EDGE_PROTOCOL_VERSION_1 0x00000100\r
+#define SMART_CARD_EDGE_PROTOCOL_VERSION_1 0x00000100\r
//\r
// Parameters type definition\r
//\r
//\r
// value of tag field for header, the number of containers\r
//\r
-#define SC_EDGE_TAG_HEADER 0x0000\r
+#define SC_EDGE_TAG_HEADER 0x0000\r
//\r
// value of tag field for certificate\r
//\r
-#define SC_EDGE_TAG_CERT 0x0001\r
+#define SC_EDGE_TAG_CERT 0x0001\r
//\r
// value of tag field for key index associated with certificate\r
//\r
-#define SC_EDGE_TAG_KEY_ID 0x0002\r
+#define SC_EDGE_TAG_KEY_ID 0x0002\r
//\r
// value of tag field for key type\r
//\r
-#define SC_EDGE_TAG_KEY_TYPE 0x0003\r
+#define SC_EDGE_TAG_KEY_TYPE 0x0003\r
//\r
// value of tag field for key size\r
//\r
-#define SC_EDGE_TAG_KEY_SIZE 0x0004\r
+#define SC_EDGE_TAG_KEY_SIZE 0x0004\r
\r
//\r
// Length of L fields of TLV items\r
//\r
// size of L field for header\r
//\r
-#define SC_EDGE_L_SIZE_HEADER 1\r
+#define SC_EDGE_L_SIZE_HEADER 1\r
//\r
// size of L field for certificate (big endian)\r
//\r
-#define SC_EDGE_L_SIZE_CERT 2\r
+#define SC_EDGE_L_SIZE_CERT 2\r
//\r
// size of L field for key index\r
//\r
-#define SC_EDGE_L_SIZE_KEY_ID 1\r
+#define SC_EDGE_L_SIZE_KEY_ID 1\r
//\r
// size of L field for key type\r
//\r
-#define SC_EDGE_L_SIZE_KEY_TYPE 1\r
+#define SC_EDGE_L_SIZE_KEY_TYPE 1\r
//\r
// size of L field for key size (big endian)\r
//\r
-#define SC_EDGE_L_SIZE_KEY_SIZE 2\r
+#define SC_EDGE_L_SIZE_KEY_SIZE 2\r
\r
//\r
// Some TLV items have a fixed value for L field\r
//\r
// value of L field for header\r
//\r
-#define SC_EDGE_L_VALUE_HEADER 1\r
+#define SC_EDGE_L_VALUE_HEADER 1\r
//\r
// value of L field for key index\r
//\r
-#define SC_EDGE_L_VALUE_KEY_ID 1\r
+#define SC_EDGE_L_VALUE_KEY_ID 1\r
//\r
// value of L field for key type\r
//\r
-#define SC_EDGE_L_VALUE_KEY_TYPE 1\r
+#define SC_EDGE_L_VALUE_KEY_TYPE 1\r
//\r
// value of L field for key size\r
//\r
-#define SC_EDGE_L_VALUE_KEY_SIZE 2\r
+#define SC_EDGE_L_VALUE_KEY_SIZE 2\r
\r
//\r
// Possible values for key type\r
//\r
// RSA decryption\r
//\r
-#define SC_EDGE_RSA_EXCHANGE 0x01\r
+#define SC_EDGE_RSA_EXCHANGE 0x01\r
//\r
// RSA signature\r
//\r
-#define SC_EDGE_RSA_SIGNATURE 0x02\r
+#define SC_EDGE_RSA_SIGNATURE 0x02\r
//\r
// ECDSA signature\r
//\r
-#define SC_EDGE_ECDSA_256 0x03\r
+#define SC_EDGE_ECDSA_256 0x03\r
//\r
// ECDSA signature\r
//\r
-#define SC_EDGE_ECDSA_384 0x04\r
+#define SC_EDGE_ECDSA_384 0x04\r
//\r
// ECDSA signature\r
//\r
-#define SC_EDGE_ECDSA_521 0x05\r
+#define SC_EDGE_ECDSA_521 0x05\r
//\r
// ECDH agreement\r
//\r
-#define SC_EDGE_ECDH_256 0x06\r
+#define SC_EDGE_ECDH_256 0x06\r
//\r
// ECDH agreement\r
//\r
-#define SC_EDGE_ECDH_384 0x07\r
+#define SC_EDGE_ECDH_384 0x07\r
//\r
// ECDH agreement\r
//\r
-#define SC_EDGE_ECDH_521 0x08\r
+#define SC_EDGE_ECDH_521 0x08\r
\r
//\r
// Padding methods GUIDs for signature\r
0x9317ec24, 0x7cb0, 0x4d0e, {0x8b, 0x32, 0x2e, 0xd9, 0x20, 0x9c, 0xd8, 0xaf} \\r
}\r
\r
-extern EFI_GUID gEfiPaddingRsassaPkcs1V1P5Guid;\r
+extern EFI_GUID gEfiPaddingRsassaPkcs1V1P5Guid;\r
\r
//\r
// RSASSA-PSS padding method, for signature\r
0x7b2349e0, 0x522d, 0x4f8e, {0xb9, 0x27, 0x69, 0xd9, 0x7c, 0x9e, 0x79, 0x5f} \\r
}\r
\r
-extern EFI_GUID gEfiPaddingRsassaPssGuid;\r
+extern EFI_GUID gEfiPaddingRsassaPssGuid;\r
\r
//\r
// Padding methods GUIDs for decryption\r
0x3629ddb1, 0x228c, 0x452e, {0xb6, 0x16, 0x09, 0xed, 0x31, 0x6a, 0x97, 0x00} \\r
}\r
\r
-extern EFI_GUID gEfiPaddingNoneGuid;\r
+extern EFI_GUID gEfiPaddingNoneGuid;\r
\r
//\r
// RSAES-PKCS#1-V1.5 padding, for decryption\r
0xe1c1d0a9, 0x40b1, 0x4632, {0xbd, 0xcc, 0xd9, 0xd6, 0xe5, 0x29, 0x56, 0x31} \\r
}\r
\r
-extern EFI_GUID gEfiPaddingRsaesPkcs1V1P5Guid;\r
+extern EFI_GUID gEfiPaddingRsaesPkcs1V1P5Guid;\r
\r
//\r
// RSAES-OAEP padding, for decryption\r
0xc1e63ac4, 0xd0cf, 0x4ce6, {0x83, 0x5b, 0xee, 0xd0, 0xe6, 0xa8, 0xa4, 0x5b} \\r
}\r
\r
-extern EFI_GUID gEfiPaddingRsaesOaepGuid;\r
+extern EFI_GUID gEfiPaddingRsaesOaepGuid;\r
\r
/**\r
This function retrieves the context driver.\r
**/\r
typedef\r
EFI_STATUS\r
-(EFIAPI *EFI_SMART_CARD_EDGE_GET_CONTEXT) (\r
+(EFIAPI *EFI_SMART_CARD_EDGE_GET_CONTEXT)(\r
IN EFI_SMART_CARD_EDGE_PROTOCOL *This,\r
- OUT UINTN *NumberAidSupported,\r
+ OUT UINTN *NumberAidSupported,\r
IN OUT UINTN *AidTableSize OPTIONAL,\r
- OUT SMART_CARD_AID *AidTable OPTIONAL,\r
- OUT UINTN *NumberSCPresent,\r
+ OUT SMART_CARD_AID *AidTable OPTIONAL,\r
+ OUT UINTN *NumberSCPresent,\r
IN OUT UINTN *CsnTableSize OPTIONAL,\r
- OUT SMART_CARD_CSN *CsnTable OPTIONAL,\r
- OUT UINT32 *VersionScEdgeProtocol OPTIONAL\r
+ OUT SMART_CARD_CSN *CsnTable OPTIONAL,\r
+ OUT UINT32 *VersionScEdgeProtocol OPTIONAL\r
);\r
\r
/**\r
**/\r
typedef\r
EFI_STATUS\r
-(EFIAPI *EFI_SMART_CARD_EDGE_CONNECT) (\r
+(EFIAPI *EFI_SMART_CARD_EDGE_CONNECT)(\r
IN EFI_SMART_CARD_EDGE_PROTOCOL *This,\r
- OUT EFI_HANDLE *SCardHandle,\r
+ OUT EFI_HANDLE *SCardHandle,\r
IN UINT8 *ScardCsn OPTIONAL,\r
- OUT UINT8 *ScardAid OPTIONAL\r
+ OUT UINT8 *ScardAid OPTIONAL\r
);\r
\r
/**\r
**/\r
typedef\r
EFI_STATUS\r
-(EFIAPI *EFI_SMART_CARD_EDGE_DISCONNECT) (\r
+(EFIAPI *EFI_SMART_CARD_EDGE_DISCONNECT)(\r
IN EFI_SMART_CARD_EDGE_PROTOCOL *This,\r
IN EFI_HANDLE SCardHandle\r
);\r
**/\r
typedef\r
EFI_STATUS\r
-(EFIAPI *EFI_SMART_CARD_EDGE_GET_CSN) (\r
+(EFIAPI *EFI_SMART_CARD_EDGE_GET_CSN)(\r
IN EFI_SMART_CARD_EDGE_PROTOCOL *This,\r
IN EFI_HANDLE SCardHandle,\r
- OUT UINT8 Csn[SCARD_CSN_SIZE]\r
+ OUT UINT8 Csn[SCARD_CSN_SIZE]\r
);\r
\r
/**\r
**/\r
typedef\r
EFI_STATUS\r
-(EFIAPI *EFI_SMART_CARD_EDGE_GET_READER_NAME) (\r
+(EFIAPI *EFI_SMART_CARD_EDGE_GET_READER_NAME)(\r
IN EFI_SMART_CARD_EDGE_PROTOCOL *This,\r
IN EFI_HANDLE SCardHandle,\r
IN OUT UINTN *ReaderNameLength,\r
- OUT CHAR16 *ReaderName OPTIONAL\r
+ OUT CHAR16 *ReaderName OPTIONAL\r
);\r
\r
/**\r
**/\r
typedef\r
EFI_STATUS\r
-(EFIAPI *EFI_SMART_CARD_EDGE_VERIFY_PIN) (\r
+(EFIAPI *EFI_SMART_CARD_EDGE_VERIFY_PIN)(\r
IN EFI_SMART_CARD_EDGE_PROTOCOL *This,\r
IN EFI_HANDLE SCardHandle,\r
IN INT32 PinSize,\r
IN UINT8 *PinCode,\r
- OUT BOOLEAN *PinResult,\r
- OUT UINT32 *RemainingAttempts OPTIONAL\r
+ OUT BOOLEAN *PinResult,\r
+ OUT UINT32 *RemainingAttempts OPTIONAL\r
);\r
\r
/**\r
**/\r
typedef\r
EFI_STATUS\r
-(EFIAPI *EFI_SMART_CARD_EDGE_GET_PIN_REMAINING) (\r
+(EFIAPI *EFI_SMART_CARD_EDGE_GET_PIN_REMAINING)(\r
IN EFI_SMART_CARD_EDGE_PROTOCOL *This,\r
IN EFI_HANDLE SCardHandle,\r
- OUT UINT32 *RemainingAttempts\r
+ OUT UINT32 *RemainingAttempts\r
);\r
\r
/**\r
**/\r
typedef\r
EFI_STATUS\r
-(EFIAPI *EFI_SMART_CARD_EDGE_GET_DATA) (\r
+(EFIAPI *EFI_SMART_CARD_EDGE_GET_DATA)(\r
IN EFI_SMART_CARD_EDGE_PROTOCOL *This,\r
IN EFI_HANDLE SCardHandle,\r
IN EFI_GUID *DataId,\r
IN OUT UINTN *DataSize,\r
- OUT VOID *Data OPTIONAL\r
+ OUT VOID *Data OPTIONAL\r
);\r
\r
/**\r
**/\r
typedef\r
EFI_STATUS\r
-(EFIAPI *EFI_SMART_CARD_EDGE_GET_CREDENTIAL) (\r
+(EFIAPI *EFI_SMART_CARD_EDGE_GET_CREDENTIAL)(\r
IN EFI_SMART_CARD_EDGE_PROTOCOL *This,\r
IN EFI_HANDLE SCardHandle,\r
IN OUT UINTN *CredentialSize,\r
- OUT UINT8 *CredentialList OPTIONAL\r
+ OUT UINT8 *CredentialList OPTIONAL\r
);\r
\r
/**\r
**/\r
typedef\r
EFI_STATUS\r
-(EFIAPI *EFI_SMART_CARD_EDGE_SIGN_DATA) (\r
+(EFIAPI *EFI_SMART_CARD_EDGE_SIGN_DATA)(\r
IN EFI_SMART_CARD_EDGE_PROTOCOL *This,\r
IN EFI_HANDLE SCardHandle,\r
IN UINTN KeyId,\r
IN EFI_GUID *HashAlgorithm,\r
IN EFI_GUID *PaddingMethod,\r
IN UINT8 *HashedData,\r
- OUT UINT8 *SignatureData\r
+ OUT UINT8 *SignatureData\r
);\r
\r
/**\r
**/\r
typedef\r
EFI_STATUS\r
-(EFIAPI *EFI_SMART_CARD_EDGE_DECRYPT_DATA) (\r
+(EFIAPI *EFI_SMART_CARD_EDGE_DECRYPT_DATA)(\r
IN EFI_SMART_CARD_EDGE_PROTOCOL *This,\r
IN EFI_HANDLE SCardHandle,\r
IN UINTN KeyId,\r
IN UINTN EncryptedSize,\r
IN UINT8 *EncryptedData,\r
IN OUT UINTN *PlaintextSize,\r
- OUT UINT8 *PlaintextData\r
+ OUT UINT8 *PlaintextData\r
);\r
\r
/**\r
**/\r
typedef\r
EFI_STATUS\r
-(EFIAPI *EFI_SMART_CARD_EDGE_BUILD_DH_AGREEMENT) (\r
+(EFIAPI *EFI_SMART_CARD_EDGE_BUILD_DH_AGREEMENT)(\r
IN EFI_SMART_CARD_EDGE_PROTOCOL *This,\r
IN EFI_HANDLE SCardHandle,\r
IN UINTN KeyId,\r
IN UINT8 *dataQx,\r
IN UINT8 *dataQy,\r
- OUT UINT8 *DHAgreement\r
+ OUT UINT8 *DHAgreement\r
);\r
\r
///\r
/// smart card in the reader or to the reader itself.\r
///\r
struct _EFI_SMART_CARD_EDGE_PROTOCOL {\r
- EFI_SMART_CARD_EDGE_GET_CONTEXT GetContext;\r
- EFI_SMART_CARD_EDGE_CONNECT Connect;\r
- EFI_SMART_CARD_EDGE_DISCONNECT Disconnect;\r
- EFI_SMART_CARD_EDGE_GET_CSN GetCsn;\r
- EFI_SMART_CARD_EDGE_GET_READER_NAME GetReaderName;\r
- EFI_SMART_CARD_EDGE_VERIFY_PIN VerifyPin;\r
- EFI_SMART_CARD_EDGE_GET_PIN_REMAINING GetPinRemaining;\r
- EFI_SMART_CARD_EDGE_GET_DATA GetData;\r
- EFI_SMART_CARD_EDGE_GET_CREDENTIAL GetCredential;\r
- EFI_SMART_CARD_EDGE_SIGN_DATA SignData;\r
- EFI_SMART_CARD_EDGE_DECRYPT_DATA DecryptData;\r
- EFI_SMART_CARD_EDGE_BUILD_DH_AGREEMENT BuildDHAgreement;\r
+ EFI_SMART_CARD_EDGE_GET_CONTEXT GetContext;\r
+ EFI_SMART_CARD_EDGE_CONNECT Connect;\r
+ EFI_SMART_CARD_EDGE_DISCONNECT Disconnect;\r
+ EFI_SMART_CARD_EDGE_GET_CSN GetCsn;\r
+ EFI_SMART_CARD_EDGE_GET_READER_NAME GetReaderName;\r
+ EFI_SMART_CARD_EDGE_VERIFY_PIN VerifyPin;\r
+ EFI_SMART_CARD_EDGE_GET_PIN_REMAINING GetPinRemaining;\r
+ EFI_SMART_CARD_EDGE_GET_DATA GetData;\r
+ EFI_SMART_CARD_EDGE_GET_CREDENTIAL GetCredential;\r
+ EFI_SMART_CARD_EDGE_SIGN_DATA SignData;\r
+ EFI_SMART_CARD_EDGE_DECRYPT_DATA DecryptData;\r
+ EFI_SMART_CARD_EDGE_BUILD_DH_AGREEMENT BuildDHAgreement;\r
};\r
\r
-extern EFI_GUID gEfiSmartCardEdgeProtocolGuid;\r
+extern EFI_GUID gEfiSmartCardEdgeProtocolGuid;\r
\r
#endif\r
-\r