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