Rokato. Cos7816

通用ISO-7816-4协议COS功能

Constructor

new Cos7816(cpuCosReader)

构造Cos7816操作对象

Parameters:
NameTypeDescription
cpuCosReaderCpuCosTypeA | CpuCosTypeB

CPU-COS读卡器操作对象

Members

(static, readonly) KeyAlg :number

COS密钥算法

Type:
  • number
Properties
NameTypeDescription
NONEnumber

无效未设置

PINnumber

密码大小必须2~8字节之间

DESnumber

密钥大小必须8或16字节

(static, readonly) LogIdMode :number

记录文件ID模式选项

Type:
  • number
Properties
NameTypeDescription
firstnumber

匹配记录标识第一条

lastnumber

匹配记录标识最后一条

downnumber

匹配记录标识下一条

upnumber

匹配记录标识上一条

numbernumber

匹配记录编号

Methods

(async) addLog(sfid, data, safe) → {Promise}

追加写入一条新的记录

Parameters:
NameTypeDefaultDescription
sfidnumber

文件短标识符(0x01~0x1F) 0x00=当前打开的文件

datastring

写入的十六进制字符串数据 注意不能超过创建时定长记录大小

safeRfSafenull

线路安全选项 参考RfSafe方法生成 默认忽略

Returns:

err/msg + retval

Type: 
Promise

(async) addTlv(sfid, tlvData, safe) → {Promise}

追加写入一条新的变长TLV记录

Parameters:
NameTypeDefaultDescription
sfidnumber

文件短标识符(0x01~0x1F) 0x00=当前打开的文件

tlvDataTlvData

写入的变长记录TLV格式数据 参考TlvData方法生成

safeRfSafenull

线路安全选项 参考RfSafe方法生成 默认忽略

Returns:

err/msg + retval

Type: 
Promise

(async) auth(id, key) → {Promise}

外部认证授权

Parameters:
NameTypeDescription
idnumber

外部认证密钥标识ID 通常为0x00

keyKeyData

密钥数据对象 参考KeyData方法生成

Returns:

err/msg + retval

Type: 
Promise

(async) calc(id, type, data) → {Promise}

内部认证运算

Parameters:
NameTypeDescription
idnumber

内部认证密钥标识ID

typenumber

运算类型 通常为0x00=加密 0x01=解密 0x02=校验

datastring

运算的十六进制字符串数据

Returns:

err/msg + retval/data

Type: 
Promise

getCpuId() → {number}

获取当前COS读卡器CPU协议ID

Returns:
Type: 
number

(async) rand(is32) → {Promise}

获取随机数

Parameters:
NameTypeDefaultDescription
is32booleanfalse

默认false=8字节随机数 true=4字节随机数

Returns:

err/msg + retval/data(十六进制字符串)

Type: 
Promise

(async) readBin(sfid, pos, size, safe) → {Promise}

读普通文件数据

Parameters:
NameTypeDefaultDescription
sfidnumber

文件短标识符(0x01~0x1F) 0x00=当前打开的文件

posnumber

起始位置偏移量 如果sfid=0偏移最大0x7FFF否则最大0xFF

sizenumber0

指定读取的大小 默认0最大程度读取全部

safeRfSafenull

线路安全选项 参考RfSafe方法生成 默认忽略

Returns:

err/msg + retval/data

Type: 
Promise

(async) readLog(sfid, id, mode, size, safe) → {Promise}

读记录文件数据

Parameters:
NameTypeDefaultDescription
sfidnumber

文件短标识符(0x01~0x1F) 0x00=当前打开的文件

idnumber

读取的记录编号或标识 如果为0x00则代表当前记录

modeLogIdMode

记录ID模式 参考LogIdMode

sizenumber0

指定读取的大小 默认0最大程度读取全部

safeRfSafenull

线路安全选项 参考RfSafe方法生成 默认忽略

Returns:

err/msg + retval/data

Type: 
Promise

(async) readTlv(sfid, id, mode, size, safe) → {Promise}

读变长记录文件数据

Parameters:
NameTypeDefaultDescription
sfidnumber

文件短标识符(0x01~0x1F) 0x00=当前打开的文件

idnumber

读取的记录编号或标识 如果为0x00则代表当前记录

modeLogIdMode

记录ID模式 参考LogIdMode

sizenumber0

指定读取的大小 默认0最大程度读取全部

safeRfSafenull

线路安全选项 参考RfSafe方法生成 默认忽略

