globalplatform
Data Structures | Macros | Typedefs
security.h File Reference
#include "types.h"
Include dependency graph for security.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  OP201_SECURITY_INFO
 
struct  GP211_SECURITY_INFO
 
struct  OP201_DAP_BLOCK
 
struct  OP201_RECEIPT_DATA
 
struct  OP201_KEY_COMPONENT
 
struct  OP201_KEY_INFORMATION
 
struct  GP211_DAP_BLOCK
 
struct  GP211_RECEIPT_DATA
 
struct  GP211_KEY_COMPONENT
 
struct  GP211_KEY_INFORMATION
 

Macros

#define OP_201   201
 OpenPlatform specification 2.0.1' mode.
 
#define GP_211   211
 GlobalPlatform specification 2.1.1 mode.
 
#define GP211_SCP01   0x01
 Secure Channel Protocol '01'.
 
#define GP211_SCP02   0x02
 Secure Channel Protocol '02'.
 
#define GP211_SCP03   0x03
 Secure Channel Protocol '03'.
 
#define GP211_SCP11   0x11
 Secure Channel Protocol '11'.
 
#define GP211_SCP01_IMPL_i05   0x05
 
#define GP211_SCP01_IMPL_i15   0x15
 
#define GP211_SCP02_IMPL_i44   0x44
 
#define GP211_SCP02_IMPL_i45   0x45
 
#define GP211_SCP02_IMPL_i54   0x54
 
#define GP211_SCP02_IMPL_i55   0x55
 
#define GP211_SCP02_IMPL_i04   0x04
 
#define GP211_SCP02_IMPL_i05   0x05
 
#define GP211_SCP02_IMPL_i0A   0x0A
 
#define GP211_SCP02_IMPL_i0B   0x0B
 
#define GP211_SCP02_IMPL_i14   0x14
 
#define GP211_SCP02_IMPL_i15   0x15
 
#define GP211_SCP02_IMPL_i1A   0x1A
 
#define GP211_SCP02_IMPL_i1B   0x1B
 
#define GP211_SCP03_IMPL_i00   0x00
 
#define GP211_SCP03_IMPL_i10   0x10
 
#define GP211_SCP03_IMPL_i30   0x30
 
#define GP211_SCP03_IMPL_i20   0x20
 
#define GP211_SCP03_IMPL_i60   0x60
 
#define GP211_SCP03_IMPL_i70   0x70
 
#define GP211_SCP01_SECURITY_LEVEL_C_DEC_C_MAC   0x03
 Secure Channel Protocol '01': C-DECRYPTION and C-MAC.
 
#define GP211_SCP01_SECURITY_LEVEL_C_MAC   0x01
 Secure Channel Protocol '01': C-MAC.
 
#define GP211_SCP01_SECURITY_LEVEL_NO_SECURE_MESSAGING   0x00
 Secure Channel Protocol '01': No secure messaging expected.
 
#define GP211_SCP02_SECURITY_LEVEL_C_DEC_C_MAC_R_MAC   0x13
 Secure Channel Protocol '02': C-DECRYPTION, C-MAC and R-MAC.
 
#define GP211_SCP02_SECURITY_LEVEL_C_MAC_R_MAC   0x11
 Secure Channel Protocol '02': C-MAC and R-MAC.
 
#define GP211_SCP02_SECURITY_LEVEL_R_MAC   0x10
 Secure Channel Protocol '02': R-MAC. Used only with BEGIN R-MAC.
 
#define GP211_SCP02_SECURITY_LEVEL_C_DEC_C_MAC   0x03
 Secure Channel Protocol '02': C-DECRYPTION and C-MAC.
 
#define GP211_SCP02_SECURITY_LEVEL_C_MAC   0x01
 Secure Channel Protocol '02': C-MAC.
 
#define GP211_SCP02_SECURITY_LEVEL_NO_SECURE_MESSAGING   0x00
 Secure Channel Protocol '02': No secure messaging expected.
 
