MdePkg/Include/Protocol/SmartCardEdge.h File Reference


Data Structures

struct  _EFI_SMART_CARD_EDGE_PROTOCOL

Defines

#define EFI_SMART_CARD_EDGE_PROTOCOL_GUID
#define SCARD_AID_MAXSIZE   0x0010
#define SCARD_CSN_SIZE   0x0010
#define SMART_CARD_EDGE_PROTOCOL_VERSION_1   0x00000100
#define SC_EDGE_TAG_HEADER   0x0000
#define SC_EDGE_TAG_CERT   0x0001
#define SC_EDGE_TAG_KEY_ID   0x0002
#define SC_EDGE_TAG_KEY_TYPE   0x0003
#define SC_EDGE_TAG_KEY_SIZE   0x0004
#define SC_EDGE_L_SIZE_HEADER   1
#define SC_EDGE_L_SIZE_CERT   2
#define SC_EDGE_L_SIZE_KEY_ID   1
#define SC_EDGE_L_SIZE_KEY_TYPE   1
#define SC_EDGE_L_SIZE_KEY_SIZE   2
#define SC_EDGE_L_VALUE_HEADER   1
#define SC_EDGE_L_VALUE_KEY_ID   1
#define SC_EDGE_L_VALUE_KEY_TYPE   1
#define SC_EDGE_L_VALUE_KEY_SIZE   2
#define SC_EDGE_RSA_EXCHANGE   0x01
#define SC_EDGE_RSA_SIGNATURE   0x02
#define SC_EDGE_ECDSA_256   0x03
#define SC_EDGE_ECDSA_384   0x04
#define SC_EDGE_ECDSA_521   0x05
#define SC_EDGE_ECDH_256   0x06
#define SC_EDGE_ECDH_384   0x07
#define SC_EDGE_ECDH_521   0x08
#define EFI_PADDING_RSASSA_PKCS1V1P5_GUID
#define EFI_PADDING_RSASSA_PSS_GUID
#define EFI_PADDING_NONE_GUID
#define EFI_PADDING_RSAES_PKCS1V1P5_GUID
#define EFI_PADDING_RSAES_OAEP_GUID

Typedefs

