uFCoder 2.58
Loading...
Searching...
No Matches
Mifare Plus specific commands

Functions specific to Mifare Plus cards. More...

Functions

UFR_STATUS DL_API MFP_WritePerso (uint16_t address, IN uint8_t *data)
 
UFR_STATUS DL_API MFP_CommitPerso (void)
 
UFR_STATUS DL_API MFP_PersonalizationMinimal (IN uint8_t *card_master_key, IN uint8_t *card_config_key, IN uint8_t *level_2_switch_key, IN uint8_t *level_3_switch_key, IN uint8_t *level_1_auth_key, IN uint8_t *select_vc_key, IN uint8_t *prox_chk_key, IN uint8_t *vc_poll_enc_key, IN uint8_t *vc_poll_mac_key)
 
UFR_STATUS DL_API MFP_SwitchToSecurityLevel3 (uint8_t key_index)
 
UFR_STATUS DL_API MFP_SwitchToSecurityLevel3_PK (IN uint8_t *aes_key)
 
UFR_STATUS DL_API MFP_AesAuthSecurityLevel1 (uint8_t key_index)
 
UFR_STATUS DL_API MFP_AesAuthSecurityLevel1_PK (IN uint8_t *aes_key)
 
UFR_STATUS DL_API MFP_ChangeMasterKey (uint8_t key_index, IN uint8_t *new_key)
 
UFR_STATUS DL_API MFP_ChangeMasterKey_PK (IN uint8_t *old_key, IN uint8_t *new_key)
 
UFR_STATUS DL_API MFP_ChangeMasterKeySamKey (uint8_t key_index, uint8_t new_key_index)
 
UFR_STATUS DL_API MFP_ChangeConfigurationKey (uint8_t key_index, IN uint8_t *new_key)
 
UFR_STATUS DL_API MFP_ChangeConfigurationKey_PK (IN uint8_t *old_key, IN uint8_t *new_key)
 
UFR_STATUS DL_API MFP_ChangeConfigurationKeySamKey (uint8_t key_index, uint8_t new_key_index)
 
UFR_STATUS DL_API MFP_FieldConfigurationSet (uint8_t configuration_key_index, uint8_t rid_use, uint8_t prox_check_use)
 
UFR_STATUS DL_API MFP_FieldConfigurationSet_PK (IN uint8_t *configuration_key, uint8_t rid_use, uint8_t prox_check_use)
 
UFR_STATUS DL_API MFP_FieldConfigurationSetSamKey (uint8_t configuration_key_index, uint8_t rid_use, uint8_t prox_check_use)
 
UFR_STATUS DL_API MFP_ChangeSectorKey (uint8_t sector_nr, uint8_t auth_mode, uint8_t key_index, IN uint8_t *new_key)
 
UFR_STATUS DL_API MFP_ChangeSectorKey_PK (uint8_t sector_nr, uint8_t auth_mode, IN uint8_t *old_key, IN uint8_t *new_key)
 
UFR_STATUS DL_API MFP_ChangeSectorKeySamKey (uint8_t sector_nr, uint8_t auth_mode, uint8_t key_index, uint8_t new_key_index)
 
UFR_STATUS DL_API MFP_GetUid (uint8_t key_index_vc_poll_enc_key, uint8_t key_index_vc_poll_mac_key, OUT uint8_t *uid, VAR uint8_t *uid_len)
 
UFR_STATUS DL_API MFP_GetUidSamKey (uint8_t key_index_vc_poll_enc_key, uint8_t key_index_vc_poll_mac_key, OUT uint8_t *uid, VAR uint8_t *uid_len)
 
UFR_STATUS DL_API MFP_GetUid_PK (IN uint8_t *vc_poll_enc_key, IN uint8_t *vc_poll_mac_key, OUT uint8_t *uid, VAR uint8_t *uid_len)
 
UFR_STATUS DL_API MFP_ChangeVcPollingEncKey (uint8_t configuration_key_index, IN uint8_t *new_key)
 
UFR_STATUS DL_API MFP_ChangeVcPollingEncKeySamKey (uint8_t configuration_key_index, uint8_t new_key_index)
 
UFR_STATUS DL_API MFP_ChangeVcPollingEncKey_PK (IN uint8_t *configuration_key, IN uint8_t *new_key)
 
UFR_STATUS DL_API MFP_ChangeVcPollingMacKey (uint8_t configuration_key_index, IN uint8_t *new_key)
 
