日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
創(chuàng)新互聯(lián)鴻蒙OS教程:鴻蒙OS訪問SE安全單元

場(chǎng)景介紹

應(yīng)用或者其他模塊可以通過接口完成以下功能:

  1. 獲取安全單元的個(gè)數(shù)和名稱。
  2. 判斷安全單元是否在位。
  3. 在指定安全單元上打開基礎(chǔ)通道。
  4. 在指定安全單元上打開邏輯通道。
  5. 發(fā)送 APDU(Application Protocol Data Unit)數(shù)據(jù)到安全單元上。

接口說明

類名 接口名 功能描述
SEServiceSEService()創(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)用。
ReadergetName()獲取安全單元的名稱。
isSecureElementPresent()檢查安全單元是否在位。
openSession()打開當(dāng)前安全單元上的 session。
closeSession()關(guān)閉當(dāng)前安全單元上的所有 session。
SessionopenBasicChannel(Aid aid)打開基礎(chǔ)通道。
openLogicalChannel(Aid aid)創(chuàng)建邏輯通道。
getATR()獲得重設(shè)安全單元指令的響應(yīng)。
closeSessionChannels()關(guān)閉當(dāng)前 session的所有通道。
ChannelisClosed()判斷通道是否關(guān)閉。
isBasicChannel()判斷是否是基礎(chǔ)通道。
transmit(byte[] command)發(fā)送指令到安全單元。
getSelectResponse()獲得應(yīng)用程序選擇指令的響應(yīng)。
closeChannel()關(guān)閉通道。
AidAid(byte[] aid, int offset, int length)構(gòu)造一個(gè) AID 類的實(shí)例。
isAidValid()查詢AID是否有效。
getAidBytes()獲取AID的字節(jié)數(shù)組形式的值。

開發(fā)步驟

  1. 調(diào)用 SEService 類的構(gòu)造函數(shù),創(chuàng)建一個(gè)安全單元服務(wù)的實(shí)例,用于訪問安全單元。
  1. 調(diào)用 isConnected() 接口,查詢安全單元服務(wù)的連接狀態(tài)。
  1. 調(diào)用 getReaders() 接口,獲取本機(jī)的全部安全單元。
  1. 調(diào)用 Reader 類的 openSession() 接口打開 Session,返回一個(gè)打開的 Session 實(shí)例。
  1. 調(diào)用 Session 類的 openBasicChannel(Aid aid) 接口打開基礎(chǔ)通道,或者調(diào)用 openLogicalChannel(Aid aid) 接口打開邏輯通道,返回一個(gè)打開通道 Channel 實(shí)例。
  1. 調(diào)用 Channel 類的 transmit(byte[] command),發(fā)送 APDU 到安全單元。
  1. 調(diào)用 Channel 類的 closeChannel() 接口關(guān)閉通道。
  1. 調(diào)用 Session 類的 closeSessionChannels() 接口關(guān)閉 Session 的所有通道。
  1. 調(diào)用 Reader 類的 closeSessions() 接口關(guān)閉安全單元的所有 Session。
  1. 調(diào)用 SEService 類的 shutdown() 接口關(guān)閉安全單元服務(wù)。
    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();

     
    // 打開Session
    Optional 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實(shí)例
        Aid aid = new Aid(aidValue, 0, aidValue.length); 
        // 打開基礎(chǔ)通道
        Optional optionalChannel = session.openBasicChannel(aid);
        Channel basicChannel = optionalChannel.orElse(null);
        // 打開邏輯通道
        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();

分享名稱:創(chuàng)新互聯(lián)鴻蒙OS教程:鴻蒙OS訪問SE安全單元
文章出自:http://www.5511xx.com/article/cddjooi.html