Donsee Linux&國產系統(tǒng)二次開發(fā)文檔(libdonsee.so)
DONSEE系列多功能讀寫器API接口規(guī)范V1.4
libdonsee.so
廣東東信智能科技有限公司
gzwubang.com
2022.10.28
DONSEE系列多功能讀寫器 1
API接口規(guī)范V1.4 1
1、東信智能讀寫器(SDK)簡介 5
2、函數說明 5
2.1通用函數 5
2.1.1 Donsee_Open打開設備 5
2.1.2 Donsee_Close關閉設備 5
2.1.3 Donsee_Beep蜂鳴器函數 5
2.1.4 Donsee_Version讀取設備版本 6
2.1.5 Donsee_WRSN 讀寫序列號(SN) 6
2.1.6 Donsee_SwitchRF設備天線開關 6
2.2身份證 7
2.2.1 Donsee_ReadIDCard讀取身份證信息 7
2.2.2 Donsee_ReadSAMID 讀取模塊SAM碼 8
2.2.3 Donsee_ReadIDCardUid 讀取身份證UID 8
2.3社???8
2.3.1 Donsee_ReadSSCard讀取社保卡信息 9
2.4非接觸類卡片前置函數 9
2.4.1 Donsee_ICRequest請求卡片 9
2.4.2 Donsee_ICAnticoll防碰撞 9
2.4.3 Donsee_ICSelect選擇卡片 10
2.4.4 Donsee_SwitchRF設備天線開關 10
2.5 TypeA、TypeB卡 10
2.5.1 Donsee_SetTypeA設置為TypeA 10
2.5.2 Donsee_SetTypeB設置為TypeB 11
2.5.3 Donsee_PowerOnTypeA TypeA卡上電復位 11
2.5.4 Donsee_PowerOnTypeB TypeB卡上電復位 11
2.5.5 Donsee_APDU執(zhí)行APDU命令 11
2.6 M1卡 12
2.6.1 Donsee_M1VerifyPass M1卡認證秘鑰 12
2.6.2 Donsee_M1VerifyPassHEX M1卡認證秘鑰 12
2.6.3 Donsee_M1Read M1卡讀卡 13
2.6.4 Donsee_M1Write M1卡寫卡 13
2.6.5 Donsee_M1Initval M1卡初始化 13
2.6.6 Donsee_M1Increment M1卡增值 13
2.6.7 Donsee_M1Decrement M1卡減值 14
2.6.8 Donsee_M1Readval M1卡讀值 14
2.6.9 Donsee_M1LoadKey M1卡裝載密鑰 14
2.6.10 Donsee_M1Verify M1卡裝載密鑰 15
2.6.11 Donsee_ReadICUid讀取M1和CPU卡的Uid卡號 15
2.7接觸CPU卡 15
2.7.1 Donsee_PowerOn CPU卡上電復位 15
2.7.2 Donsee_ColdPowerOn 冷復位 16
2.7.3 Donsee_HotPowerOn 熱復位 16
2.7.4 Donsee_APDU CPU卡執(zhí)行APDU命令 17
2.7.5 Donsee_PowerOff下電 17
2.7.6 Donsee_GetStatus獲取卡座狀態(tài) 17
2.8 15693卡 18
2.8.1 Donsee_15693_Find 15693尋卡 18
2.8.2 Donsee_15693_Info 15693獲取卡片詳細信息 18
2.8.3 Donsee_15693_Read 15693讀卡 18
2.8.4 Donsee_15693_Write 15693寫卡 19
2.8.5 Donsee_15693_WriteAFI 15693寫AFI 19
2.8.6 Donsee_15693_LockAFI 15693鎖AFI 19
2.8.7 Donsee_15693_WriteDSFID 15693寫DSFID 19
2.8.8 Donsee_15693_LockDSFID 15693鎖DSFID 20
2.8.9 Donsee_15693_LockDataBlock用于鎖定塊內容 20
2.9 SLE4442卡 20
2.9.1 Donsee_4442_PowerOn 4442卡上電 20
2.9.2 Donsee_4442_PowerOff 4442卡下電 21
2.9.3 Donsee_4442_Read 4442卡讀數據 21
2.9.4 Donsee_4442_Write 4442卡寫數據 21
2.9.5 Donsee_4442_Verify 4442卡認證密鑰 21
2.9.6 Donsee_4442_Change 4442卡修改密鑰 22
2.9.7 Donsee_4442_ReadProtect 4442卡讀保護數據 22
2.9.8 Donsee_4442_WriteProtect 4442卡寫保護數據 22
2.9.9 Donsee_4442_ReadCount 4442卡密鑰剩余認證次數 23
2.10磁條卡 23
2.10.1 Donsee_ReadMagCard磁條卡讀卡 23
2.10.2 Donsee_ReadMagType設置輸出模式 23
2.11北京通 24
2.11.1 Donsee_ReadBJTIDCard讀取北京通信息 24
2.11.2 Donsee_ReadBJTIDCard_Photo讀取北京通照片 25
2.12輔助類函數 25
2.12.1 Donsee_HexToStr 16進制數組轉字符串 25
2.12.2 Donsee_StrToHex 字符串轉16進制數組 25
3、狀態(tài)碼 26
4、卡片調用順序 27
4.1 TypeA卡 27
4.2 TypeB卡 28
4.3 M1卡 28
4.4 4442卡 28
4.5 接觸CPU卡 28
1、智能讀寫器(SDK)簡介
本文檔描述了廣東東信智能科技有限公司DONSEE系列讀寫器Linux系統(tǒng)libdonsee.so的SDK的函數定義、調用方法、參數以及返回值說明,供開發(fā)人員進行二次開發(fā)時使用。
2、函數說明
2.1通用函數
2.1.1 Donsee_Open打開設備
定義:打開設備端口
原型:
long Donsee_Open(char* dev_Name)
參數:
dev_Name[in] :USB設備傳入”USB”
返回值:
0: 打開設備成功;
非0: 打開設備失敗,參考狀態(tài)碼
2.1.2 Donsee_Close關閉設備
定義:關閉設備端口
原型:
long Donsee_Close()
參數:無
返回值:
0: 關閉設備成功;
非0: 關閉設備失敗,參考狀態(tài)碼
2.1.3 Donsee_Beep蜂鳴器函數
定義:調用設備蜂鳴器
原型:
long Donsee_Beep()
參數:無
返回值:
0: 調用蜂鳴器成功;
非0: 調用蜂鳴器失敗,參考狀態(tài)碼
2.1.4 Donsee_Version讀取設備版本
定義:讀取設備版本號
原型:
long Donsee_Version (unsigned char* pszVersion)
參數:
pszVersion [out] 設備版本號
返回值:
0: 獲取設備版本成功;
非0: 獲取設備版本失敗,參考狀態(tài)碼
2.1.5 Donsee_WRSN 讀寫序列號(SN)
定義:寫入(讀取)設備序列號
原型:
long Donsee_WRSN (int nType,unsigned char* pbySerial)
參數:
nType[in] 讀寫類型: 0,寫入序列號;1,讀取序列號
pbySerial[in|out] nType = 0時,[in]寫入序列號數據;nType = 1時,[out]讀出序列號數據
返回值:
0: 序列號操作成功;
非0: 序列號操作失敗,參考狀態(tài)碼
2.1.6 Donsee_SwitchRF設備天線開關
定義:設備天線開關
原型:
long Donsee_SwitchRF (int nType)
參數:
nType 0,打開設備天線;1,關閉設備天線
返回值:
0: 天線開關操作成功;
非0: 天線開關操作失敗,參考狀態(tài)碼
2.2身份證
typedef struct
{
char name[40]; /*中文姓名*/
char ENfullname[40]; /*英文姓名*/
char sex[10]; /*性別*/
char people[20]; /*民族*/
char address[200]; /*地址*/
char birthday[50]; /*出生日期(YYYYMMDD)*/
char signdate[50]; /*發(fā)證日期(YYYYMMDD)*/
char validterm[50]; /*有效日期(YYYYMMDD)*/
char number[40]; /*證件號碼*/
char organs[50]; /*發(fā)證機關(或外國人永久居住正-當次申請受理機關)*/
char Nationality[200]; /*國籍*/
unsigned char Photo[1024]; /*讀取二代證電子信息時保存照片數據信息*/
char Other[200]; /*其他*/
char passNu[24]; /*通行證號*/
char signCount[8]; /*簽發(fā)數次*/
char certVersion[8]; /*證件版本*/
char certType; /*卡片類型,”0”大陸身份證” ”,I”外國人,”J”港澳臺*/
char figData[1024]; /*指紋信息*/
} IDINFO;
2.2.1 Donsee_ReadIDCard讀取身份證信息
定義:讀取身份證信息
原型:long Donsee_ReadIDCard (int nType,int nMode,char* szPath,IDINFO* idinfo,char* pszMsg);
參數:
nType [in]: 設置身份證讀卡類型:0,文本信息;1,文本+照片;2,文本+照片+指紋
nMode [in]: 設置讀卡模式,0,讀卡1次,拿開后放上重讀;1,連續(xù)讀卡
szPath[in]: 獲取二代證頭像路徑
idinfo [out]; 獲取的身份證信息
pszMsg [out]; 錯誤信息
返回值:
0: 讀取身份證信息成功;
非0: 讀取身份證信息失敗,參考狀態(tài)碼
2.2.2 Donsee_ReadSAMID 讀取模塊SAM碼
定義:讀取身份證模塊SAM碼
原型:long Donsee_ReadSAMID (char* pszSAMID);
參數:
pszSAMID [out] 身份證模塊SAM碼
返回值:
0: 讀取身份證模塊SAM碼成功;
非0: 讀取身份證模塊SAM碼失敗,參考狀態(tài)碼
2.2.3 Donsee_ReadIDCardUid 讀取身份證UID
定義:讀取身份證UID
原型:long Donsee_ReadIDCardUid(char* pszUID);
參數:
pszUID [out] 身份證UID碼
返回值:
0: 讀取身份證UID成功;
非0: 讀取身份證UID失敗,參考狀態(tài)碼
2.3社???/span>
typedef struct
{
char name[40]; /*姓名*/
char sex[10]; /*性別*/
char nation[20]; /*民族*/
char birthday[50]; /*出生日期(YYYYMMDD)*/
char signdate[50]; /*發(fā)證日期(YYYYMMDD)*/
char validterm[50]; /*有效日期(YYYYMMDD)*/
char cardnumber[40]; /*卡號*/
char idnumber[40]; /*社會保障號碼(身份證號)*/
char city[64] ; /*城市代碼*/
char cardveVrsion[8] ; /*社保卡版本*/
char Other[200]; /*其他*/
} SSCard_IDINFO;
2.3.1 Donsee_ReadSSCard讀取社??ㄐ畔?/span>
定義:讀取二代、三代社???/span>
原型:
long Donsee_ReadSSCard (int nSlotPsam,SSCard_IDINFO* cardInfo,char* arrChMsg);
參數:
nSlotPsam [int] PSAM存放卡座,0x11 SAM1, 0x12 SAM2, 0x13 SAM3, 0x14 SAM4
cardInfo [out] 社保卡信息
arrChMsg [out] 錯誤信息
返回值:
0: 讀取社??ǔ晒Γ?/span>
非0: 讀取社??ㄊ?,參考狀態(tài)碼
備注:二代社??o需PSAM卡,只支持接觸式讀取。三代社??ū仨毰鋫銹SAM卡,支持接觸、非接兩種方式讀取。
2.4非接觸類卡片前置函數
2.4.1 Donsee_ICRequest請求卡片
定義:請求卡片
原型:
long Donsee_ICRequest ()
參數:
返回值:
0: 請求卡片成功;
非0: 請求卡片失敗,參考狀態(tài)碼
2.4.2 Donsee_ICAnticoll防碰撞
定義:卡片防碰撞
原型:
long Donsee_ICAnticoll (unsigned char* pszUID)
參數:
chUID[out] 卡片序列號Uid
返回值:
0: 卡片防碰撞成功;
非0: 卡片防碰撞失敗,參考狀態(tài)碼
2.4.3 Donsee_ICSelect選擇卡片
定義:選擇卡片
原型:
long Donsee_ICSelect (unsigned char nCardType)
參數:
nCardType [in] 0x41 表示 typeA 及M1 卡,0x42 表示 typeB卡
返回值:
0: 選擇卡片成功;
非0: 選擇卡片失敗,參考狀態(tài)碼
2.4.4 Donsee_SwitchRF設備天線開關
定義:設備天線開關
原型:
long Donsee_SwitchRF (int nFlag)
參數:
nType 0,打開設備天線;1,關閉設備天線
返回值:
0: 天線開關操作成功;
非0: 天線開關操作失敗,參考狀態(tài)碼
2.5 TypeA、TypeB卡
2.5.1 Donsee_SetTypeA設置為TypeA
定義:設置為TypeA卡
原型:
long Donsee_SetTypeA ()
參數:
返回值:
0: 設置為TypeA卡成功;
非0: 設置為TypeA卡失敗,參考狀態(tài)碼
2.5.2 Donsee_SetTypeB設置為TypeB
定義:設置為TypeB卡
原型:
long Donsee_SetTypeB ()
參數:
返回值:
0: 設置為TypeB卡成功;
非0: 設置為TypeB卡失敗,參考狀態(tài)碼
2.5.3 Donsee_PowerOnTypeA TypeA卡上電復位
定義:TypeA上電
原型:
long Donsee_ PowerOnTypeA (unsigned char* pszAtr)
參數:
pszAtr [out] 卡片復位信息(ATR)
返回值:
0: TypeA上電成功;
非0: TypeA上電失敗,參考狀態(tài)碼
2.5.4 Donsee_PowerOnTypeB TypeB卡上電復位
定義:TypeB上電
原型:
long Donsee_PowerOnTypeB(unsigned char* pszAtr)
參數:
pszAtr [out] 卡片復位信息(ATR)
返回值:
0: TypeB上電成功;
非0: TypeB上電失敗,參考狀態(tài)碼
2.5.5 Donsee_APDU執(zhí)行APDU命令
定義:TypeA|TypeB執(zhí)行APDU命令
原型:
long Donsee_APDUType(char* szAPDUCmd, char* pszAPDUResult);
參數:
szAPDUCmd [in] 下發(fā)APDU命令(字符串”0084000008”)
pszAPDUResult [out] 執(zhí)行APDU相應數據(字符串如”9000”)
返回值:
0: 執(zhí)行APDU命令成功;
非0: 執(zhí)行APDU命令失敗,參考狀態(tài)碼
2.6 M1卡
2.6.1 Donsee_M1VerifyPass M1卡認證秘鑰
定義:M1卡認證秘鑰
原型:
long Donsee_M1VerifyPass (unsigned char nMode, unsigned char nSecNr,char *szPassKey)
參數:
nMode [in] 認證模式, 0x00 認證KeyA|0x04 認證KeyB
nSecNr [in] 扇區(qū)號 (0~15)
szPassKey [in] 密鑰(如:”FFFFFFFFFFFF”)
返回值:
0: M1卡認證秘鑰成功;
非0: M1卡認證秘鑰失敗,參考狀態(tài)碼
2.6.2 Donsee_M1VerifyPassHEX M1卡認證秘鑰
定義:M1卡認證秘鑰
原型:
long Donsee_M1VerifyPassHex (unsigned char nMode, unsigned char nSecNr, unsigned char * szPassKey)
參數:
nMode [in] 認證模式, 0x00 認證KeyA|0x04 認證KeyB
nSecNr [in] 扇區(qū)號 (0~15)
szPassKey [in] 密鑰(如:{0xff,0xff,0xff ,0xff ,0xff ,0xff })
返回值:
0: M1卡認證秘鑰成功;
非0: M1卡認證秘鑰失敗,參考狀態(tài)碼
2.6.3 Donsee_M1Read M1卡讀卡
定義:M1卡讀卡
原型:
long Donsee_M1Read(unsigned char nAddr, unsigned char *pszData)
參數:
nAddr [in] 塊號(S50該值范圍0~63| S70該值范圍0~255)
pszData [out] 讀取數據
返回值:
0: M1卡讀卡成功;
非0: M1卡讀卡失敗,參考狀態(tài)碼
2.6.4 Donsee_M1Write M1卡寫卡
定義:M1卡寫卡
原型:
long Donsee_M1Write(unsigned char nAddr, char *pszData)
參數:
nAddr [in] 塊號(S50該值范圍0~63| S70該值范圍0~255)
pszData [in] 讀取數據
塊地址計算公式:塊地址=扇區(qū)號*4+當前塊號
返回值:
0: M1卡寫卡成功;
非0: M1卡寫卡失敗,參考狀態(tài)碼
2.6.5 Donsee_M1Initval M1卡初始化
定義:M1卡初始化
原型:
long Donsee_M1Initval (unsigned char nAddr, unsigned long nValue)
參數:
nAddr[in] 塊號(S50該值范圍0~63| S70該值范圍0~255)
nValue [in] 數值
返回值:
0: M1卡初始化成功;
非0: M1卡初始化失敗,參考狀態(tài)碼
2.6.6 Donsee_M1Increment M1卡增值
定義:M1卡增值
原型:
long Donsee_M1Increment (unsigned char nAddr, unsigned long nValue)
參數:
nAddr[in] 塊號(S50該值范圍0~63| S70該值范圍0~255)
nValue [in] 數值
返回值:
0: M1卡增值成功;
非0: M1卡增值失敗,參考狀態(tài)碼
2.6.7 Donsee_M1Decrement M1卡減值
定義:M1卡減值
原型:
long Donsee_M1Decrement (unsigned char nAddr, unsigned long nValue)
參數:
nAddr[in] 塊號(S50該值范圍0~63| S70該值范圍0~255)
nValue [in] 數值
返回值:
0: M1卡減值成功;
非0: M1卡減值失敗,參考狀態(tài)碼
2.6.8 Donsee_M1Readval M1卡讀值
定義:M1卡讀值
原型:
long Donsee_M1Readval (unsigned char nAddr, unsigned long* nValue)
參數:
nAddr[in] 塊號(S50該值范圍0~63| S70該值范圍0~255)
nValue [out] 數值
返回值:
0: M1卡讀值成功;
非0: M1卡讀值失敗,參考狀態(tài)碼
2.6.9 Donsee_M1LoadKey M1卡裝載密鑰
定義:裝載M1卡密鑰到設備
原型:
long Donsee_M1LoadKey (unsigned char nMode,unsigned char nSecNr,char *PassWord);
參數:
nMode [in] 認證模式, 0x00 認證KeyA|0x04 認證KeyB
nSecNr [in] 扇區(qū)號 (0~15)
PassWord [in] 待下載到設備的密鑰,如”FFFFFFFFFFFF”
例子:
char key[16]= ”FFFFFFFFFFFF”;
int nRe = Donsee_M1LoadKey (0,0,key);//下載扇區(qū)0的KeyA密鑰至設備里
返回值:
0: M1卡裝載密鑰成功;
非0: M1卡裝載密鑰失敗,參考狀態(tài)碼
2.6.10 Donsee_M1Verify M1卡裝載密鑰
定義:裝載M1卡密鑰到設備
原型:
long Donsee_M1Verify(unsigned char nMode, unsigned char nSecNr);
參數:
nMode [in] 認證模式, 0x00 認證KeyA|0x04 認證KeyB
nSecNr [in] 扇區(qū)號 (0~15)
返回值:
0: M1卡認證裝載密鑰成功;
非0: M1卡認證裝載密鑰失敗,參考狀態(tài)碼
2.6.11 Donsee_ReadICUid讀取M1和CPU卡的Uid卡號
定義:讀取M1和CPU卡UID
原型:
long Donsee_ReadICUid (unsigned char* pszUID)
參數:
pszUID[out] 卡片UID
返回值:
0: 讀取M1和CPU卡的Uid卡號成功;
非0: 讀取M1和CPU卡的Uid卡號失敗,參考狀態(tài)碼
2.7接觸CPU卡
2.7.1 Donsee_PowerOn CPU卡上電復位
定義:CPU卡上電復位
原型:
long Donsee_PowerOn (unsigned char nSlotNo,unsigned char* pszAtr)
參數:
nSlotNo[in] 卡座選擇: 0x01 大卡座, 0x02:副卡座 ;
0x11:SAM1卡座;0x12:SAM2卡座;
0x13:SAM3卡座;0x14:SAM4卡座
pszAtr [out] 卡片返回復位信息數據
返回值:
0: 卡片復位成功;
非0: 卡片復位失敗,參考狀態(tài)碼
2.7.2 Donsee_ColdPowerOn 冷復位
定義:接觸CPU卡冷復位
原型:
long Donsee_ColdPowerOn (unsigned char nSlotNo, char* pszAtr)
參數:
nSlotNo[in] 卡座選擇: 0x01 大卡座, 0x02:副卡座 ;
0x11:SAM1卡座;0x12:SAM2卡座;
0x13:SAM3卡座;0x14:SAM4卡座
pszAtr [out] 卡片返回復位信息數據
返回值:
0: 卡片復位成功;
非0: 卡片復位失敗,參考狀態(tài)碼
2.7.3 Donsee_HotPowerOn 熱復位
定義:接觸CPU卡熱復位
原型:
long Donsee_HotPowerOn (unsigned char nSlotNo, char* pszAtr)
參數:
nSlotNo[in] 卡座選擇: 0x01 大卡座, 0x02:副卡座 ;
0x11:SAM1卡座;0x12:SAM2卡座;
0x13:SAM3卡座;0x14:SAM4卡座
chResponse [out] 卡片返回復位信息數據
返回值:
0: 卡片復位成功;
非0: 卡片復位失敗,參考狀態(tài)碼
2.7.4 Donsee_APDU CPU卡執(zhí)行APDU命令
定義:執(zhí)行APDU命令
原型:
long Donsee _APDU( unsigned char nSlotNo,
unsigned char* szAPDUCmd,
unsigned char* pszAPDUResult)
參數:
nSlotNo[in] 卡座選擇: 0x01 大卡座, 0x02:副卡座 ;
0x11:SAM1卡座;0x12:SAM2卡座;
0x13:SAM3卡座;0x14:SAM4卡座
szAPDUCmd [in] 下發(fā)APDU命令(字符串”0084000008”)
pszAPDUResult [out] 執(zhí)行APDU相應數據(字符串如”9000”)
返回值:
0: 執(zhí)行APDU命令成功;
非0: 執(zhí)行APDU命令失敗,參考狀態(tài)碼
2.7.5 Donsee_PowerOff下電
定義:CPU卡下電
原型:
long Donsee_PowerOff (unsigned char nSlotNo)
參數:
nSlotNo[in] 卡座選擇: 0x01 大卡座, 0x02:副卡座 ;
0x11:SAM1卡座;0x12:SAM2卡座;
0x13:SAM3卡座;0x14:SAM4卡座
返回值:
0: CPU卡下電成功;
非0: CPU卡下電失敗,參考狀態(tài)碼
2.7.6 Donsee_GetStatus獲取卡座狀態(tài)
定義:獲取卡座狀態(tài)
原型:
long Donsee_GetStatus(unsigned char nSlotNo,int* nStatus)
參數:
nSlotNo[in] 卡座選擇: 0x01 大卡座, 0x02:副卡座 ;
0x11:SAM1卡座;0x12:SAM2卡座;
0x13:SAM3卡座;0x14:SAM4卡座
nStatus[out] 卡座狀態(tài):為 0 表示有卡上電,1表示有卡未上,2表示無卡
返回值:
0: 獲取卡座狀態(tài)成功;
非0: 獲取卡座狀態(tài)失敗,參考狀態(tài)碼
2.8 15693卡
2.8.1 Donsee_15693_Find 15693尋卡
定義:15693尋卡
原型:
long Donsee_15693_Find (char* pszUID)
參數:
pszUID [out] 尋卡得到8字節(jié)卡片數據;
返回值:
0: 15693尋卡成功;
非0: 15693尋卡失敗,參考狀態(tài)碼
2.8.2 Donsee_15693_Info 15693獲取卡片詳細信息
定義:獲取15693卡詳細信息
原型:
long Donsee_15693_Info (char* pszCardInfo)
參數:
pszCardInfo [out] 14字節(jié)卡片數據;
返回值:
0: 獲取15693卡詳細信息成功;
非0: 獲取15693卡詳細信息失敗,參考狀態(tài)碼
2.8.3 Donsee_15693_Read 15693讀卡
定義:15693讀卡
原型:
long Donsee_15693_Read (unsigned char nBlkAdd, unsigned char* pszValue)
參數:
nBlkAdd[in] 塊地址
pszValue [out] 14字節(jié)卡片數據;
返回值:
0: 15693讀卡成功;
非0: 15693讀卡失敗,參考狀態(tài)碼
2.8.4 Donsee_15693_Write 15693寫卡
定義:15693寫卡
原型:
long Donsee_15693_Write (unsigned char nBlkAdd, unsigned char* szData)
參數:
nBlkAdd[in] 塊地址
szData [in] 要寫入的4字節(jié)卡片數據;
返回值:
0: 15693寫卡成功;
非0: 15693寫卡失敗,參考狀態(tài)碼
2.8.5 Donsee_15693_WriteAFI 15693寫AFI
定義:15693寫AFI
原型:
long Donsee_15693_WriteAFI (unsigned char szValue, unsigned char* pszValue)
參數:
szValue [in] 寫入的值
pszValue [in] NULL
返回值:
0: 15693寫AFI成功;
非0: 15693寫AFI失敗,參考狀態(tài)碼
2.8.6 Donsee_15693_LockAFI 15693鎖AFI
定義:15693寫AFI
原型:
long Donsee_15693_LookAFI (unsigned char*szValue, unsigned char* pszValue)
參數:
szValue [in] 寫入的值
pszValue [in] NULL
返回值:
0: 15693鎖AFI成功;
非0: 15693鎖AFI失敗,參考狀態(tài)碼
2.8.7 Donsee_15693_WriteDSFID 15693寫DSFID
定義:15693寫DSFID
原型:
long Donsee_15693_WriteDSFID (unsigned char* szValue, unsigned char* pszValue)
參數:
szValue [in] 寫入的值
pszValue [in] NULL
返回值:
0: 15693寫DSFID成功;
非0: 15693寫DSFID 失敗,參考狀態(tài)碼
2.8.8 Donsee_15693_LockDSFID 15693鎖DSFID
定義:15693鎖DSFID
原型:
long Donsee_15693_LockDSFID (unsigned char szValue, unsigned char* pszValue )
參數:
szValue [in] 寫入的值
pszValue [out] NULL
返回值:
0: 15693鎖DSFID成功;
非0: 15693鎖DSFID失敗,參考狀態(tài)碼
2.8.9 Donsee_15693_LockDataBlock用于鎖定塊內容
定義:用于鎖定塊內容。注意:此過程不可逆(不能解鎖)塊鎖定后內容不能在修改。
原型:
long Donsee_15693_LockDataBlock(unsigned char nBlk_add,unsigned char* pszValue)
參數:
nBlk_add [in] 塊地址
pszValue [out] 返回數據
返回值:
0: 15693鎖塊內容成功;
非0: 15693鎖塊內容失敗,參考狀態(tài)碼
2.9 SLE4442卡
2.9.1 Donsee_4442_PowerOn 4442卡上電
定義:4442卡上電
原型:
long Donsee_4442_PowerOn (char* pszUID)
參數:
pszUID [out] 上電返回數據,4字節(jié)廠商代碼
返回值:
0: 4442卡上電成功;
非0: 4442卡上電失敗,參考狀態(tài)碼
2.9.2 Donsee_4442_PowerOff 4442卡下電
定義:4442卡下電
原型:
long Donsee_4442_PowerOff ()
參數:
返回值:
0: 4442卡下電成功;
非0: 4442卡下電失敗,參考狀態(tài)碼
2.9.3 Donsee_4442_Read 4442卡讀數據
定義:4442卡讀取數據
原型:
long Donsee_4442_Read (int nOffset, int nLen, char* pszData)
參數:
nOffset[in] 起始地址
nLen[in] 讀取數據長度
pszData [iout] 讀取的數據內容
返回值:
0: 4442卡讀取數據成功;
非0: 4442卡讀取數據失敗,參考狀態(tài)碼
2.9.4 Donsee_4442_Write 4442卡寫數據
定義:4442卡寫入數據
原型:
long Donsee_4442_Write (int nOffset, int nLen, char* szData)
參數:
nOffset[in] 起始地址
nLen[in] 寫入數據長度
szData [in] 寫入的數據內容
返回值:
0: 4442卡寫入數據成功;
非0: 4442卡寫入數據失敗,參考狀態(tài)碼
2.9.5 Donsee_4442_Verify 4442卡認證密鑰
定義:4442卡認證秘鑰
原型:
long Donsee_4442_Verify(char* szKey)
參數:
szKey [in] 秘鑰數據,如unsigned char chKey [4]={0xff,0xff,0xff};
返回值:
0: 4442卡認證秘鑰成功;
非0: 4442卡認證秘鑰失敗,參考狀態(tài)碼
2.9.6 Donsee_4442_Change 4442卡修改密鑰
定義:4442卡修改秘鑰
原型:
long Donsee_4442_Change (char *szNewKey)
參數:
szNewKey [in] 秘鑰數據,如unsigned char chNewKey [4]={0xff,0xff,0xff};
返回值:
0: 4442卡修改密鑰成功;
非0: 4442卡修改密鑰失敗,參考狀態(tài)碼
2.9.7 Donsee_4442_ReadProtect 4442卡讀保護數據
定義:4442卡讀取保護數據
原型:
long Donsee_4442_ReadProtect (int nOffset, int nLen, char* pszData)
參數:
nOffset[in] 起始地址,起始地址 需小于32
nLen[in] 讀取數據長度,數據長度 需小于32
pszData [iout] 讀取的數據內容,返回值為一串00或01的數據串,如果為00代表已寫保護,如果為01代表未寫保護
返回值:
0: 4442卡讀保護數據成功;
非0: 4442卡讀保護數據失敗,參考狀態(tài)碼
2.9.8 Donsee_4442_WriteProtect 4442卡寫保護數據
定義:4442卡寫入保護數據,即固化數據,一旦寫保護,數據將不能再修改
原型:
long Donsee_4442_WriteProtect (int nOffset, int nLen, char* szData)
參數:
nOffset[in] 起始地址,起始地址 需小于32
nLen[in] 讀取數據長度,數據長度 需小于32
szData [in] 讀取的數據內容,返回值為一串00或01的數據串,如果為00代表已寫保護,如果為01代表未寫保護
返回值:
0: 4442卡寫保護數據成功;
非0: 4442卡寫保護數據失敗,參考狀態(tài)碼
2.9.9 Donsee_4442_ReadCount 4442卡密鑰剩余認證次數
定義:4442卡密鑰剩余認證次數
原型:
long Donsee_4442_ReadCount (int* nCount)
參數:
nCount [out] 4442卡密鑰剩余認次數
返回值:
0: 獲取4442卡密鑰剩余認證次數成功;
非0: 獲取4442卡密鑰剩余認證次數失敗,參考狀態(tài)碼
2.10磁條卡
2.10.1 Donsee_ReadMagCard磁條卡讀卡
定義:磁條卡讀卡
原型:
long Donsee_ReadMagCard (unsigned char nTime,int nTrack,char *pszTrackData)
參數:
ctime[in] 超時時間,單位:秒
track [in] 磁道(1~3)磁道1~~磁道3,track=4時表示全軌一次性刷出
為TLV格式,例如:010101020201020303010203
getdata [out] 返回的數據
返回值:
0: 磁條卡讀卡成功;
非0: 磁條卡讀卡失敗,參考狀態(tài)碼
2.10.2 Donsee_ReadMagType設置輸出模式
定義:磁條卡設置輸出模式
原型:
long Donsee_ReadMagType (int nMode, unsigned char* szConfig)
參數:
nMode [in] 0表示主動讀卡,1表示被動讀
szConfig [in] szConfig [0]: 0x01 磁道1
0x02 磁道2
0x03 磁道3
0x04 磁道2\3
szConfig [1]: 0x00 全部輸出
0x01除去起始接收符輸出
0x02只輸出數據
szConfig [2]: 0x00不換行輸出
0x01換行輸出
返回值:
0: 磁條卡設置輸出模式成功;
非0: 磁條卡設置輸出模式失敗,參考狀態(tài)碼
2.11北京通
typedef struct
{
char name[40]; /*姓名*/
char sex[10]; /*性別*/
char cardnumber[40]; /*北京通號*/
char nType[32] ; /*卡片類型*/
char cardName[40]; /*證件名稱*/
char organs[50]; /*發(fā)卡機構*/
} BJT_IDINFO;
2.11.1 Donsee_ReadBJTIDCard讀取北京通信息
定義:讀取北京通信息
原型:
long Donsee_ReadBJTIDCard (BJT_IDINFO* cardInfo,char* arrChMsg);
參數:
cardInfo [out] 北京通信息
arrChMsg [out] 錯誤信息
返回值:
0: 讀取北京通信息成功;
非0: 讀取北京通信息失敗,參考狀態(tài)碼
2.11.2 Donsee_ReadBJTIDCard_Photo讀取北京通照片
定義:讀取北京通信息
原型:
long Donsee_ReadBJTIDCard_Photo (unsigned char cardInfoPhoto*,char* arrChMsg);
參數:
cardInfoPhoto[out] 北京通照片信息
arrChMsg [out] 錯誤信息
返回值:
0: 讀取北京通照片信息成功;
非0: 讀取北京通照片信息失敗,參考狀態(tài)碼
2.12輔助類函數
2.12.1 Donsee_HexToStr 16進制數組轉字符串
定義:16進制數組轉字符串
原型:
long Donsee_HexToStr(unsigned char *Src,int len,unsigned char *Des );
參數:
Src[in]: 十六進制數組
Len[in]: 數據長度
Des[out]: 轉換好的hexstr格式字符串。
返回值:
0: 16進制數組轉字符串成功;
非0: 16進制數組轉字符串失敗,參考狀態(tài)碼
2.12.2 Donsee_StrToHex 字符串轉16進制數組
定義:字符串轉16進制數組
原型:long Donsee_StrToHex(unsigned char *Src, int len,unsigned char *Des);
參數:
Src[in]: hexstr格式字符串
Len[in]: 字節(jié)長度
Des[out]; 轉換好的數據
返回值:
0: 字符串轉16進制數組成功;
非0: 字符串轉16進制數組失敗,參考狀態(tài)碼
3、狀態(tài)碼
IFD_OK 0 執(zhí)行成功
IFD_ICC_TypeError -1 卡片類型不對
IFD_ICC_NoExist -2 無卡
IFD_ICC_NoPower -3 有卡未上電
IFD_ICC_NoResponse -4 卡片無應答
IFD_ConnectError -11 讀卡器連接錯
IFD_UnConnected -12 未建立連接(沒有執(zhí)行打開設備函數)
IFD_BadCommand -13 (動態(tài)庫)不支持該命令
IFD_ParameterError -14 (發(fā)給動態(tài)庫的)命令參數錯
IFD_CheckSumError -15 信息校驗和出錯
社??顟B(tài)碼
返回值 錯誤信息描述
-1 卡類型不對
-2 無卡
-3 有卡未上電
-4 卡無應答
-5 加載動態(tài)庫錯
-11 讀卡器連接錯
-12 未建立連接
-13 (動態(tài)庫)不支持該命令
-14 (發(fā)給動態(tài)庫的)命令參數錯
-15 信息校驗和出錯
-20 卡識別碼格式錯
-21 內部認證失敗(用戶卡不合法)
-22 傳入數據與卡內不符
-23 傳入數據不合法
-24 PSAM卡密鑰級別不夠
-31 用戶取消密碼輸入
-32 密碼輸入操作超時
-33 輸入密碼長度錯
-34 兩次輸入密碼不一致
-35(預留) 初始密碼不能交易
-36(預留) 不能改為初始密碼
-41 運算數據含非法字符
-42 運算數據長度錯
-51 PIN校驗失敗,剩余次數N次(根據卡返回信息)
-52 PIN鎖定
-2201 無PSAM卡
-2202 PSAM卡算法不支持(即PSAM卡內沒有SSF33算法或SM4算法)
-2203 PSAM卡內沒有RKSSSE密鑰(3.0卡讀個人基本信息需要RKSSSE密鑰外部認證)
-2204 不需要加密機認證
-25536、-25537、-25538 外部認證失敗,剩余可嘗試次數2、1、0次
-26368 Lc/Le不正確
-26881 命令不接受(無效狀態(tài))
-27009 命令與文件結構不相符、當前文件非所需文件
-27010 不滿足安全條件
-27011 密鑰鎖定(算法鎖定)鑒別方法鎖定
-27012 引用數據無效、隨機數無效
-27013 不滿足使用條件、應用被鎖定、應用未選擇、余額上溢
-27016 安全報文數據項不正確、MAC不正確
-27264 數據域參數不正確
-27265 不支持該功能、卡中無MF、卡被鎖定、應用鎖定
-27266 未找到文件、文件標識相重、SFI不正確
-27267 未找到記錄
-27272 未找到引用數據、未找到密鑰
-37634 MAC無效
-37635 應用已被永久鎖定、卡片鎖定
-37891 PSAM卡不支持消費交易
-37894 所需MAC(或/和TAC)不可用
其他 未知錯誤
4、卡片調用順序
4.1 TypeA卡
1 設置為TypeA卡片
2 請求卡片
3 防碰撞
4 選擇卡片
5 上電
6 APDU 命令
4.2 TypeB卡
1 設置為TypeB卡片
2 上電
3 選卡
4 APDU 命令
4.3 M1卡
1 請求卡片
2 防碰撞
3 選擇卡片
4 認證密鑰
5 讀或寫
4.4 4442卡
1 上電復位
2 認證
3 讀或寫
4.5 接觸CPU卡
1 上電
2 APDU 命令