typedef struct
_EFI_SMART_CARD_EDGE_PROTOCOL 
EFI_SMART_CARD_EDGE_PROTOCOL
typedef UINT8 SMART_CARD_AID [SCARD_AID_MAXSIZE]
typedef UINT8 SMART_CARD_CSN [SCARD_CSN_SIZE]
typedef OUT UINTN * NumberAidSupported
typedef OUT UINTN IN OUT UINTN * AidTableSize
typedef OUT UINTN IN OUT UINTN
OUT SMART_CARD_AID
AidTable
typedef OUT UINTN IN OUT UINTN
OUT SMART_CARD_AID OUT UINTN * 
NumberSCPresent
typedef OUT UINTN IN OUT UINTN
OUT SMART_CARD_AID OUT UINTN
IN OUT UINTN * 
CsnTableSize
typedef OUT UINTN IN OUT UINTN
OUT SMART_CARD_AID OUT UINTN
IN OUT UINTN OUT
SMART_CARD_CSN
CsnTable
typedef OUT UINTN IN OUT UINTN
OUT SMART_CARD_AID OUT UINTN
IN OUT UINTN OUT
SMART_CARD_CSN OUT UINT32
VersionScEdgeProtocol
typedef OUT EFI_HANDLESCardHandle
typedef OUT EFI_HANDLE IN UINT8ScardCsn
typedef OUT EFI_HANDLE IN
UINT8 OUT UINT8
ScardAid
typedef IN EFI_HANDLE OUT UINT8 Csn [SCARD_CSN_SIZE]
typedef IN EFI_HANDLE IN OUT
UINTN * 
ReaderNameLength
typedef IN EFI_HANDLE IN OUT
UINTN OUT CHAR16
ReaderName
typedef IN EFI_HANDLE IN INT32 PinSize
typedef IN EFI_HANDLE IN INT32
IN UINT8
PinCode
typedef IN EFI_HANDLE IN INT32
IN UINT8 OUT BOOLEAN
PinResult
typedef IN EFI_HANDLE IN INT32
IN UINT8 OUT BOOLEAN OUT
UINT32
RemainingAttempts
typedef IN EFI_HANDLE IN EFI_GUIDDataId
typedef IN EFI_HANDLE IN
EFI_GUID IN OUT UINTN * 
DataSize
typedef IN EFI_HANDLE IN
EFI_GUID IN OUT UINTN OUT VOID * 
Data
typedef IN EFI_HANDLE IN OUT
UINTN * 
CredentialSize
typedef IN EFI_HANDLE IN OUT
UINTN OUT UINT8
CredentialList
typedef IN EFI_HANDLE IN UINTN KeyId
typedef IN EFI_HANDLE IN UINTN
IN UINTN 
KeyType
typedef IN EFI_HANDLE IN UINTN
IN UINTN IN EFI_GUID
HashAlgorithm
typedef IN EFI_HANDLE IN UINTN
IN UINTN IN EFI_GUID IN
EFI_GUID
PaddingMethod
typedef IN EFI_HANDLE IN UINTN
IN UINTN IN EFI_GUID IN
EFI_GUID IN UINT8
HashedData
typedef IN EFI_HANDLE IN UINTN
IN UINTN IN EFI_GUID IN
EFI_GUID IN UINT8 OUT UINT8
SignatureData
typedef IN EFI_HANDLE IN UINTN
IN EFI_GUID IN EFI_GUID IN
UINTN 
EncryptedSize
typedef IN EFI_HANDLE IN UINTN
IN EFI_GUID IN EFI_GUID IN
UINTN IN UINT8
EncryptedData
typedef IN EFI_HANDLE IN UINTN
IN EFI_GUID IN EFI_GUID IN
UINTN IN UINT8 IN OUT UINTN * 
PlaintextSize
typedef IN EFI_HANDLE IN UINTN
IN EFI_GUID IN EFI_GUID IN
UINTN IN UINT8 IN OUT UINTN
OUT UINT8
PlaintextData
typedef IN EFI_HANDLE IN UINTN
IN UINT8
dataQx
typedef IN EFI_HANDLE IN UINTN
IN UINT8 IN UINT8
dataQy
typedef IN EFI_HANDLE IN UINTN
IN UINT8 IN UINT8 OUT UINT8
DHAgreement

Functions

