日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

在第三方OS上適配ID2-SE

本文以stm32f103vb-fmse平臺,fm1280(國密芯片)SE芯片為例介紹在第三方OS上適配ID2-SE的方法。

步驟一:適配OSA層

  1. 適配日志打印。

    下面以通用Linux OS系統函數為例進行說明。

    a.實現ls_osa_print。

    void ls_osa_print(const char *fmt, ...)
    {
          va_list va_args;
          va_start(va_args, fmt);
          vprintf(fmt, va_args);
          va_end(va_args);
     }            

    b.實現ls_osa_snprintf。

    int ls_osa_snprintf(char *str, size_t size, const char *fmt, ...)
    {
        va_list args;
        int rc;
        va_start(args, fmt);
        rc = vsnprintf(str, size, fmt, args);
        va_end(args);
        return rc;
    }           
  2. 適配內存管理。

    a.實現ls_osa_calloc。

    void *ls_osa_calloc(size_t nmemb, size_t size)
    {
        return calloc(nmemb, size);
    }            

    b.實現ls_osa_free。

    void ls_osa_free(void *ptr)
    {
        free(ptr);
    }            
  3. 適配時間相關信息。

    a.實現ls_osa_msleep。

    void ls_osa_msleep(unsigned int msec)
    {
        usleep(msec * 1000);
    }            

    b.實現ls_osa_get_time_ms。

    long long ls_osa_get_time_ms(void)
    {
        struct timeval tv;
        long long ret = 0;
        gettimeofday(&tv, NULL);
        ret = tv.tv_sec * 1000 + tv.tv_usec / 1000;
        return ret;
    }           

步驟二:設置編譯工具鏈

修改make.rules,設置CROSS_COMPILE為用戶平臺對應的交叉工具鏈,例如:

CROSS_COMPILE := /usr/bin/arm-linux/arm-linux-            

步驟三:編譯并運行示例程序

在SDK根目錄,執行make命令,完成樣例程序的編譯。

$ make clean
$ make           

生成./out/bin/id2_app后運行id2_app。

如果出現以下日志,說明上述的OS接口和編譯環境設置正確。

<LS_LOG> id2_client_get_id 649: ID2: 000FFFFFDB1D8DC78DDC**** 
<LS_LOG> id2_client_generate_authcode 170: 
============ ID2 Validation Json Message ============: 
{ 
       "reportVersion":        "1.0.0", 
       "sdkVersion":   "2.0.0", 
       "date": "Aug 23 2019 18:17:13", 
       "testContent":  [{ 
               ....... 
               }] 
} 
<LS_LOG> id2_client_generate_authcode 186: =====>ID2 Client Generate AuthCode End.            

步驟四:SE驅動適配

  1. 適配SE芯片驅動接口。

    根據SE芯片驅動的控制方式,需要適配以下3個驅動接口。

    a.適配se_open_session。

    irot_result_t se_open_session(void** handle)
    {
            // 示例代碼:SE 初始化,打開SE芯片電源
               fm_open_device();
            fm_device_init();
            fm_dev_power_on();
    }           

    b.適配se_transmit。

    irot_result_t se_transmit(void* handle, const uint8_t* cmd_apdu, const uint32_t cmd_len, uint8_t* rsp_buf, uint32_t* rsp_len)
    {
            // 示例代碼:發送apdu指令,并獲取response
            result = pfm_SeFunc->fm_apdu_transceive(xxx)
    }            

    c.適配se_close_session。

    irot_result_t se_close_session(void* handle)
    {
            // 示例代碼:關閉設備,關閉SE芯片電源
            fm_close_device();
            fm_power_off();
    }            
  2. 使能ID2載體為SE。

    ID2 Client SDK編譯時默認選擇Demo為載體。適配好SE芯片后,需要將配置工程的載體切換為SE芯片。請進入make.settings修改CONFIG_ID2_KM_SE為y。

    #Link ID2 Config
    CONFIG_ID2_DEBUG   := n
    CONFIG_ID2_OTP     := n
    CONFIG_ID2_KM_SE   := y   ----> 修改為y            
  3. 重新編譯運行。

    $ make clean && make
    $ ./out/bin/id2_app            

    如果移植正確,會生成和Demo示例相同格式的測試結果。測試結果為JSON格式。

    ============ ID2 Validation Json Message ============: 
    { 
           "reportVersion":        "1.0.0", 
           "sdkVersion":   "2.0.0", 
           "date": "Aug 23 2019 18:17:13", 
           "testContent":  [{ 
                   ....... 
                   }] 
    }            
  4. 在服務端驗證調試結果。

    登錄物聯網設備身份認證,參考自主驗證確認上述步驟的測試結果。如果驗證成功,則ID2-SE在第三方OS上的適配完成。