W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
應(yīng)用或者其他模塊可以通過(guò)接口完成以下功能:
類名 | 接口名 | 功能描述 |
---|---|---|
SEService | SEService() | 創(chuàng)建一個(gè)安全單元服務(wù)的實(shí)例。 |
isConnected() | 查詢安全單元服務(wù)是否已連接。 | |
shutdown() | 關(guān)閉安全單元服務(wù)。 | |
getReaders() | 獲取全部安全單元。 | |
getVersion() | 獲得安全單元服務(wù)的版本。 | |
OnCallback | 用于回調(diào)的內(nèi)部類,用于定義回調(diào)接口。在服務(wù)連接成功后,回調(diào)該接口通知應(yīng)用。 | |
Reader | getName() | 獲取安全單元的名稱。 |
isSecureElementPresent() | 檢查安全單元是否在位。 | |
openSession() | 打開(kāi)當(dāng)前安全單元上的 session。 | |
closeSession() | 關(guān)閉當(dāng)前安全單元上的所有 session。 | |
Session | openBasicChannel(Aid aid) | 打開(kāi)基礎(chǔ)通道。 |
openLogicalChannel(Aid aid) | 創(chuàng)建邏輯通道。 | |
getATR() | 獲得重設(shè)安全單元指令的響應(yīng)。 | |
closeSessionChannels() | 關(guān)閉當(dāng)前 session的所有通道。 | |
Channel | isClosed() | 判斷通道是否關(guān)閉。 |
isBasicChannel() | 判斷是否是基礎(chǔ)通道。 | |
transmit(byte[] command) | 發(fā)送指令到安全單元。 | |
getSelectResponse() | 獲得應(yīng)用程序選擇指令的響應(yīng)。 | |
closeChannel() | 關(guān)閉通道。 | |
Aid | Aid(byte[] aid, int offset, int length) | 構(gòu)造一個(gè) AID 類的實(shí)例。 |
isAidValid() | 查詢AID是否有效。 | |
getAidBytes() | 獲取AID的字節(jié)數(shù)組形式的值。 |
private class AppServiceConnectedCallback implements SEService.OnCallback {
@Override
public void serviceConnected() {
// 應(yīng)用自實(shí)現(xiàn)
}
}
// 創(chuàng)建安全單元服務(wù)實(shí)例
SEService sEService = new SEService(context, new AppServiceConnectedCallback());
// 查詢安全單元服務(wù)的連接狀態(tài)
boolean isConnected = sEService.isConnected();
// 獲取本機(jī)的全部安全單元,并獲取指定的安全單元eSE
Reader[] elements = sEService.getReaders();
Reader eSe = null;
for (int i = 0; i < elements.length; i++) {
if ("eSE".equals(elements[i].getName())) {
eSe = elements[i];
break;
}
}
// 查詢安全單元是否在位
boolean isPresent = eSe.isSecureElementPresent();
// 打開(kāi)Session
Optional<Session> optionalSession = eSe.openSession();
Session session = optionalSession.orElse(null);
// 打開(kāi)通道
if (eSe != null) {
byte[] aidValue = new byte[]{(byte)0x01, (byte)0x02, (byte)0x03, (byte)0x04, (byte)0x05};
// 創(chuàng)建Aid實(shí)例
Aid aid = new Aid(aidValue, 0, aidValue.length);
// 打開(kāi)基礎(chǔ)通道
Optional<Channel> optionalChannel = session.openBasicChannel(aid);
Channel basicChannel = optionalChannel.orElse(null);
// 打開(kāi)邏輯通道
optionalChannel = session.openLogicalChannel(aid);
Channel logicalChannel = optionalChannel.orElse(null);
// 發(fā)送指令給安全單元,返回值為安全單元對(duì)指令的響應(yīng)
byte[] resp = logicalChannel.transmit(new byte[]{(byte)0x00, (byte)0xa4, (byte)0x00, (byte)0x00, (byte)0x02, (byte)0x00, (byte)0x00});
// 關(guān)閉通道資源
basicChannel.closeChannel()
logicalChannel.closeChannel();
}
// 關(guān)閉Session資源
session.close();
// 關(guān)閉安全單元資源
eSe.closeSessions();
// 關(guān)閉安全單元服務(wù)資源sEService.shutdown();
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: