Skip to content
  1. Nov 13, 2018
  2. Nov 08, 2018
    • developer4's avatar
      version 4.3.16 · bb3c6f55
      developer4 authored
      Added functions for PIN and PUK codes manipulation in a JCApp cards:
      UFR_STATUS JCAppLogin(uint8_t SO, uint8_t *pin, uint8_t pinSize);
      UFR_STATUS JCAppGetPinTriesRemaining(dl_sec_code_t secureCodeType, uint16_t *triesRemaining);
      UFR_STATUS JCAppPinChange(dl_sec_code_t secureCodeType, uint8_t *newPin, uint8_t newPinSize);
      UFR_STATUS JCAppPinUnblock(uint8_t SO, uint8_t *puk, uint8_t pukSize);
      
      Added functions for asymmetric cryptography key pairs generation and manipulation in a JCApp cards:
      UFR_STATUS JCAppGenerateKeyPair(uint8_t key_type, uint8_t key_index, uint8_t key_designator, uint16_t key_bit_len, const uint8_t *params, uint16_t params_size);
      UFR_STATUS JCAppGetRsaPublicKey(uint8_t key_index, uint8_t *modulus, uint16_t *modulus_size, uint8_t *exponent, uint16_t *exponent_size);
      UFR_STATUS JCAppGetEcPublicKey(uint8_t key_index, uint8_t *keyW, uint16_t *kexWSize, uint8_t *field, uint16_t *field_size, uint8_t *ab , uint16_t *ab_size, uint8_t *g, uint16_t *g_size, uint8_t *r, uint16_t *r_size, uint16_t *k, uint16_t *key_size_bits, uint16_t *key_designator);
      
      Added multi reader support functions:
      UFR_STATUS JCAppLoginM(UFR_HANDLE hndUFR, uint8_t SO, uint8_t *pin, uint8_t pinSize);
      UFR_STATUS JCAppGetPinTriesRemainingM(UFR_HANDLE hndUFR, dl_sec_code_t secureCodeType, uint16_t *triesRemaining);
      UFR_STATUS JCAppPinChangeM(UFR_HANDLE hndUFR, dl_sec_code_t secureCodeType, uint8_t *newPin, uint8_t newPinSize);
      UFR_STATUS JCAppPinUnblockM(UFR_HANDLE hndUFR, uint8_t SO, uint8_t *puk, uint8_t pukSize);
      UFR_STATUS JCAppGenerateKeyPairM(UFR_HANDLE hndUFR, uint8_t key_type, uint8_t key_index, uint8_t key_designator, uint16_t key_bit_len, const uint8_t *params, uint16_t params_size);
      UFR_STATUS JCAppGetRsaPublicKeyM(UFR_HANDLE hndUFR, uint8_t key_index, uint8_t *modulus, uint16_t *modulus_size, uint8_t *exponent, uint16_t *exponent_size);
      UFR_STATUS JCAppGetEcPublicKeyM(UFR_HANDLE hndUFR, uint8_t key_index, uint8_t *keyW, uint16_t *kexWSize, uint8_t *field, uint16_t *field_size, uint8_t *ab , uint16_t *ab_size, uint8_t *g, uint16_t *g_size, uint8_t *r, uint16_t *r_size, uint16_t *k, uint16_t *key_size_bits, uint16_t *key_designator);
      
      Added helper library function to get APDU error description:
      c_string JCAppGetErrorDescription(UFR_STATUS apdu_error_status);
      4.3.16
      bb3c6f55
  3. Nov 05, 2018
  4. Sep 20, 2018
  5. Sep 03, 2018
    • developer2's avatar
      Version 4.3.13. Mifare Plus card support, Ultralight C external authentication support · 421163f5
      developer2 authored
      new functions for uFR PLUS devices only
      //MIFARE PLUS
      UFR_STATUS DL_API MFP_WritePerso(uint16_t address, uint8_t *data);
      UFR_STATUS DL_API MFP_CommitPerso(void);
      UFR_STATUS DL_API MFP_PersonalizationMinimal(uint8_t *card_master_key, uint8_t *card_config_key,
      						uint8_t *level_2_switch_key, uint8_t *level_3_switch_key, uint8_t *level_1_auth_key,
      						uint8_t *select_vc_key, uint8_t *prox_chk_key, uint8_t *vc_poll_enc_key, uint8_t *vc_poll_mac_key);
      UFR_STATUS DL_API MFP_SwitchToSecurityLevel3(uint8_t key_index);
      UFR_STATUS DL_API MFP_SwitchToSecurityLevel3_PK(uint8_t *aes_key);
      UFR_STATUS DL_API MFP_AesAuthSecurityLevel1(uint8_t key_index);
      UFR_STATUS DL_API MFP_AesAuthSecurityLevel1_PK(uint8_t *aes_key);
      UFR_STATUS DL_API MFP_ChangeMasterKey(uint8_t key_index, uint8_t *new_key);
      UFR_STATUS DL_API MFP_ChangeMasterKey_PK(uint8_t *old_key, uint8_t *new_key);
      UFR_STATUS DL_API MFP_ChangeConfigurationKey(uint8_t key_index, uint8_t *new_key);
      UFR_STATUS DL_API MFP_ChangeConfigurationKey_PK(uint8_t *old_key, uint8_t *new_key);
      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(uint8_t *configuration_key, 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, uint8_t *new_key);
      UFR_STATUS DL_API MFP_ChangeSectorKey_PK(uint8_t sector_nr, uint8_t auth_mode, uint8_t *old_key, uint8_t *new_key);
      UFR_STATUS DL_API MFP_GetUid(uint8_t key_index_vc_poll_enc_key, uint8_t key_index_vc_poll_mac_key, uint8_t *uid, uint8_t *uid_len);
      UFR_STATUS DL_API MFP_GetUid_PK(uint8_t *vc_poll_enc_key, uint8_t *vc_poll_mac_key, uint8_t *uid, uint8_t *uid_len);
      UFR_STATUS DL_API MFP_ChangeVcPollingEncKey(uint8_t configuration_key_index, uint8_t *new_key);
      UFR_STATUS DL_API MFP_ChangeVcPollingEncKey_PK(uint8_t *configuration_key, uint8_t *new_key);
      UFR_STATUS DL_API MFP_ChangeVcPollingMacKey(uint8_t configuration_key_index, uint8_t *new_key);
      UFR_STATUS DL_API MFP_ChangeVcPollingMacKey_PK(uint8_t *configuration_key, uint8_t *new_key);
      
      //ULTRALIGHT C
      UFR_STATUS DL_API ULC_ExternalAuth_PK(uint8_t *key);
      UFR_STATUS DL_API ULC_write_3des_key_no_auth(uint8_t *new_3des_key);
      UFR_STATUS DL_API ULC_write_3des_key_factory_key(uint8_t *new_3des_key);
      UFR_STATUS DL_API ULC_write_3des_key(uint8_t *new_3des_key, uint8_t *old_3des_key);
      
      Functions for ISO7816 protokol support (SAM option only)
      UFR_STATUS DL_API APDU_switch_to_ISO7816_interface(void);
      UFR_STATUS DL_API close_ISO7816_interface_no_APDU(void);
      UFR_STATUS DL_API close_ISO7816_interface_APDU_ISO14443_4(void);
      UFR_STATUS DL_API APDU_switch_to_ISO14443_4_interface(void);
      UFR_STATUS DL_API APDU_switch_off_from_ISO7816_interface(void);
      421163f5
  6. Aug 15, 2018
  7. Aug 09, 2018
  8. Aug 07, 2018
  9. Jun 20, 2018
  10. Jun 08, 2018
  11. Apr 13, 2018
    • developer2's avatar
      Version 4.3.9 transceive mode support (uFR PLUS devices only) · 5b12e545
      developer2 authored
      new functions added
      UFR_STATUS DL_API card_transceive_mode_start(uint8_t tx_crc, uint8_t rx_crc, uint32_t rf_timeout, uint32_t uart_timeout);
      UFR_STATUS DL_API card_transceive_mode_stop(void);
      UFR_STATUS DL_API uart_transceive(uint8_t *send_data, uint8_t send_len, uint8_t *rcv_data, uint32_t bytes_to_receive, uint32_t *rcv_len);
      5b12e545
  12. Mar 06, 2018
    • developer4's avatar
      version 4.3.8 · 0a6e041e
      developer4 authored
      enabled off-card hash algorithm (when sig_cipher == SIG_CIPHER_RSA && sig_digest == ALG_NULL && sig_padding == PAD_PKCS1)
      0a6e041e
  13. Feb 26, 2018
    • developer4's avatar
      Version 4.3.7 · 1a084f8b
      developer4 authored
      Finished and tested functions for qualified and CA certificates manipulation:
      UFR_STATUS JCAppPutObj(uint8_t obj_type, uint8_t obj_index, uint8_t *obj, int16_t obj_size, uint8_t *id, uint8_t id_size);
      UFR_STATUS JCAppPutObjSubject(uint8_t obj_type, uint8_t obj_index, uint8_t *subject, uint8_t size);
      UFR_STATUS JCAppInvalidateCert(uint8_t obj_type, uint8_t obj_index);
      UFR_STATUS JCAppGetObjId(uint8_t obj_type, uint8_t obj_index, uint8_t *id, uint16_t *id_size); // when id == NULL returns size
      UFR_STATUS JCAppGetObjSubject(uint8_t obj_type, uint8_t obj_index, uint8_t *subject, uint16_t *size); // when subject == NULL returns size
      UFR_STATUS JCAppGetObj(uint8_t obj_type, uint8_t obj_index, uint8_t *obj, int16_t size); // when obj == NULL returns size
      
      and multi reader support functions:
      UFR_STATUS JCAppPutObjM(UFR_HANDLE hndUFR, uint8_t obj_type, uint8_t obj_index, uint8_t *obj, int16_t obj_size, uint8_t *id, uint8_t id_size);
      UFR_STATUS JCAppPutObjSubjectM(UFR_HANDLE hndUFR, uint8_t obj_type, uint8_t obj_index, uint8_t *subject, uint8_t size);
      UFR_STATUS JCAppInvalidateCertM(UFR_HANDLE hndUFR, uint8_t obj_type, uint8_t obj_index);
      UFR_STATUS JCAppGetObjIdHnd(UFR_HANDLE hndUFR, uint8_t obj_type, uint8_t obj_index, uint8_t *id, uint16_t *id_size); // when id == NULL returns size
      UFR_STATUS JCAppGetObjSubjectM(UFR_HANDLE hndUFR, uint8_t obj_type, uint8_t obj_index, uint8_t *subject, uint16_t *size); // when subject == NULL returns size
      UFR_STATUS JCAppGetObjM(UFR_HANDLE hndUFR, uint8_t obj_type, uint8_t obj_index, uint8_t *obj, int16_t size); // when obj == NULL returns size
      4.3.7
      1a084f8b
  14. Feb 13, 2018
  15. Jan 10, 2018
  16. Dec 20, 2017
  17. Dec 06, 2017
  18. Nov 30, 2017
  19. Nov 06, 2017
    • developer2's avatar
      Version 4.3.2 ISO7816 interface support and green LED on off · 1777c159
      developer2 authored
      Functions added
      UFR_STATUS DL_API open_ISO7816_interface(uint8_t *atr_data, uint8_t *atr_len);
      UFR_STATUS DL_API close_ISO7816_interface(void);
      UFR_STATUS DL_API GreenLedBlinkingTurnOn(void);
      UFR_STATUS DL_API GreenLedBlinkingTurnOff(void);
      1777c159
  20. Nov 01, 2017
  21. Oct 05, 2017
    • developer4's avatar
      version 4.3.0 · ac6a2f02
      developer4 authored
      Added DL Java Card support.
      Digital signing mechanisms using RSA and ECDSA included.
      New functions:
      JCAppSelectByAid()
      JCAppPutPrivateKey()
      JCAppGenerateSignature()
      JCAppSignatureBegin()
      JCAppSignatureUpdate()
      JCAppSignatureEnd()
      4.3.0
      ac6a2f02
  22. Aug 15, 2017
  23. Aug 14, 2017
    • developer4's avatar
      uFR library version 4.0.29 · c7c9f942
      developer4 authored
      The following functions have been improved (extended buffer support):
      UFR_STATUS DL_API APDUHexStrTransceive(const char *c_apdu, char **r_apdu);
      UFR_STATUS DL_API APDUPlainTransceive(const uint8_t *c_apdu, uint32_t c_apdu_len, uint8_t *r_apdu, uint32_t *r_apdu_len);
      UFR_STATUS DL_API APDUTransceive(uint8_t cls, uint8_t ins, uint8_t p1, uint8_t p2, const uint8_t *data_out, uint32_t Nc, uint8_t *data_in, uint32_t *Ne, uint8_t send_le, uint8_t *apdu_status);
      UFR_STATUS DL_API APDUHexStrTransceiveM(UFR_HANDLE hndUFR, const char *c_apdu, char **r_apdu);
      UFR_STATUS DL_API APDUPlainTransceiveM(UFR_HANDLE hndUFR, const uint8_t *c_apdu, uint32_t c_apdu_len, uint8_t *r_apdu, uint32_t *r_apdu_len);
      UFR_STATUS DL_API APDUTransceiveM(UFR_HANDLE hndUFR, uint8_t cls, uint8_t ins, uint8_t p0, uint8_t p1, const uint8_t *data_out, uint32_t Nc, uint8_t *data_in, uint32_t *Ne, uint8_t send_le, uint8_t *apdu_status);
      
      Improvement is valid from the firmware version 3.9.44
      4.0.29
      c7c9f942
  24. Jul 31, 2017
  25. Jul 18, 2017
  26. Jun 28, 2017
    • developer4's avatar
      version 4.0.26 · 487e898e
      developer4 authored
      Finished implementation of the "APDU Transceive" in the firmware (using APDU_TRANSCEIVE command).
      4.0.26
      487e898e
  27. May 29, 2017
    • developer4's avatar
      version 4.0.25 · b13ca363
      developer4 authored
      Finished NFC T4T support for NDEF messages using APDU support through "ISO14443-4 half-duplex block transmission protocol (i_block, r_block and s_block)".
      All functions in library that support NDEF messages now working with NFC T4T cards.
      4.0.25
      b13ca363
  28. Apr 28, 2017
    • developer4's avatar
      library version 4.0.24 · 4614bc21
      developer4 authored
      Added functions:
      UFR_STATUS GetAdHocEmulationParams(uint8_t *ThresholdMinLevel, uint8_t *ThresholdCollLevel,
      								   uint8_t *RFLevelAmp, uint8_t *RxGain, uint8_t *RFLevel);
      UFR_STATUS SetAdHocEmulationParams(uint8_t ThresholdMinLevel, uint8_t ThresholdCollLevel,
      								   uint8_t RFLevelAmp, uint8_t RxGain, uint8_t RFLevel);
      UFR_STATUS GetAdHocEmulationParamsM(UFR_HANDLE hndUFR,
      								    uint8_t *ThresholdMinLevel, uint8_t *ThresholdCollLevel,
      								    uint8_t *RFLevelAmp, uint8_t *RxGain, uint8_t *RFLevel);
      UFR_STATUS SetAdHocEmulationParamsM(UFR_HANDLE hndUFR,
      								    uint8_t ThresholdMinLevel, uint8_t ThresholdCollLevel,
      								    uint8_t RFLevelAmp, uint8_t RxGain, uint8_t RFLevel);
      
      Dependency for these functions: uFR firmware - min. version 3.9.35
      4.0.24
      4614bc21
  29. Apr 24, 2017
    • developer4's avatar
      library binaries version 4.0.23 · 736a1ca8
      developer4 authored
      Added functions:
      UFR_STATUS AdHocEmulationStart(void);
      UFR_STATUS AdHocEmulationStop(void);
      UFR_STATUS GetExternalFieldState(uint8_t *is_field_present);
      
      UFR_STATUS AdHocEmulationStartM(UFR_HANDLE hndUFR);
      UFR_STATUS AdHocEmulationStopM(UFR_HANDLE hndUFR);
      UFR_STATUS GetExternalFieldStateM(UFR_HANDLE hndUFR, uint8_t *is_field_present);
      4.0.23
      736a1ca8
  30. Apr 05, 2017
  31. Apr 03, 2017
  32. Mar 23, 2017
  33. Mar 20, 2017
  34. Mar 09, 2017
  35. Mar 07, 2017
  36. Mar 04, 2017