UFR_STATUS DL_API MFP_ChangeVcPollingMacKeySamKey (uint8_t configuration_key_index, uint8_t new_key_index)
 
UFR_STATUS DL_API MFP_ChangeVcPollingMacKey_PK (IN uint8_t *configuration_key, IN uint8_t *new_key)
 
UFR_STATUS DL_API ULC_ExternalAuth_PK (IN uint8_t *key)
 

Detailed Description

Functions specific to Mifare Plus cards.

Function Documentation

◆ MFP_WritePerso()

UFR_STATUS DL_API MFP_WritePerso ( uint16_t address,
IN uint8_t * data )

Security level 0 command. Function is used to change the data and AES keys from the initial delivery configuration to a customer specific value.

Parameters
addressNumber of block or key
dataValue of data or AES key
Returns
Operation status

◆ MFP_CommitPerso()

UFR_STATUS DL_API MFP_CommitPerso ( void )

Security level 0 command. Function is used to finalize the personalization and switch up to security level 1.

Returns
Operation status

◆ MFP_PersonalizationMinimal()

UFR_STATUS DL_API MFP_PersonalizationMinimal ( IN uint8_t * card_master_key,
IN uint8_t * card_config_key,
IN uint8_t * level_2_switch_key,
IN uint8_t * level_3_switch_key,
IN uint8_t * level_1_auth_key,
IN uint8_t * select_vc_key,
IN uint8_t * prox_chk_key,
IN uint8_t * vc_poll_enc_key,
IN uint8_t * vc_poll_mac_key )

Security level 0 command. Function is used for card personalization. The minimum number of AES keys is entered into the card. There are card master key, card configuration key, key for switch to security level 2, key for switch to security level 3, security level 1 authentication key, virtual card select key, proximity check key, VC polling ENC and VC poling MAC key. Keys can not be changed at security level 1. Other keys that are not personalized will have value 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF (16 x 0xFF)

Parameters
card_master_key
card_config_key
level_2_switch_key
level_3_switch_key
level_1_auth_key
select_vc_key
prox_chk_key
vc_poll_enc_key
vc_poll_mac_key
Returns
Operation status

◆ MFP_SwitchToSecurityLevel3()

UFR_STATUS DL_API MFP_SwitchToSecurityLevel3 ( uint8_t key_index)

Security level 1 or 2 command. Function is used to switch to security level 3.

Parameters
key_indexordinary number of AES key stored into reader (0 - 15)
Returns
Operation status

◆ MFP_SwitchToSecurityLevel3_PK()

UFR_STATUS DL_API MFP_SwitchToSecurityLevel3_PK ( IN uint8_t * aes_key)

Provided Key mode (PK) Security level 1 or 2 command. Function is used to switch to security level 3.

Parameters
aes_keypointer to 16 byte array containing the AES key
Returns
Operation status

◆ MFP_AesAuthSecurityLevel1()

UFR_STATUS DL_API MFP_AesAuthSecurityLevel1 ( uint8_t key_index)

Security level 1 command. Security level 1 offers the same functionality as a MIFARE Classic card. Function is used to optional AES authentication.

Parameters
key_indexordinary number of AES key stored into reader (0 - 15)
Returns
Operation status

◆ MFP_AesAuthSecurityLevel1_PK()

UFR_STATUS DL_API MFP_AesAuthSecurityLevel1_PK ( IN uint8_t * aes_key)

Provided Key mode (PK) Security level 1 command. Security level 1 offers the same functionality as a MIFARE Classic card. Function is used to optional AES authentication.

Parameters
aes_keypointer to 16 byte array containing the AES key
Returns
Operation status

◆ MFP_ChangeMasterKey()

UFR_STATUS DL_API MFP_ChangeMasterKey ( uint8_t key_index,
IN uint8_t * new_key )

Security level 3 command. The function is used to change the AES card master key value.

Parameters
key_indexordinary number of current master key stored into reader (0 - 15) or in SAM (1 - 127)
new_keypointer to 16 byte array containing the new master key
Returns
Operation status

◆ MFP_ChangeMasterKey_PK()

UFR_STATUS DL_API MFP_ChangeMasterKey_PK ( IN uint8_t * old_key,
IN uint8_t * new_key )

Provided Key mode (PK) Security level 3 command. The function is used to change the AES card master key value.

