Document last updated: 13 Jan 2017
libese provides a minimal transport wrapper for communicating with embedded secure elements. Embedded secure elements typically adhere to smart card standards whose translation is not always smooth when migrated to an always connected bus, like SPI. The interfaces exposed by libese should enable higher level “terminal” implementations to be written on top and/or a service which provides a similar interface.
Behind the interface, libese should help smooth over the differences between eSEs and smart cards use in the hardware adapter implementations. Additionally, a T=1 implementation is supplied, as it appears to be the most common wire transport for these chips.
Public client interface for Embedded Secure Elements.
Prior to use in a file, import all necessary variables with:
ESE_INCLUDE_HW(SOME_HAL_IMPL);
Instantiate in a function with:
ESE_DECLARE(my_ese, SOME_HAL_IMPL);
or
struct EseInterface my_ese = ESE_INITIALIZER(SOME_HAL_IMPL);
or
struct EseInterface *my_ese = malloc(sizeof(struct EseInterface)); ... ese_init(my_ese, SOME_HAL_IMPL);
To initialize the hardware abstraction, call:
ese_open(my_ese);
To release any claimed resources, call
ese_close(my_ese)
when interface use is complete.
To perform a transmit-receive cycle, call
ese_transceive(my_ese, ...);
with a filled transmit buffer with total data length and an empty receive buffer and a maximum fill length. A negative return value indicates an error and a hardware specific code and string may be collected with calls to
ese_error_code(my_ese); ese_error_message(my_ese);
The EseInterface is not safe for concurrent access. (Patches welcome! ;).
libese is broken into multiple pieces:
libese provides the headers and wrappers for writing libese clients and for implementing hardware backends. It depends on a backend being provided as per libese-hw and on libese-sysdeps.
libese-sysdeps provides the system level libraries that are needed by libese provided software. If libese is being ported to a new environment, like a bootloader or non-Linux OS, this library may need to be replaced. (Also take a look at libese/include/ese/log.h for the macro definitions that may be needed.)
libese-hw provides existing libese hardware backends.
libese-teq1 provides a T=1 compatible transcieve function that may be used by a hardware backend. It comes with some prequisites for use, such as a specifically structured set of error messages and EseInteface pad usage, but otherwise it does not depends on any specific functionality not abstracted via the libese EseOperations structure.
There are two test backends, fake and echo, as well as one real backend for the NXP PN80T/PN81A.
The NXP backends support both a direct kernel driver and a Linux SPIdev interface.
大腿外侧什么经络 | 茉莉花茶是什么茶 | 什么的东西 | 牛宝是什么 | 梦见别人搬家预示什么 |
哮喘咳嗽吃什么药好得快 | 幼儿园转学需要什么手续 | 龟头太敏感吃什么药 | 肝功能2项是指什么 | 产后可以吃什么水果 |
乡和镇有什么区别 | 1995年属什么 | 缺铁吃什么药 | 富翁是什么意思 | 喉咙痛吃什么药效果好 |
0l是什么意思 | 吃什么增加血小板 | 什么是白平衡 | 刺瘊子是什么原因造成的 | 五六点是什么时辰 |
八哥鸟吃什么hcv7jop7ns4r.cn | 屋里喷什么消毒最好hcv8jop3ns3r.cn | 乙肝两对半15阳性是什么意思hcv9jop5ns3r.cn | 滞气是什么意思hcv7jop7ns1r.cn | 瞽叟是什么意思hcv7jop7ns2r.cn |
皮肤软组织感染是什么意思hcv8jop1ns0r.cn | 一朝一夕是什么意思hcv7jop5ns2r.cn | 蓝色妖姬适合送什么人helloaicloud.com | tony是什么意思dayuxmw.com | 脸上长疙瘩是什么原因hcv9jop4ns6r.cn |
fap什么意思hcv9jop2ns2r.cn | 唇周发黑是什么原因hcv7jop9ns3r.cn | 割包皮有什么用hcv7jop7ns3r.cn | 不均质脂肪肝是什么意思tiangongnft.com | 什么病不能吃西洋参fenrenren.com |
羊眼圈是什么hcv8jop9ns3r.cn | 关节错缝术是什么意思hcv8jop9ns6r.cn | 走资派是什么意思zhongyiyatai.com | 十二指肠球部溃疡吃什么药hcv9jop6ns1r.cn | 晚上剪指甲有什么说法hcv8jop1ns6r.cn |