#define GP211_SCP03_SECURITY_LEVEL_C_DEC_C_MAC   0x03
 Secure Channel Protocol '03': C-Decryption and C-MAC.
 
#define GP211_SCP03_SECURITY_LEVEL_C_MAC   0x01
 Secure Channel Protocol '03': C-MAC.
 
#define GP211_SCP03_SECURITY_LEVEL_NO_SECURE_MESSAGING   0x00
 Secure Channel Protocol '03': No secure messaging expected.
 
#define GP211_SCP03_SECURITY_LEVEL_C_DEC_R_ENC_C_MAC_R_MAC   0x33
 Secure Channel Protocol '03': C-Decryption, C-MAC, R-MAC and R-Encryption.
 
#define GP211_SCP03_SECURITY_LEVEL_C_DEC_C_MAC_R_MAC   0x13
 Secure Channel Protocol '03': C-Decryption, C-MAC and R-MAC.
 
#define GP211_SCP03_SECURITY_LEVEL_C_DEC_C_MAC_R_ENC_R_MAC   0x33
 Secure Channel Protocol '03': C-Decryption, C-MAC, R-Encryption and R-MAC.
 
#define GP211_SCP03_SECURITY_LEVEL_C_MAC_R_MAC   0x11
 Secure Channel Protocol '03': C-MAC and R-MAC.
 
#define GP211_SCP03_SECURITY_LEVEL_R_MAC   0x10
 Secure Channel Protocol '03': R-MAC. Used only with BEGIN R-MAC.
 
#define GP211_SCP03_SECURITY_LEVEL_R_ENC_R_MAC   0x30
 Secure Channel Protocol '03': R-Encryption and R-MAC. Used only with BEGIN R-MAC.
 
#define GP211_SCP11_KEY_USAGE_QUALIFIER_C_MAC_R_MAC   0x34
 SCP11 key usage qualifier: C-MAC + R-MAC.
 
#define GP211_SCP11_KEY_USAGE_QUALIFIER_C_DEC_R_ENC_C_MAC_R_MAC   0x3C
 SCP11 key usage qualifier: C-DECRYPTION + R-ENCRYPTION + C-MAC + R-MAC.
 
#define GP211_KEY_TYPE_RSA   0xF0
 'F0' Internal API selector for RSA (context-specific; not a key component tag).
 
#define GP211_KEY_TYPE_ECC   0xF1
 'F1' Internal key type for ECC.
 
#define GP211_KEY_TYPE_RSA_PUB_E   0xA0
 'A0' RSA Public Key - public exponent e component (clear text)
 
#define GP211_KEY_TYPE_RSA_PUB_N   0xA1
 'A1' RSA Public Key - modulus N component (clear text).
 
#define GP211_KEY_TYPE_RSA_PRIV_ENC_N   0xA2
 'A2' RSA Private Key - modulus N component (encrypted)
 
#define GP211_KEY_TYPE_RSA_PRIV_D   0xA3
 'A3' RSA Private Key - private exponent d component
 
#define GP211_KEY_TYPE_RSA_PRIV_P   0xA4
 'A4' RSA Private Key - Chinese Remainder P component
 
#define GP211_KEY_TYPE_RSA_PRIV_Q   0xA5
 'A5' RSA Private Key - Chinese Remainder Q component
 
#define GP211_KEY_TYPE_RSA_PRIV_PQ   0xA6
 'A6' RSA Private Key - Chinese Remainder PQ component
 
#define GP211_KEY_TYPE_RSA_PRIV_DP1   0xA7
 'A7' RSA Private Key - Chinese Remainder DP1 component
 
#define GP211_KEY_TYPE_RSA_PRIV_DQ1   0xA8
 'A8' RSA Private Key - Chinese Remainder DQ1 component
 
#define GP211_KEY_TYPE_ECC_PUBLIC_OR_PRIVATE   0xB0
 'B0' ECC public or private key component.
 