typedef EFI_STATUS (EFIAPI *EFI_SMART_CARD_EDGE_GET_CONTEXT)(IN EFI_SMART_CARD_EDGE_PROTOCOL *This

Variables

EFI_GUID gEfiPaddingRsassaPkcs1V1P5Guid
EFI_GUID gEfiPaddingRsassaPssGuid
EFI_GUID gEfiPaddingNoneGuid
EFI_GUID gEfiPaddingRsaesPkcs1V1P5Guid
EFI_GUID gEfiPaddingRsaesOaepGuid
EFI_GUID gEfiSmartCardEdgeProtocolGuid

Detailed Description

The Smart Card Edge Protocol provides an abstraction for device to provide Smart Card support.

This protocol allows UEFI applications to interface with a Smart Card during boot process for authentication or data signing/decryption, especially if the application has to make use of PKI.

Copyright (c) 2015, Intel Corporation. All rights reserved.
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.


Define Documentation

#define EFI_PADDING_NONE_GUID

Value:

{ \
    0x3629ddb1, 0x228c, 0x452e, {0xb6, 0x16, 0x09, 0xed, 0x31, 0x6a, 0x97, 0x00} \
  }

#define EFI_PADDING_RSAES_OAEP_GUID

Value:

{ \
    0xc1e63ac4, 0xd0cf, 0x4ce6, {0x83, 0x5b, 0xee, 0xd0, 0xe6, 0xa8, 0xa4, 0x5b} \
  }

#define EFI_PADDING_RSAES_PKCS1V1P5_GUID

Value:

{ \
    0xe1c1d0a9, 0x40b1, 0x4632, {0xbd, 0xcc, 0xd9, 0xd6, 0xe5, 0x29, 0x56, 0x31} \
  }

#define EFI_PADDING_RSASSA_PKCS1V1P5_GUID

Value:

{ \
    0x9317ec24, 0x7cb0, 0x4d0e, {0x8b, 0x32, 0x2e, 0xd9, 0x20, 0x9c, 0xd8, 0xaf} \
  }

#define EFI_PADDING_RSASSA_PSS_GUID

Value:

{ \
    0x7b2349e0, 0x522d, 0x4f8e, {0xb9, 0x27, 0x69, 0xd9, 0x7c, 0x9e, 0x79, 0x5f} \
  }

#define EFI_SMART_CARD_EDGE_PROTOCOL_GUID

Value:

{ \
      0xd317f29b, 0xa325, 0x4712, {0x9b, 0xf1, 0xc6, 0x19, 0x54, 0xdc, 0x19, 0x8c} \
    }

#define SC_EDGE_ECDH_256   0x06

#define SC_EDGE_ECDH_384   0x07

#define SC_EDGE_ECDH_521   0x08

#define SC_EDGE_ECDSA_256   0x03

#define SC_EDGE_ECDSA_384   0x04

#define SC_EDGE_ECDSA_521   0x05

#define SC_EDGE_L_SIZE_CERT   2

#define SC_EDGE_L_SIZE_HEADER   1

#define SC_EDGE_L_SIZE_KEY_ID   1

#define SC_EDGE_L_SIZE_KEY_SIZE   2

#define SC_EDGE_L_SIZE_KEY_TYPE   1

#define SC_EDGE_L_VALUE_HEADER   1

#define SC_EDGE_L_VALUE_KEY_ID   1

#define SC_EDGE_L_VALUE_KEY_SIZE   2

#define SC_EDGE_L_VALUE_KEY_TYPE   1

#define SC_EDGE_RSA_EXCHANGE   0x01

#define SC_EDGE_RSA_SIGNATURE   0x02

#define SC_EDGE_TAG_CERT   0x0001

#define SC_EDGE_TAG_HEADER   0x0000

#define SC_EDGE_TAG_KEY_ID   0x0002

#define SC_EDGE_TAG_KEY_SIZE   0x0004

#define SC_EDGE_TAG_KEY_TYPE   0x0003

#define SCARD_AID_MAXSIZE   0x0010

#define SCARD_CSN_SIZE   0x0010

#define SMART_CARD_EDGE_PROTOCOL_VERSION_1   0x00000100


Typedef Documentation

typedef OUT UINTN IN OUT UINTN OUT SMART_CARD_AID* AidTable

typedef OUT UINTN IN OUT UINTN* AidTableSize

typedef IN EFI_HANDLE IN OUT UINTN OUT UINT8* CredentialList

typedef IN EFI_HANDLE IN OUT UINTN* CredentialSize

typedef IN EFI_HANDLE OUT UINT8 Csn[SCARD_CSN_SIZE]

typedef OUT UINTN IN OUT UINTN OUT SMART_CARD_AID OUT UINTN IN OUT UINTN OUT SMART_CARD_CSN* CsnTable

typedef OUT UINTN IN OUT UINTN OUT SMART_CARD_AID OUT UINTN IN OUT UINTN* CsnTableSize

typedef IN EFI_HANDLE IN EFI_GUID IN OUT UINTN OUT VOID* Data

typedef IN EFI_HANDLE IN EFI_GUID* DataId

typedef IN EFI_HANDLE IN UINTN IN UINT8* dataQx

typedef IN EFI_HANDLE IN UINTN IN UINT8 IN UINT8* dataQy

typedef IN EFI_HANDLE IN EFI_GUID IN OUT UINTN* DataSize

typedef IN EFI_HANDLE IN UINTN IN UINT8 IN UINT8 OUT UINT8* DHAgreement

typedef IN EFI_HANDLE IN UINTN IN EFI_GUID IN EFI_GUID IN UINTN IN UINT8* EncryptedData

typedef IN EFI_HANDLE IN UINTN IN EFI_GUID IN EFI_GUID IN UINTN EncryptedSize

typedef IN EFI_HANDLE IN UINTN IN EFI_GUID * HashAlgorithm

typedef IN EFI_HANDLE IN UINTN IN UINTN IN EFI_GUID IN EFI_GUID IN UINT8* HashedData

typedef IN EFI_HANDLE IN UINTN KeyId

typedef IN EFI_HANDLE IN UINTN IN UINTN KeyType

typedef OUT UINTN* NumberAidSupported

typedef OUT UINTN IN OUT UINTN OUT SMART_CARD_AID OUT UINTN* NumberSCPresent

typedef IN EFI_HANDLE IN UINTN IN EFI_GUID IN EFI_GUID * PaddingMethod

typedef IN EFI_HANDLE IN INT32 IN UINT8* PinCode

typedef IN EFI_HANDLE IN INT32 IN UINT8 OUT BOOLEAN* PinResult

typedef IN EFI_HANDLE IN INT32 PinSize

typedef IN EFI_HANDLE IN UINTN IN EFI_GUID IN EFI_GUID IN UINTN IN UINT8 IN OUT UINTN OUT UINT8* PlaintextData

typedef IN EFI_HANDLE IN UINTN IN EFI_GUID IN EFI_GUID IN UINTN IN UINT8 IN OUT UINTN* PlaintextSize

typedef IN EFI_HANDLE IN OUT UINTN OUT CHAR16* ReaderName

typedef IN EFI_HANDLE IN OUT UINTN* ReaderNameLength

typedef OUT EFI_HANDLE IN UINT8 OUT UINT8* ScardAid

typedef OUT EFI_HANDLE IN UINT8* ScardCsn

typedef IN EFI_HANDLE SCardHandle

typedef IN EFI_HANDLE IN UINTN IN UINTN IN EFI_GUID IN EFI_GUID IN UINT8 OUT UINT8* SignatureData

typedef UINT8 SMART_CARD_AID[SCARD_AID_MAXSIZE]

typedef UINT8 SMART_CARD_CSN[SCARD_CSN_SIZE]

typedef OUT UINTN IN OUT UINTN OUT SMART_CARD_AID OUT UINTN IN OUT UINTN OUT SMART_CARD_CSN OUT UINT32* VersionScEdgeProtocol


Function Documentation

typedef EFI_STATUS ( EFIAPI EFI_SMART_CARD_EDGE_BUILD_DH_AGREEMENT  ) 

This function retrieves the context driver.

The GetContextfunction returns the context of the protocol, the application identifiers supported by the protocol and the number and the CSN unique identifier of Smart Cards that are present and supported by protocol.

If AidTableSize, AidTable, CsnTableSize, CsnTable or VersionProtocol is NULL, the function does not fail but does not fill in such variables.

In case AidTableSize indicates a buffer too small to hold all the protocol AID table, only the first AidTableSize items of the table are returned in AidTable.

In case CsnTableSize indicates a buffer too small to hold the entire table of Smart Card CSN present, only the first CsnTableSize items of the table are returned in CsnTable.

VersionScEdgeProtocol returns the version of the EFI_SMART_CARD_EDGE_PROTOCOL this driver uses. For this protocol specification value is SMART_CARD_EDGE_PROTOCOL_VERSION_1.

In case of Smart Card removal the internal CSN list is immediately updated, even if a connection is opened with that Smart Card.

Parameters:
[in] This Indicates a pointer to the calling context.
[out] NumberAidSupported Number of AIDs this protocol supports.
[in,out] AidTableSize On input, number of items allocated for the AID table. On output, number of items returned by protocol.
[out] AidTable Table of the AIDs supported by the protocol.
[out] NumberSCPresent Number of currently present Smart Cards that are supported by protocol.
[in,out] CsnTableSize On input, the number of items the buffer CSN table can contain. On output, the number of items returned by the protocol.
[out] CsnTable Table of the CSN of the Smart Card present and supported by protocol.
[out] VersionScEdgeProtocol EFI_SMART_CARD_EDGE_PROTOCOL version.
Return values:
EFI_SUCCESS The requested command completed successfully.
EFI_INVALID_PARAMETER This is NULL.
EFI_INVALID_PARAMETER NumberSCPresent is NULL.
This function establish a connection with a Smart Card the protocol support.

In case of success the SCardHandle can be used.

If the ScardCsn is NULL the connection is established with the first Smart Card the protocol finds in its table of Smart Card present and supported. Else it establish context with the Smart Card whose CSN given by ScardCsn.

If ScardAid is not NULL the function returns the Smart Card AID the protocol supports. After a successful connect the SCardHandle will remain existing even in case Smart Card removed from Smart Card reader, but all function invoking this SCardHandle will fail. SCardHandle is released only on Disconnect.

Parameters:
[in] This Indicates a pointer to the calling context.
[out] SCardHandle Handle on Smart Card connection.
[in] ScardCsn CSN of the Smart Card the connection has to be established.
[out] ScardAid AID of the Smart Card the connection has been established.
Return values:
EFI_SUCCESS The requested command completed successfully.
EFI_INVALID_PARAMETER This is NULL.
EFI_INVALID_PARAMETER SCardHandle is NULL.
EFI_NO_MEDIA No Smart Card supported by protocol is present, Smart Card with CSN ScardCsn or Reader has been removed. A Disconnect should be performed.
This function releases a connection previously established by Connect.

The Disconnect function releases the connection previously established by a Connect. In case the Smart Card or the Smart Card reader has been removed before this call, this function returns EFI_SUCCESS.

Parameters:
[in] This Indicates a pointer to the calling context.
[in] SCardHandle Handle on Smart Card connection to release.
Return values:
EFI_SUCCESS The requested command completed successfully.
EFI_INVALID_PARAMETER This is NULL.
EFI_INVALID_PARAMETER No connection for SCardHandle value.
This function returns the Smart Card serial number.

Parameters:
[in] This Indicates a pointer to the calling context.
[in] SCardHandle Handle on Smart Card connection.
[out] Csn The Card Serial number, 16 bytes array.
Return values:
EFI_SUCCESS The requested command completed successfully.
EFI_INVALID_PARAMETER This is NULL.
EFI_INVALID_PARAMETER No connection for SCardHandle value.
EFI_NO_MEDIA Smart Card or Reader of SCardHandle connection has been removed. A Disconnect should be performed.
This function returns the name of the Smart Card reader used for this connection.

Parameters:
[in] This Indicates a pointer to the calling context.
[in] SCardHandle Handle on Smart Card connection.
[in,out] ReaderNameLength On input, a pointer to the variable that holds the maximal size, in bytes, of ReaderName. On output, the required size, in bytes, for ReaderName.
[out] ReaderName A pointer to a NULL terminated string that will contain the reader name.
Return values:
EFI_SUCCESS The requested command completed successfully.
EFI_INVALID_PARAMETER This is NULL.
EFI_INVALID_PARAMETER No connection for SCardHandle value.
EFI_INVALID_PARAMETER ReaderNameLength is NULL.
EFI_NO_MEDIA Smart Card or Reader of SCardHandle connection has been removed. A Disconnect should be performed.
This function authenticates a Smart Card user by presenting a PIN code.

The VerifyPinfunction presents a PIN code to the Smart Card.

If Smart Card found the PIN code correct the user is considered authenticated to current application, and the function returns TRUE.

Negative or null PinSize value rejected if PinCodeis not NULL.

A NULL PinCodebuffer means the application didn't know the PIN, in that case:

  • If PinSize value is negative the caller only wants to know if the current chain of the elements Smart Card Edge protocol, Smart Card Reader protocol and Smart Card Reader supports the Secure Pin Entry PCSC V2 functionality.
  • If PinSize value is positive or null the caller ask to perform the verify PIN using the Secure PIN Entry functionality.

In PinCode buffer, the PIN value is always given in plaintext, in case of secure messaging the SMART_CARD_EDGE_PROTOCOL will be in charge of all intermediate treatments to build the correct Smart Card APDU.

Parameters:
[in] This Indicates a pointer to the calling context.
[in] SCardHandle Handle on Smart Card connection.
[in] PinSize PIN code buffer size.
[in] PinCode PIN code to present to the Smart Card.
[out] PinResult Result of PIN code presentation to the Smart Card. TRUE when Smard Card founds the PIN code correct.
[out] RemainingAttempts Number of attempts still possible.
Return values:
EFI_SUCCESS The requested command completed successfully.
EFI_UNSUPPORTED Pinsize < 0 and Secure PIN Entry functionality not supported.
EFI_INVALID_PARAMETER This is NULL.
EFI_INVALID_PARAMETER No connection for SCardHandle value.
EFI_INVALID_PARAMETER Bad value for PinSize: value not supported by Smart Card or, negative with PinCode not null.
EFI_INVALID_PARAMETER PinResult is NULL.
EFI_NO_MEDIA Smart Card or Reader of SCardHandle connection has been removed. A Disconnect should be performed.
This function gives the remaining number of attempts for PIN code presentation.

The number of attempts to present a correct PIN is limited and depends on Smart Card and on PIN.

This function will retrieve the number of remaining possible attempts.

Parameters:
[in] This Indicates a pointer to the calling context.
[in] SCardHandle Handle on Smart Card connection.
[out] RemainingAttempts Number of attempts still possible.
Return values:
EFI_SUCCESS The requested command completed successfully.
EFI_INVALID_PARAMETER This is NULL.
EFI_INVALID_PARAMETER No connection for SCardHandle value.
EFI_INVALID_PARAMETER RemainingAttempts is NULL.
EFI_NO_MEDIA Smart Card or Reader of SCardHandle connection has been removed. A Disconnect should be performed.
This function returns a specific data from Smart Card.

The function is generic for any kind of data, but driver and application must share an EFI_GUID that identify the data.

Parameters:
[in] This Indicates a pointer to the calling context.
[in] SCardHandle Handle on Smart Card connection.
[in] DataId The type identifier of the data to get.
[in,out] DataSize On input, in bytes, the size of Data. On output, in bytes, the size of buffer required to store the specified data.
[out] Data The data buffer in which the data is returned. The type of the data buffer is associated with the DataId. Ignored if *DataSize is 0.
Return values:
EFI_SUCCESS The requested command completed successfully.
EFI_INVALID_PARAMETER This is NULL.
EFI_INVALID_PARAMETER No connection for SCardHandle value.
EFI_INVALID_PARAMETER DataId is NULL.
EFI_INVALID_PARAMETER DataSize is NULL.
EFI_INVALID_PARAMETER Data is NULL, and *DataSize is not zero.
EFI_NOT_FOUND DataId unknown for this driver.
EFI_BUFFER_TOO_SMALL The size of Data is too small for the specified data and the required size is returned in DataSize.
EFI_ACCESS_DENIED Operation not performed, conditions not fulfilled. PIN not verified.
EFI_NO_MEDIA Smart Card or Reader of SCardHandle connection has been removed. A Disconnect should be performed.
This function retrieve credentials store into the Smart Card.

The function returns a series of items in TLV (Tag Length Value) format.

First TLV item is the header item that gives the number of following containers (0x00, 0x01, Nb containers).

All these containers are a series of 4 TLV items:

  • The certificate item (0x01, certificate size, certificate)
  • The Key identifier item (0x02, 0x01, key index)
  • The key type item (0x03, 0x01, key type)
  • The key size item (0x04, 0x02, key size), key size in number of bits. Numeric multi-bytes values are on big endian format, most significant byte first:
  • The L field value for certificate (2 bytes)
  • The L field value for key size (2 bytes)
  • The value field for key size (2 bytes)

Parameters:
[in] This Indicates a pointer to the calling context.
[in] SCardHandle Handle on Smart Card connection.
[in,out] CredentialSize On input, in bytes, the size of buffer to store the list of credential. On output, in bytes, the size of buffer required to store the entire list of credentials.
[out] CredentialList List of credentials stored into the Smart Card. A list of TLV (Tag Length Value) elements organized in containers array.
Return values:
EFI_SUCCESS The requested command completed successfully.
EFI_INVALID_PARAMETER This is NULL.
EFI_INVALID_PARAMETER No connection for SCardHandle value.
EFI_INVALID_PARAMETER CredentialSize is NULL.
EFI_INVALID_PARAMETER CredentialList is NULL, if CredentialSize is not zero.
EFI_BUFFER_TOO_SMALL The size of CredentialList is too small for the specified data and the required size is returned in CredentialSize.
EFI_NO_MEDIA Smart Card or Reader of SCardHandle connection has been removed. A Disconnect should be performed.
This function signs an already hashed data with a Smart Card private key.

This function signs data, actually it is the hash of these data that is given to the function.

SignatureData buffer shall be big enough for signature. Signature size is function key size and key type.

Parameters:
[in] This Indicates a pointer to the calling context.
[in] SCardHandle Handle on Smart Card connection.
[in] KeyId Identifier of the key container, retrieved in a key index item of credentials.
[in] KeyType The key type, retrieved in a key type item of credentials.
[in] HashAlgorithm Hash algorithm used to hash the, one of:
  • EFI_HASH_ALGORITHM_SHA1_GUID
  • EFI_HASH_ALGORITHM_SHA256_GUID
  • EFI_HASH_ALGORITHM_SHA384_GUID
  • EFI_HASH_ALGORITHM_SHA512_GUID
[in] PaddingMethod Padding method used jointly with hash algorithm, one of:
  • EFI_PADDING_RSASSA_PKCS1V1P5_GUID
  • EFI_PADDING_RSASSA_PSS_GUID
[in] HashedData Hash of the data to sign. Size is function of the HashAlgorithm.
[out] SignatureData Resulting signature with private key KeyId. Size is function of the KeyType and key size retrieved in the associated key size item of credentials.
Return values:
EFI_SUCCESS The requested command completed successfully.
EFI_INVALID_PARAMETER This is NULL.
EFI_INVALID_PARAMETER No connection for SCardHandle value.
EFI_INVALID_PARAMETER KeyId is not valid.
EFI_INVALID_PARAMETER KeyType is not valid or not corresponding to KeyId.
EFI_INVALID_PARAMETER HashAlgorithm is NULL.
EFI_INVALID_PARAMETER HashAlgorithm is not valid.
EFI_INVALID_PARAMETER PaddingMethod is NULL.
EFI_INVALID_PARAMETER PaddingMethod is not valid.
EFI_INVALID_PARAMETER HashedData is NULL.
EFI_INVALID_PARAMETER SignatureData is NULL.
EFI_ACCESS_DENIED Operation not performed, conditions not fulfilled. PIN not verified.
EFI_NO_MEDIA Smart Card or Reader of SCardHandle connection has been removed. A Disconnect should be performed.
This function decrypts data with a PKI/RSA Smart Card private key.

The function decrypts some PKI/RSA encrypted data with private key securely stored into the Smart Card.

The KeyId must reference a key of type SC_EDGE_RSA_EXCHANGE.

Parameters:
[in] This Indicates a pointer to the calling context.
[in] SCardHandle Handle on Smart Card connection.
[in] KeyId Identifier of the key container, retrieved in a key index item of credentials.
[in] HashAlgorithm Hash algorithm used to hash the, one of:
  • EFI_HASH_ALGORITHM_SHA1_GUID
  • EFI_HASH_ALGORITHM_SHA256_GUID
  • EFI_HASH_ALGORITHM_SHA384_GUID
  • EFI_HASH_ALGORITHM_SHA512_GUID
[in] PaddingMethod Padding method used jointly with hash algorithm, one of:
  • EFI_PADDING_NONE_GUID
  • EFI_PADDING_RSAES_PKCS1V1P5_GUID
  • EFI_PADDING_RSAES_OAEP_GUID
[in] EncryptedSize Size of data to decrypt.
[in] EncryptedData Data to decrypt
[in,out] PlaintextSize On input, in bytes, the size of buffer to store the decrypted data. On output, in bytes, the size of buffer required to store the decrypted data.
[out] PlaintextData Buffer for decrypted data, padding removed.
Return values:
EFI_SUCCESS The requested command completed successfully.
EFI_INVALID_PARAMETER This is NULL.
EFI_INVALID_PARAMETER No connection for SCardHandle value.
EFI_INVALID_PARAMETER KeyId is not valid or associated key not of type SC_EDGE_RSA_EXCHANGE.
EFI_INVALID_PARAMETER HashAlgorithm is NULL.
EFI_INVALID_PARAMETER HashAlgorithm is not valid.
EFI_INVALID_PARAMETER PaddingMethod is NULL.
EFI_INVALID_PARAMETER PaddingMethod is not valid.
EFI_INVALID_PARAMETER EncryptedSize is 0.
EFI_INVALID_PARAMETER EncryptedData is NULL.
EFI_INVALID_PARAMETER PlaintextSize is NULL.
EFI_INVALID_PARAMETER PlaintextData is NULL.
EFI_ACCESS_DENIED Operation not performed, conditions not fulfilled. PIN not verified.
EFI_BUFFER_TOO_SMALL PlaintextSize is too small for the plaintext data and the required size is returned in PlaintextSize.
EFI_NO_MEDIA Smart Card or Reader of SCardHandle connection has been removed. A Disconnect should be performed.
This function performs a secret Diffie Hellman agreement calculation that would be used to derive a symmetric encryption / decryption key.

The function compute a DH agreement that should be diversified togenerate a symmetric key to proceed encryption or decryption.

The application and the Smart Card shall agree on the diversification process.

The KeyId must reference a key of one of the types: SC_EDGE_ECDH_256, SC_EDGE_ECDH_384 or SC_EDGE_ECDH_521.

Parameters:
[in] This Indicates a pointer to the calling context.
[in] SCardHandle Handle on Smart Card connection.
[in] KeyId Identifier of the key container, retrieved in a key index item of credentials.
[in] dataQx Public key x coordinate. Size is the same as key size for KeyId. Stored in big endian format.
[in] dataQy Public key y coordinate. Size is the same as key size for KeyId. Stored in big endian format.
[out] DHAgreement Buffer for DH agreement computed. Size must be bigger or equal to key size for KeyId.
Return values:
EFI_SUCCESS The requested command completed successfully.
EFI_INVALID_PARAMETER This is NULL.
EFI_INVALID_PARAMETER No connection for SCardHandle value.
EFI_INVALID_PARAMETER KeyId is not valid.
EFI_INVALID_PARAMETER dataQx is NULL.
EFI_INVALID_PARAMETER dataQy is NULL.
EFI_INVALID_PARAMETER DHAgreement is NULL.
EFI_ACCESS_DENIED Operation not performed, conditions not fulfilled. PIN not verified.
EFI_NO_MEDIA Smart Card or Reader of SCardHandle connection has been removed. A Disconnect should be performed.


Variable Documentation


Generated on Thu Sep 24 23:14:20 2015 for MdePkg[ALL] by  doxygen 1.5.7.1