Skip to content
  1. Feb 05, 2019
  2. Jan 30, 2019
  3. Jan 25, 2019
    • developer4's avatar
      version 5.0.1 · f85a482d
      developer4 authored
      Implemented new DLSigner card instructions: INS_DEL_RSA_KEY_PAIR and INS_DEL_EC_KEY_PAIR using functions:
      UFR_STATUS DL_API JCAppDeleteRsaKeyPair(uint8_t key_index);
      UFR_STATUS DL_API JCAppDeleteEcKeyPair(uint8_t key_index);
      and
      UFR_STATUS DL_API JCAppDeleteRsaKeyPairM(UFR_HANDLE hndUFR, uint8_t key_index);
      UFR_STATUS DL_API JCAppDeleteEcKeyPairM(UFR_HANDLE hndUFR, uint8_t key_index);
      
      Added DLSigner card types:
      #define DLSigner81	0xA0
      #define DLSigner22	0xA1
      #define DLSigner30	0xA2
      #define DLSigner10	0xA3
      #define DLSigner145	0xAA
      
      Added static builds:
      linux/static-aarch64/libuFCoder-aarch64.a
      linux/static-armel/libuFCoder-armel.a
      linux/static-armhf/libuFCoder-armhf.a
      macos/static-x86_64/libuFCoder-x86_64.a
      5.0.1
      f85a482d
  4. Dec 14, 2018
  5. Nov 28, 2018
    • developer4's avatar
      version 4.4.5 · acf8185d
      developer4 authored
      For RSA key type fixed 1280 bits key size constraint.
      Added support for DL_J3H145 JCDL card type.
      Added JCAppGetEcKeySizeBits() and JCAppGetEcKeySizeBitsM() functions.
      4.4.5
      acf8185d
  6. Nov 23, 2018
  7. Nov 21, 2018
  8. Nov 20, 2018
  9. Nov 15, 2018
  10. Nov 13, 2018
  11. 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_s...
      4.3.16
      bb3c6f55
  12. Nov 05, 2018
  13. Sep 20, 2018
  14. 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
  15. Aug 29, 2018
  16. Aug 15, 2018
  17. Aug 09, 2018
  18. Aug 07, 2018
  19. Jun 20, 2018
  20. Jun 08, 2018
  21. May 31, 2018
  22. May 30, 2018
  23. May 07, 2018
  24. May 04, 2018
  25. Apr 13, 2018
    • developer2's avatar
      Version 4.3.9 transceive mode support (uFR PLUS devices only) uFCoder.h update · c6d897df
      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);
      c6d897df
    • developer2's avatar
      Merge branch 'master' of https://git.d-logic.net/nfc-rfid-reader-sdk/ufr-lib · f79e8d53
      developer2 authored
      # Conflicts:
      #	include/uFCoder.h
      #	linux/aarch64/libuFCoder-aarch64.so
      #	linux/arm-hf/libuFCoder-armhf.so
      #	linux/arm/libuFCoder-arm.so
      #	linux/x86/libuFCoder-x86.so
      #	linux/x86_64/libuFCoder-x86_64.so
      #	osx/x86_64/libuFCoder.dylib
      #	windows/static-x86/libuFCoder-x86.a
      #	windows/static-x86_64/libuFCoder-x86_64.a
      #	windows/x86/uFCoder-x86.def
      #	windows/x86/uFCoder-x86.dll
      #	windows/x86_64/uFCoder-x86_64.def
      #	windows/x86_64/uFCoder-x86_64.dll
      f79e8d53
    • 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
  26. 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
  27. 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
  28. Feb 13, 2018
  29. Jan 11, 2018