#define GP211_KEY_TYPE_ECC_PRIVATE   0xB1
 'B1' ECC private key component.
 
#define GP211_KEY_TYPE_ECC_FIELD_PARAMETER_P   0xB2
 'B2' ECC field parameter P component.
 
#define GP211_KEY_TYPE_ECC_FIELD_PARAMETER_A   0xB3
 'B3' ECC field parameter A component.
 
#define GP211_KEY_TYPE_ECC_FIELD_PARAMETER_B   0xB4
 'B4' ECC field parameter B component.
 
#define GP211_KEY_TYPE_ECC_FIELD_PARAMETER_G   0xB5
 'B5' ECC field parameter G component.
 
#define GP211_KEY_TYPE_ECC_FIELD_PARAMETER_N   0xB6
 'B6' ECC field parameter N component.
 
#define GP211_KEY_TYPE_ECC_SM2_PUBLIC_OR_PRIVATE   0xB7
 'B7' SM2 public or private key component.
 
#define GP211_KEY_TYPE_ECC_KEY_PARAMETER_REFERENCE   0xF0
 'F0' ECC key parameter reference component tag (same codepoint as GP211_KEY_TYPE_RSA, context-dependent).
 
#define GP211_KEY_TYPE_ECC_KEY_PARAMETER_REFERENCE_P256   0x00
 '00' NIST P-256.
 
#define GP211_KEY_TYPE_ECC_KEY_PARAMETER_REFERENCE_P384   0x01
 '01' NIST P-384.
 
#define GP211_KEY_TYPE_ECC_KEY_PARAMETER_REFERENCE_P521   0x02
 '02' NIST P-521.
 
#define GP211_KEY_TYPE_ECC_KEY_PARAMETER_REFERENCE_BRAINPOOLP256R1   0x03
 '03' brainpoolP256r1.
 
#define GP211_KEY_TYPE_ECC_KEY_PARAMETER_REFERENCE_BRAINPOOLP256T1   0x04
 '04' brainpoolP256t1.
 
#define GP211_KEY_TYPE_ECC_KEY_PARAMETER_REFERENCE_BRAINPOOLP384R1   0x05
 '05' brainpoolP384r1.
 
#define GP211_KEY_TYPE_ECC_KEY_PARAMETER_REFERENCE_BRAINPOOLP384T1   0x06
 '06' brainpoolP384t1.
 
#define GP211_KEY_TYPE_ECC_KEY_PARAMETER_REFERENCE_BRAINPOOLP512R1   0x07
 '07' brainpoolP512r1.
 
#define GP211_KEY_TYPE_ECC_KEY_PARAMETER_REFERENCE_BRAINPOOLP512T1   0x08
 '08' brainpoolP512t1.
 
#define GP211_KEY_TYPE_ECC_KEY_PARAMETER_REFERENCE_SM2P256V1   0x09
 '09' sm2p256v1.
 
#define GP211_KEY_TYPE_3DES   0x81
 Reserved (triple DES).
 
#define GP211_KEY_TYPE_DES   0x80
 '80' DES mode (EBC/CBC) implicitly known.
 
#define GP211_KEY_TYPE_3DES_CBC   0x82
 '82' Triple DES in CBC mode.
 
#define GP211_KEY_TYPE_DES_ECB   0x83
 '83' DES in ECB mode.
 
#define GP211_KEY_TYPE_DES_CBC   0x84
 '84' DES in CBC mode.
 
#define GP211_KEY_TYPE_PSK_TLS   0x85
 '85' Pre-Shared Key for Transport Layer Security
 
#define GP211_KEY_TYPE_AES   0x88
 '88' AES (16, 24, or 32 long keys)
 
#define GP211_KEY_TYPE_SM4   0x89
 '89' SM4 (16 bytes)
 
#define OP201_SECURITY_LEVEL_ENC_MAC   0x03
 Command messages are signed and encrypted.
 