Parameters
old_keypointer to 16 byte array containing the current master key *new key pointer to 16 byte array containing the new master key
new_keypointer to 16 byte array containing the new master key
Returns
Operation status

◆ MFP_ChangeMasterKeySamKey()

UFR_STATUS DL_API MFP_ChangeMasterKeySamKey ( uint8_t key_index,
uint8_t new_key_index )

*only uFR CS with SAM support Security level 3 command. The function is used to change the AES card master key value.

Parameters
key_indexordinary number of current master key stored into reader (0 - 15) or in SAM (1 - 127)
new_key_indexkey index from which the new master key will be set (0 - 15) or in SAM (1 - 127)
Returns
Operation status

◆ MFP_ChangeConfigurationKey()

UFR_STATUS DL_API MFP_ChangeConfigurationKey ( uint8_t key_index,
IN uint8_t * new_key )

Security level 3 command. The function is used to change the AES card configuration key value.

Parameters
key_indexordinary number of current configuration key stored into reader (0 - 15) or in SAM (1 - 127)
new_keypointer to 16 byte array containing the new configuration key
Returns
Operation status

◆ MFP_ChangeConfigurationKey_PK()

UFR_STATUS DL_API MFP_ChangeConfigurationKey_PK ( IN uint8_t * old_key,
IN uint8_t * new_key )

Provided Key mode (PK) Security level 3 command. The function is used to change the AES card configuration key value.

Parameters
old_keypointer to 16 byte array containing the current configuration key
new_keypointer to 16 byte array containing the new configuration key
Returns
Operation status

◆ MFP_ChangeConfigurationKeySamKey()

UFR_STATUS DL_API MFP_ChangeConfigurationKeySamKey ( uint8_t key_index,
uint8_t new_key_index )

*only uFR CS with SAM support Security level 3 command. The function is used to change the AES card configuration key value.

Parameters
key_indexordinary number of current configuration key stored into reader (0 - 15) or in SAM (1 - 127)
new_key_indexkey index from which the new configuration key will be set (0 - 15) or in SAM (1 - 127)
Returns
Operation status

◆ MFP_FieldConfigurationSet()

UFR_STATUS DL_API MFP_FieldConfigurationSet ( uint8_t configuration_key_index,
uint8_t rid_use,
uint8_t prox_check_use )

Security level 3 command. Function is used for definition of using Random ID and Proximity check options. Authentication with AES card configuration key required.

Parameters
configuration_key_indexordinary number of configuration key stored into reader (0 - 15) *configuration_key pointer to 16 byte array containing the configuration key
rid_use1 - Randnom ID enabled, 0 - Random ID disabled
prox_check_use1- Proximity check is mandatory, 0 - Proximity check is not mandatory
Returns
Operation status

◆ MFP_FieldConfigurationSet_PK()

UFR_STATUS DL_API MFP_FieldConfigurationSet_PK ( IN uint8_t * configuration_key,
uint8_t rid_use,
uint8_t prox_check_use )

Provided Key mode (PK) Security level 3 command. Function is used for definition of using Random ID and Proximity check options. Authentication with AES card configuration key required.

Parameters
configuration_keypointer to 16 byte array containing the configuration key
rid_use1 - Randnom ID enabled, 0 - Random ID disabled
prox_check_use1- Proximity check is mandatory, 0 - Proximity check is not mandatory
Returns
Operation status

◆ MFP_FieldConfigurationSetSamKey()

UFR_STATUS DL_API MFP_FieldConfigurationSetSamKey ( uint8_t configuration_key_index,
uint8_t rid_use,
uint8_t prox_check_use )

*only uFR CS with SAM support Security level 3 command. Function is used for definition of using Random ID and Proximity check options. Authentication with AES card configuration key required.

Parameters
configuration_key_indexordinary number of configuration key stored into reader (0 - 15)
rid_use1 - Randnom ID enabled, 0 - Random ID disabled
prox_check_use1- Proximity check is mandatory, 0 - Proximity check is not mandatory
Returns
Operation status

◆ MFP_ChangeSectorKey()

UFR_STATUS DL_API MFP_ChangeSectorKey ( uint8_t sector_nr,
uint8_t auth_mode,
uint8_t key_index,
IN uint8_t * new_key )

Security level 3 command. In order to access the block in sector data, AES authentication is needed. Each sector has two AES keys that can be used for authentication (Key A and Key B). Default value if key is not personalized is 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF (16 x 0xFF). For linear read part of card, enter the same value of sector keys for all sectors which will be read at once.

