UNPKG

js-rockeyarm

Version:

A javascript library for Feitian ROCKEY ARM dongle.

97 lines (91 loc) 5.71 kB
import { createRequire } from 'module' const require = createRequire(import.meta.url) const ref = require('ref-napi') const refArray = require('ref-array-napi') const StructType = require ('ref-struct-napi') //define ROCKEY-ARM sturcts var dongleInfo = StructType({ m_VerL: ref.types.uchar, m_VerR: ref.types.uchar, m_Type: ref.types.ushort, m_BirthdayL:ref.types.uint32, //c里定义的是一个8字节数组,本来用一个uint64就可以了,但是没找到如何解决在js里按字节对齐的问题,所以把所有的8字节结构拆成左右两个4字节结构 m_BirthdayR:ref.types.uint32, m_Agent: ref.types.uint32, m_PID: ref.types.uint32, m_UserID: ref.types.uint32, m_HIDL: ref.types.uint32, m_HIDR: ref.types.uint32, m_IsMother: ref.types.uint32, m_DevType: ref.types.uint32 }) var dataFileAttr = StructType({ m_Size : ref.types.uint32, m_Read_Priv : ref.types.ushort, m_Write_Priv : ref.types.ushort }) var dataFileList = StructType({ m_FileId : ref.types.ushort, m_Reserve : ref.types.ushort, m_Size : ref.types.uint32, m_Read_Priv : ref.types.ushort, m_Write_Priv : ref.types.ushort }) var ptrInt = refArray(ref.types.int) var ryHandle = refArray(ref.types.uint)//ROCKEY的句柄是void*,但是ref-array-napi不能创建void类型的数组 var ptrHandle = refArray(ryHandle) //如果是32位系统,句柄用uint应该也是ok的。 var ptrDongleInfo = refArray(dongleInfo) var ptrByte = refArray(ref.types.uchar) var ptrUint = refArray(ref.types.uint) var ptrDataFileList = refArray(dataFileList) const rockeyInterface = { 'Dongle_Enum' : ['int', [ptrDongleInfo, ptrInt]], 'Dongle_Open' : ['int', [ptrHandle, 'int']], 'Dongle_ResetState' : ['int', [ryHandle]], 'Dongle_Close': ['int', [ryHandle]], 'Dongle_GenRandom' : ['int', [ryHandle, 'int', ptrByte]], 'Dongle_LEDControl': ['int', [ryHandle, 'int']], 'Dongle_SwitchProtocol' : ['int', [ryHandle, 'int']], 'Dongle_RFS' : ['int', [ryHandle]], 'Dongle_CreateFile' : ['int', [ryHandle, 'int', 'ushort', ptrByte]], 'Dongle_WriteFile' : ['int', [ryHandle, 'int', 'ushort', 'ushort', ptrByte, 'int' ]], 'Dongle_ReadFile' : ['int', [ryHandle, 'ushort', 'ushort', ptrByte, 'int']], 'Dongle_DownloadExeFile' : ['int', [ryHandle, ptrByte, 'int']], 'Dongle_RunExeFile' : ['int', [ryHandle, 'ushort', ptrByte, 'ushort', ptrInt]], 'Dongle_DeleteFile' : ['int', [ryHandle, 'int', 'ushort']], 'Dongle_ListFile' : ['int', [ryHandle, 'int', ptrByte, ptrInt]], 'Dongle_GenUniqueKey' : ['int', [ryHandle, 'int', ptrByte, ptrByte,ptrByte]], 'Dongle_VerifyPIN' : ['int', [ryHandle, 'int', ptrByte, ptrInt]], 'Dongle_ChangePIN' : ['int', [ryHandle, 'int', ptrByte, ptrByte, 'int']], 'Dongle_ResetUserPIN' : ['int', [ryHandle, ptrByte]], 'Dongle_SetUserID' : ['int', [ryHandle, 'uint32']], 'Dongle_GetDeadline' : ['int', [ryHandle, ptrUint]], 'Dongle_SetDeadline' : ['int', [ryHandle, 'uint32']], 'Dongle_GetUTCTime' : ['int', [ryHandle, ptrUint]], 'Dongle_ReadData' : ['int', [ryHandle, 'int', ptrByte, 'int']], 'Dongle_WriteData' : ['int', [ryHandle, 'int', ptrByte, 'int']], 'Dongle_ReadShareMemory' : ['int', [ryHandle, ptrByte]], 'Dongle_WriteShareMemory' : ['int', [ryHandle, ptrByte, 'int']], 'Dongle_RsaGenPubPriKey' : ['int', [ryHandle, 'ushort', ptrByte, ptrByte]], 'Dongle_RsaPri' : ['int', [ryHandle, 'ushort', 'int', ptrByte, 'int', ptrByte, ptrInt]], 'Dongle_RsaPub' : ['int', [ryHandle, 'int', ptrByte, ptrByte, 'int', ptrByte, ptrInt]], 'Dongle_EccGenPubPriKey' : ['int', [ryHandle, 'ushort', ptrByte, ptrByte]], 'Dongle_EccSign' : ['int', [ryHandle, 'ushort', ptrByte, 'int', ptrByte]], 'Dongle_EccVerify' : ['int', [ryHandle, ptrByte, ptrByte, 'int', ptrByte]], 'Dongle_SM2GenPubPriKey' : ['int', [ryHandle, 'ushort', ptrByte,ptrByte]], 'Dongle_SM2Sign' : ['int', [ryHandle, 'ushort', ptrByte, 'int', ptrByte]], 'Dongle_SM2Verify' : ['int', [ryHandle, ptrByte, ptrByte, 'int', ptrByte]], 'Dongle_TDES' : ['int', [ryHandle, 'ushort', 'int', ptrByte, ptrByte, 'int']], 'Dongle_SM4' : ['int', [ryHandle, 'ushort', 'int', ptrByte, ptrByte, 'int']], 'Dongle_HASH' : ['int', [ryHandle, 'int', ptrByte, 'int', ptrByte]], 'Dongle_Seed' : ['int', [ryHandle, ptrByte, 'int', ptrByte]], 'Dongle_LimitSeedCount' : ['int', [ryHandle, 'int']], 'Dongle_GenMotherKey' : ['int', [ryHandle, ptrByte]], 'Dongle_RequestInit' : ['int', [ryHandle, ptrByte]], 'Dongle_GetInitDataFromMother' : ['int', [ryHandle ,ptrByte, ptrByte, ptrInt]], 'Dongle_InitSon' : ['int', [ryHandle, ptrByte, 'int']], 'Dongle_SetUpdatePriKey' : ['int', [ryHandle, ptrByte]], 'Dongle_MakeUpdatePacket' : ['int', [ryHandle, ptrByte, 'int', 'int', 'ushort', 'int', ptrByte, 'int', ptrByte, ptrByte, ptrInt]], 'Dongle_MakeUpdatePacketFromMother' : ['int', [ryHandle, ptrByte, 'int', 'int', 'ushort', 'int', ptrByte, 'int', ptrByte, ptrInt]], 'Dongle_Update' : ['int', [ryHandle, ptrByte, 'int']] } export {rockeyInterface, dongleInfo, ptrDongleInfo, ptrInt, ptrByte, ptrHandle, ryHandle, ptrUint, dataFileAttr, dataFileList, ptrDataFileList}