#define OP201_SECURITY_LEVEL_MAC   0x01
 Command messages are signed.
 
#define OP201_SECURITY_LEVEL_PLAIN   0x00
 Command messages are plain text.
 
#define OP201_KEY_TYPE_RSA   0xF0
 'F0' Internal key type for a RSA.
 
#define OP201_KEY_TYPE_RSA_PUP_N   0xA1
 'A1' RSA Public Key - modulus N component (clear text).
 
#define OP201_KEY_TYPE_RSA_PUP_E   0xA0
 'A0' RSA Public Key - public exponent e component (clear text)
 
#define OP201_KEY_TYPE_DES   0x80
 DES (ECB/CBC) key.
 
#define OP201_KEY_TYPE_DES_ECB   0x81
 DES ECB.
 
#define OP201_KEY_TYPE_DES_CBC   0x82
 DES CBC.
 
#define GP211_RECEIPT_MAX_LENGTH   512
 Maximum receipt length.
 
#define GP211_RECEIPT_SD_UNIQUE_DATA_MAX_LENGTH   255
 Maximum SD unique data length in confirmation data.
 
#define GP211_RECEIPT_TOKEN_IDENTIFIER_MAX_LENGTH   255
 Maximum token identifier length in confirmation data.
 
#define GP211_RECEIPT_TOKEN_DATA_DIGEST_MAX_LENGTH   255
 Maximum token data digest length in confirmation data.
 

Typedefs

typedef struct OP201_DAP_BLOCK OP201_RSA_DAP_BLOCK
 
typedef struct OP201_DAP_BLOCK OP201_3DES_DAP_BLOCK
 
typedef struct GP211_DAP_BLOCK GP211_RSA_DAP_BLOCK
 
typedef struct GP211_DAP_BLOCK GP211_3DES_DAP_BLOCK
 

Detailed Description

This file contains security related definitions.

Macro Definition Documentation

◆ GP211_SCP01_IMPL_i05

#define GP211_SCP01_IMPL_i05   0x05

Secure Channel Protocol '01': "i" '05': Initiation mode explicit, C-MAC on modified APDU, ICV set to zero, no ICV encryption, 3 Secure Channel Keys

◆ GP211_SCP01_IMPL_i15

#define GP211_SCP01_IMPL_i15   0x15

Secure Channel Protocol '01': "i" '15': Initiation mode explicit, C-MAC on modified APDU, ICV set to zero, ICV encryption, 3 Secure Channel Keys

◆ GP211_SCP02_IMPL_i04

#define GP211_SCP02_IMPL_i04   0x04

Secure Channel Protocol '02': "i" '04': Initiation mode explicit, C-MAC on modified APDU, ICV set to zero, no ICV encryption, 1 Secure Channel base key, unspecified card challenge generation method

◆ GP211_SCP02_IMPL_i05

#define GP211_SCP02_IMPL_i05   0x05

Secure Channel Protocol '02': "i" '05': Initiation mode explicit, C-MAC on modified APDU, ICV set to zero, no ICV encryption, 3 Secure Channel Keys, unspecified card challenge generation method

◆ GP211_SCP02_IMPL_i0A

#define GP211_SCP02_IMPL_i0A   0x0A

Secure Channel Protocol '02': "i" '0A': Initiation mode implicit, C-MAC on unmodified APDU, ICV set to MAC over AID, no ICV encryption, 1 Secure Channel base key

◆ GP211_SCP02_IMPL_i0B

#define GP211_SCP02_IMPL_i0B   0x0B

Secure Channel Protocol '02': "i" '0B': Initiation mode implicit, C-MAC on unmodified APDU, ICV set to MAC over AID, no ICV encryption, 3 Secure Channel Keys

◆ GP211_SCP02_IMPL_i14

#define GP211_SCP02_IMPL_i14   0x14