Parameters
sector_nrordinary number of sector (0 - 31) for 2K card, or (0 - 39) for 4K card.
auth_modeMIFARE_AUTHENT1A for Key A or MIFARE_AUTHENT1B for Key B auth_mode_pk MIFARE_PLUS_AES_AUTHENT1A for Key A or MIFARE_PLUS_AES_AUTHENT1B for Key B
key_indexordinary number of current sector key stored into reader (0 - 15)
new_keypointer to 16 byte array containing the new sector key (A or B)
Returns
Operation status

◆ MFP_ChangeSectorKey_PK()

UFR_STATUS DL_API MFP_ChangeSectorKey_PK ( uint8_t sector_nr,
uint8_t auth_mode,
IN uint8_t * old_key,
IN uint8_t * new_key )

Provided Key mode (PK) Security level 3 command. In order to access the block in sector data, AES authentication is needed. Each sector has two AES keys that can be used for authentication (Key A and Key B). Default value if key is not personalized is 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF (16 x 0xFF). For linear read part of card, enter the same value of sector keys for all sectors which will be read at once.

Parameters
sector_nrordinary number of sector (0 - 31) for 2K card, or (0 - 39) for 4K card.
auth_modeMIFARE_AUTHENT1A for Key A or MIFARE_AUTHENT1B for Kye B auth_mode_pk MIFARE_PLUS_AES_AUTHENT1A for Key A or MIFARE_PLUS_AES_AUTHENT1B for Key B
old_keypointer to 16 byte array containing the current sector key (A or B)
new_keypointer to 16 byte array containing the new sector key (A or B)
Returns
Operation status

◆ MFP_ChangeSectorKeySamKey()

UFR_STATUS DL_API MFP_ChangeSectorKeySamKey ( uint8_t sector_nr,
uint8_t auth_mode,
uint8_t key_index,
uint8_t new_key_index )

*only uFR CS with SAM support Security level 3 command. In order to access the block in sector data, AES authentication is needed. Each sector has two AES keys that can be used for authentication (Key A and Key B). Default value if key is not personalized is 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF (16 x 0xFF). For linear read part of card, enter the same value of sector keys for all sectors which will be read at once.

Parameters
sector_nrordinary number of sector (0 - 31) for 2K card, or (0 - 39) for 4K card.
auth_modeMIFARE_AUTHENT1A for Key A or MIFARE_AUTHENT1B for Kye B auth_mode_pk MIFARE_PLUS_AES_AUTHENT1A for Key A or MIFARE_PLUS_AES_AUTHENT1B for Key B
key_indexordinary number of current sector key stored into reader (0 - 15)
new_key_indexpointer to 16 byte array containing the new sector key (A or B)
Returns
Operation status

◆ MFP_GetUid()

UFR_STATUS DL_API MFP_GetUid ( uint8_t key_index_vc_poll_enc_key,
uint8_t key_index_vc_poll_mac_key,
OUT uint8_t * uid,
VAR uint8_t * uid_len )

Security level 3 command. Function is used to read UID if Random ID is enabled. Authentication with AES VC Polling ENC Key and VC Polling MAC Key is mandatory.

Parameters
key_index_vc_poll_enc_keyordinary number of VC polling ENC key stored into reader (0 - 15)
key_index_vc_poll_mac_keyordinary number of VC polling MAC key stored into reader (0 - 15)
uidpointer to byte array containing the card UID
uid_lenpointer to UID length variable
Returns
Operation status

◆ MFP_GetUidSamKey()

UFR_STATUS DL_API MFP_GetUidSamKey ( uint8_t key_index_vc_poll_enc_key,
uint8_t key_index_vc_poll_mac_key,
OUT uint8_t * uid,
VAR uint8_t * uid_len )

*only uFR CS with SAM support Security level 3 command. Function is used to read UID if Random ID is enabled. Authentication with AES VC Polling ENC Key and VC Polling MAC Key is mandatory.

Parameters
key_index_vc_poll_enc_keyordinary number of VC polling ENC key stored into reader (0 - 15)
key_index_vc_poll_mac_keyordinary number of VC polling MAC key stored into reader (0 - 15)
uidpointer to byte array containing the card UID
uid_lenpointer to UID length variable
Returns
Operation status

◆ MFP_GetUid_PK()