Returns:

err/msg + retval/data(TlvData对象)

Type: 
Promise

(async) selectAID(aid) → {Promise}

选择专用标识

Parameters:
NameTypeDescription
aidstring

专用应用标识十六进制字符串

Returns:

err/msg + retval/[fci={df/private/sfi/ver/tmp}(注意FCI每个字段都非必定存在)]

Type: 
Promise

(async) selectFID(fid) → {Promise}

选择文件id

Parameters:
NameTypeDescription
fidnumber

文件标识符ID

Returns:

err/msg + retval/[fci={df/private/sfi/ver/tmp}(注意FCI每个字段都非必定存在)]

Type: 
Promise

(async) selectName(name) → {Promise}

选择字符串文件名

Parameters:
NameTypeDescription
namestring

字符串文件名称

Returns:

err/msg + retval/[fci={df/private/sfi/ver/tmp}(注意FCI每个字段都非必定存在)]

Type: 
Promise

setCpuCosReader(cpuCosReader)

重新设置CPU-COS读卡器操作对象

Parameters:
NameTypeDescription
cpuCosReaderCpuCosTypeA | CpuCosTypeB

CPU-COS读卡器操作对象

(async) verify(id, pin) → {Promise}

验证用户口令PIN

Parameters:
NameTypeDescription
idnumber

口令密钥标识ID 通常为0x00

pinstring

用户字符口令

Returns:

err/msg + retval

Type: 
Promise

(async) writeBin(sfid, pos, data, safe) → {Promise}

写普通文件数据

Parameters:
NameTypeDefaultDescription
sfidnumber

文件短标识符(0x01~0x1F) 0x00=当前打开的文件

posnumber

起始位置偏移量 如果sfid=0偏移最大0x7FFF否则最大0xFF

datastring

写入的十六进制字符串数据

safeRfSafenull

线路安全选项 参考RfSafe方法生成 默认忽略

Returns:

err/msg + retval

Type: 
Promise

(async) writeLog(sfid, id, mode, data, safe) → {Promise}

写记录文件数据

Parameters:
NameTypeDefaultDescription
sfidnumber

文件短标识符(0x01~0x1F) 0x00=当前打开的文件

idnumber

写入位置的记录编号或标识 如果为0x00则代表当前记录

modeLogIdMode

记录ID模式 参考LogIdMode

datastring

写入的十六进制字符串数据 注意不能超过创建时定长记录大小

safeRfSafenull

线路安全选项 参考RfSafe方法生成 默认忽略

Returns:

err/msg + retval

Type: 
Promise

(async) writeTlv(sfid, id, mode, tlvData, safe) → {Promise}

写变长TLV记录文件 注意已添加的TLV记录不能改变长度

Parameters:
NameTypeDefaultDescription
sfidnumber

文件短标识符(0x01~0x1F) 0x00=当前打开的文件

idnumber

写入位置的记录编号或标识 如果为0x00则代表当前记录

modeLogIdMode

记录ID模式 参考LogIdMode

tlvDataTlvData

写入的变长记录TLV格式数据 参考TlvData方法生成

safeRfSafenull

线路安全选项 参考RfSafe方法生成 默认忽略

Returns:

err/msg + retval

Type: 
Promise

(static) KeyData(param, alg, provider)

生成KeyData密钥数据对象参数

Parameters:
NameTypeDescription
paramstring

十六进制字符串密钥数据或自定义提供者字符串附加参数

algKeyAlg

默认DES

providerstring

密钥算法运算提供程序回调 暂不支持自定义回调 默认空字符使用内置标准运算

(static) RfSafe(key, enc, mac)

生成RfSafe线路安全对象参数

Parameters:
NameTypeDescription
keyKeyData

线路安全密钥 参考KeyData方法生成

encboolean

安全选项-线路加密

macboolean

安全选项-线路保护

(static) TlvData(tag, data)

生成TlvData变长记录数据对象

Parameters:
NameTypeDescription
tagnumber

记录标签 0x00~0xFF范围

datastring

十六进制字符串数据 字节大小不可超过0xFA

(static) dumpTlvData(tlvData)

获取TlvData变长记录数据对象原始十六进制数据

Parameters:
NameTypeDescription
tlvDataTlvData

变长记录数据对象

(static) parseTlvData(data)

解析原始Tlv数据生成TlvData变长记录数据对象

Parameters:
NameTypeDescription
datastring

十六进制字符串数据