Secure Channel Protocol '02': "i" '14': Initiation mode explicit, C-MAC on modified APDU, ICV set to zero, ICV encryption for CMAC session, 1 Secure Channel base key, unspecified card challenge generation method

◆ GP211_SCP02_IMPL_i15

#define GP211_SCP02_IMPL_i15   0x15

Secure Channel Protocol '02': "i" '15': Initiation mode explicit, C-MAC on modified APDU, ICV set to zero, ICV encryption for CMAC session, 3 Secure Channel Keys, unspecified card challenge generation method

◆ GP211_SCP02_IMPL_i1A

#define GP211_SCP02_IMPL_i1A   0x1A

Secure Channel Protocol '02': "i" '1A': Initiation mode implicit, C-MAC on unmodified APDU, ICV set to MAC over AID, ICV encryption for C-MAC session, 1 Secure Channel base key

◆ GP211_SCP02_IMPL_i1B

#define GP211_SCP02_IMPL_i1B   0x1B

Secure Channel Protocol '02': "i" '1B': Initiation mode implicit, C-MAC on unmodified APDU, ICV set to MAC over AID, ICV encryption for C-MAC session, 3 Secure Channel Keys

◆ GP211_SCP02_IMPL_i44

#define GP211_SCP02_IMPL_i44   0x44

Secure Channel Protocol '02': "i" = '44': Initiation mode explicit, C-MAC on modified APDU, ICV set to zero, no ICV encryption, 1 Secure Channel base key, well-known pseudo-random algorithm (card challenge),

◆ GP211_SCP02_IMPL_i45

#define GP211_SCP02_IMPL_i45   0x45

Secure Channel Protocol '02': "i" = '45': Initiation mode explicit, C-MAC on modified APDU, ICV set to zero, no ICV encryption, 3 Secure Channel Keys, well-known pseudo-random algorithm (card challenge),

◆ GP211_SCP02_IMPL_i54

#define GP211_SCP02_IMPL_i54   0x54

Secure Channel Protocol '02': "i" = '54': Initiation mode explicit, C-MAC on modified APDU, ICV set to zero, ICV encryption for C-MAC session, 1 Secure Channel base key, well-known pseudo-random algorithm (card challenge),

◆ GP211_SCP02_IMPL_i55

#define GP211_SCP02_IMPL_i55   0x55

Secure Channel Protocol '02': "i" = '55': Initiation mode explicit, C-MAC on modified APDU, ICV set to zero, ICV encryption for C-MAC session, 3 Secure Channel Keys, well-known pseudo-random algorithm (card challenge).�

◆ GP211_SCP03_IMPL_i00

#define GP211_SCP03_IMPL_i00   0x00

Secure Channel Protocol '03': "i" '00': Random card challenge, No R-MAC, no R-ENCRYPTION.

◆ GP211_SCP03_IMPL_i10

#define GP211_SCP03_IMPL_i10   0x10

Secure Channel Protocol '03': "i" '10': Pseudo-random card challenge, no R-MAC support, no R-ENCRYPTION support.

◆ GP211_SCP03_IMPL_i20

#define GP211_SCP03_IMPL_i20   0x20

Secure Channel Protocol '03': "i" '20': Random card challenge, R-MAC support, no R-ENCRYPTION support.

◆ GP211_SCP03_IMPL_i30

#define GP211_SCP03_IMPL_i30   0x30

Secure Channel Protocol '03': "i" '30': Pseudo-random card challenge, R-MAC support, no R-ENCRYPTION support.

◆ GP211_SCP03_IMPL_i60

#define GP211_SCP03_IMPL_i60   0x60

Secure Channel Protocol '03': "i" '60': Random card challenge, R-MAC support, R-ENCRYPTION support.

◆ GP211_SCP03_IMPL_i70

#define GP211_SCP03_IMPL_i70   0x70

Secure Channel Protocol '03': "i" '70': Pseudo-random card challenge, R_MAC, support, R-ENCRYPTION support.