UFR_STATUS DL_API MFP_GetUid_PK ( IN uint8_t * vc_poll_enc_key,
IN uint8_t * vc_poll_mac_key,
OUT uint8_t * uid,
VAR uint8_t * uid_len )

Provided Key mode (PK) Security level 3 command. Function is used to read UID if Random ID is enabled. Authentication with AES VC Polling ENC Key and VC Polling MAC Key is mandatory.

Parameters
vc_poll_enc_keypointer to 16 byte array containing VC polling ENC key
vc_poll_mac_keypointer to 16 byte array containing VC polling MAC key
uidpointer to byte array containing the card UID
uid_lenpointer to UID length variable
Returns
Operation status

◆ MFP_ChangeVcPollingEncKey()

UFR_STATUS DL_API MFP_ChangeVcPollingEncKey ( uint8_t configuration_key_index,
IN uint8_t * new_key )

Security level 3 command. The function is used to change the AES VC polling ENC key value. Authentication with AES card configuration key is required.

Parameters
configuration_key_indexordinary number of card configuration key stored into reader (0 - 15)
new_keypointer to 16 byte array containing new VC Polling ENC key
Returns
Operation status

◆ MFP_ChangeVcPollingEncKeySamKey()

UFR_STATUS DL_API MFP_ChangeVcPollingEncKeySamKey ( uint8_t configuration_key_index,
uint8_t new_key_index )

*only uFR CS with SAM support Security level 3 command. The function is used to change the AES VC polling ENC key value. Authentication with AES card configuration key is required.

Parameters
configuration_key_indexordinary number of card configuration key stored into reader (0 - 15)
new_key_indexpointer to 16 byte array containing new VC Polling ENC key
Returns
Operation status

◆ MFP_ChangeVcPollingEncKey_PK()

UFR_STATUS DL_API MFP_ChangeVcPollingEncKey_PK ( IN uint8_t * configuration_key,
IN uint8_t * new_key )

Provided Key mode (PK) Security level 3 command. The function is used to change the AES VC polling ENC key value. Authentication with AES card configuration key is required.

Parameters
configuration_keypointer to 16 byte array containing card configuration key
new_keypointer to 16 byte array containing new VC Polling ENC key
Returns
Operation status

◆ MFP_ChangeVcPollingMacKey()

UFR_STATUS DL_API MFP_ChangeVcPollingMacKey ( uint8_t configuration_key_index,
IN uint8_t * new_key )

Security level 3 command. The function is used to change the AES VC polling MAC key value. Authentication with AES card configuration key is required.

Parameters
configuration_key_indexpointer to 16 byte array containing card configuration key
new_keypointer to 16 byte array containing new VC Polling MAC key
Returns
Operation status

◆ MFP_ChangeVcPollingMacKeySamKey()

UFR_STATUS DL_API MFP_ChangeVcPollingMacKeySamKey ( uint8_t configuration_key_index,
uint8_t new_key_index )

*only uFR CS with SAM support Security level 3 command. The function is used to change the AES VC polling MAC key value. Authentication with AES card configuration key is required.

Parameters
configuration_key_indexpointer to 16 byte array containing card configuration key
new_key_indexpointer to 16 byte array containing new VC Polling MAC key
Returns
Operation status

◆ MFP_ChangeVcPollingMacKey_PK()

UFR_STATUS DL_API MFP_ChangeVcPollingMacKey_PK ( IN uint8_t * configuration_key,
IN uint8_t * new_key )

Provided Key mode (PK) Security level 3 command. The function is used to change the AES VC polling MAC key value. Authentication with AES card configuration key is required.

Parameters
configuration_keypointer to 16 byte array containing card configuration key
new_keypointer to 16 byte array containing new VC Polling MAC key
Returns
Operation status

◆ ULC_ExternalAuth_PK()

UFR_STATUS DL_API ULC_ExternalAuth_PK ( IN uint8_t * key)

Provided Key mode (PK) The 3DES authentication is executed using the transceive mode of reader. Pointer to array which contains 2K 3DES key (16 bytes ) is parameter of this functions. Function don’t use the key which stored into reader. DES algorithm for authentication executes in host device, not in reader. After authentication, the reader leaves the transceive mode, but stay in mode where the HALT command doesn’t sending to the card. In this mode user can use functions for block and linear reading or writing. Reader stay into this mode, until the error during reading data from card, or writing data into card occurs, or until the user calls function card_halt_enable().

Parameters
keypointer to data array of 16 bytes which contains 2K 3DES key
Returns
Operation status