package com.netsdk.demo.customize; import com.netsdk.demo.util.CaseMenu; import com.netsdk.lib.ToolKits; import com.netsdk.lib.structure.*; import com.netsdk.lib.utils.Initialization; import com.sun.jna.Pointer; import java.io.UnsupportedEncodingException; /** * @author 291189 * @version 1.0 * @description * @date 2022/6/23 10:34 */ public class DynamicLockDemo extends Initialization { /** * 根据中心公钥获取锁具随机公钥 */ public void GetDynamicLockRandomPublicKey(){ NET_IN_GET_DYNAMIC_LOCK_RANDOM_PUBLICKEY_INFO input=new NET_IN_GET_DYNAMIC_LOCK_RANDOM_PUBLICKEY_INFO(); /** 密码锁ID */ String szID="XXiD1"; ToolKits.StringToByteArr(szID,input.szID); /** 中心公钥 */ String szCenterPublicKey="xxx1"; ToolKits.StringToByteArr(szCenterPublicKey,input.szCenterPublicKey); Pointer pointerInput=new Pointer(input.size()); pointerInput.clear(input.size()); ToolKits.SetStructDataToPointer(input,pointerInput,0); NET_OUT_GET_DYNAMIC_LOCK_RANDOM_PUBLICKEY_INFO outPut=new NET_OUT_GET_DYNAMIC_LOCK_RANDOM_PUBLICKEY_INFO(); Pointer pointerOutput=new Pointer(outPut.size()); pointerOutput.clear(outPut.size()); ToolKits.SetStructDataToPointer(outPut,pointerOutput,0); boolean b = netSdk.CLIENT_GetDynamicLockRandomPublicKey(loginHandle, pointerInput, pointerOutput, 3000); if (!b) { printlns("CLIENT_GetDynamicLockRandomPublicKey false Last Error:"+ netSdk.CLIENT_GetLastError()); return; }else { printlns("CLIENT_GetDynamicLockRandomPublicKey success"); ToolKits.GetPointerData(pointerOutput, outPut); //动态密码锁错误码 {@link com.netsdk.lib.enumeration.EM_DYNAMIC_LOCK_ERRORCODE} int emErrorCode = outPut.emErrorCode; printlns("emErrorCode:"+emErrorCode); byte[] szRandomPublicKey = outPut.szRandomPublicKey; try { printlns("szRandomPublicKey:"+new String(szRandomPublicKey,encode)); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } } } /** * 设置通讯秘钥 */ public void SetDynamicLockCommunicationKey(){ NET_IN_SET_DYNAMIC_LOCK_COMMUNICATIONKEY_INFO input=new NET_IN_SET_DYNAMIC_LOCK_COMMUNICATIONKEY_INFO(); /** *密码锁ID */ String szID="XXiD1"; ToolKits.StringToByteArr(szID,input.szID); /** *通讯密钥 */ String szCommuKey="xxx1"; ToolKits.StringToByteArr(szCommuKey,input.szCommuKey); /** 通讯密钥校验数据 */ String szKeyVerify="xxx2"; ToolKits.StringToByteArr(szKeyVerify,input.szKeyVerify); /** 原通讯密钥校验数据 */ String szOldKeyVerify="xxx3"; ToolKits.StringToByteArr(szOldKeyVerify,input.szOldKeyVerify); /** 加密主机私钥签名 */ String szPrivateSigniture="xxx4"; ToolKits.StringToByteArr(szPrivateSigniture,input.szPrivateSigniture); Pointer pointerInput=new Pointer(input.size()); pointerInput.clear(input.size()); ToolKits.SetStructDataToPointer(input,pointerInput,0); NET_OUT_SET_DYNAMIC_LOCK_COMMUNICATIONKEY_INFO outPut=new NET_OUT_SET_DYNAMIC_LOCK_COMMUNICATIONKEY_INFO(); Pointer pointerOutput=new Pointer(outPut.size()); pointerOutput.clear(outPut.size()); ToolKits.SetStructDataToPointer(outPut,pointerOutput,0); boolean b = netSdk.CLIENT_SetDynamicLockCommunicationKey(loginHandle, pointerInput, pointerOutput, 3000); if (!b) { printlns("CLIENT_SetDynamicLockCommunicationKey false Last Error:"+ netSdk.CLIENT_GetLastError()); return; }else { printlns("CLIENT_SetDynamicLockCommunicationKey success"); ToolKits.GetPointerData(pointerOutput, outPut); //动态密码锁错误码 {@link com.netsdk.lib.enumeration.EM_DYNAMIC_LOCK_ERRORCODE} int emErrorCode = outPut.emErrorCode; printlns("emErrorCode:"+emErrorCode); } } /** * 设置开锁密钥 */ public void SetDynamicLockOpenKey(){ NET_IN_SET_DYNAMIC_LOCK_OPENKEY_INFO input=new NET_IN_SET_DYNAMIC_LOCK_OPENKEY_INFO(); /** *密码锁ID */ String szID="XXiD1"; ToolKits.StringToByteArr(szID,input.szID); /** *开锁密钥 */ String szOpenKey="xxx1"; ToolKits.StringToByteArr(szOpenKey,input.szOpenKey); /** 开锁密钥校验 */ String szKeyVerify="xxx2"; ToolKits.StringToByteArr(szKeyVerify,input.szKeyVerify); /** 开锁密钥版本 */ String szKeyVersion="xxx3"; ToolKits.StringToByteArr(szKeyVersion,input.szKeyVersion); Pointer pointerInput=new Pointer(input.size()); pointerInput.clear(input.size()); ToolKits.SetStructDataToPointer(input,pointerInput,0); NET_OUT_SET_DYNAMIC_LOCK_OPENKEY_INFO outPut=new NET_OUT_SET_DYNAMIC_LOCK_OPENKEY_INFO(); Pointer pointerOutput=new Pointer(outPut.size()); pointerOutput.clear(outPut.size()); ToolKits.SetStructDataToPointer(outPut,pointerOutput,0); boolean b = netSdk.CLIENT_SetDynamicLockOpenKey(loginHandle, pointerInput, pointerOutput, 3000); if (!b) { printlns("CLIENT_SetDynamicLockOpenKey false Last Error:"+ netSdk.CLIENT_GetLastError()); return; }else { printlns("CLIENT_SetDynamicLockOpenKey success"); ToolKits.GetPointerData(pointerOutput, outPut); //动态密码锁错误码 {@link com.netsdk.lib.enumeration.EM_DYNAMIC_LOCK_ERRORCODE} int emErrorCode = outPut.emErrorCode; printlns("emErrorCode:"+emErrorCode); } } /** * 设置临时身份码 */ public void SetDynamicLockTempUserID(){ NET_IN_SET_DYNAMIC_LOCK_TEMP_USERID_INFO input=new NET_IN_SET_DYNAMIC_LOCK_TEMP_USERID_INFO(); /** 密码锁ID */ String szID="xxx2"; ToolKits.StringToByteArr(szID,input.szID); /** 临时身份码 */ String szTmpUserID="xxx3"; ToolKits.StringToByteArr(szTmpUserID,input.szTmpUserID); Pointer pointerInput=new Pointer(input.size()); pointerInput.clear(input.size()); ToolKits.SetStructDataToPointer(input,pointerInput,0); NET_OUT_SET_DYNAMIC_LOCK_TEMP_USERID_INFO outPut=new NET_OUT_SET_DYNAMIC_LOCK_TEMP_USERID_INFO(); Pointer pointerOutput=new Pointer(outPut.size()); pointerOutput.clear(outPut.size()); ToolKits.SetStructDataToPointer(outPut,pointerOutput,0); boolean b = netSdk.CLIENT_SetDynamicLockTempUserID(loginHandle, pointerInput, pointerOutput, 3000); if (!b) { printlns("CLIENT_SetDynamicLockTempUserID false Last Error:"+ netSdk.CLIENT_GetLastError()); return; }else { printlns("CLIENT_SetDynamicLockTempUserID success"); ToolKits.GetPointerData(pointerOutput, outPut); //动态密码锁错误码 {@link com.netsdk.lib.enumeration.EM_DYNAMIC_LOCK_ERRORCODE} int emErrorCode = outPut.emErrorCode; printlns("emErrorCode:"+emErrorCode); } } /** * 设置开锁码 */ public void SetDynamicLockOpenCode(){ NET_IN_SET_DYNAMIC_LOCK_OPEN_CODE_INFO input=new NET_IN_SET_DYNAMIC_LOCK_OPEN_CODE_INFO(); /** 密码锁ID */ String szID="xxx2"; ToolKits.StringToByteArr(szID,input.szID); /** 开锁密钥 */ String szOpenCode="xxx3"; ToolKits.StringToByteArr(szOpenCode,input.szOpenCode); Pointer pointerInput=new Pointer(input.size()); pointerInput.clear(input.size()); ToolKits.SetStructDataToPointer(input,pointerInput,0); NET_OUT_SET_DYNAMIC_LOCK_OPEN_CODE_INFO outPut=new NET_OUT_SET_DYNAMIC_LOCK_OPEN_CODE_INFO(); Pointer pointerOutput=new Pointer(outPut.size()); pointerOutput.clear(outPut.size()); ToolKits.SetStructDataToPointer(outPut,pointerOutput,0); boolean b = netSdk.CLIENT_SetDynamicLockOpenCode(loginHandle, pointerInput, pointerOutput, 3000); if (!b) { printlns("CLIENT_SetDynamicLockOpenCode false Last Error:"+ netSdk.CLIENT_GetLastError()); return; }else { printlns("CLIENT_SetDynamicLockOpenCode success"); ToolKits.GetPointerData(pointerOutput, outPut); //动态密码锁错误码 {@link com.netsdk.lib.enumeration.EM_DYNAMIC_LOCK_ERRORCODE} int emErrorCode = outPut.emErrorCode; printlns("emErrorCode:"+emErrorCode); } } public void RunTest() { System.out.println("Run Test"); CaseMenu menu = new CaseMenu();; menu.addItem((new CaseMenu.Item(this , "根据中心公钥获取锁具随机公钥" , "GetDynamicLockRandomPublicKey"))); menu.addItem((new CaseMenu.Item(this , "设置通讯秘钥" , "SetDynamicLockCommunicationKey"))); menu.addItem((new CaseMenu.Item(this , "设置开锁密钥" , "SetDynamicLockOpenKey"))); menu.addItem((new CaseMenu.Item(this , "设置临时身份码" , "SetDynamicLockTempUserID"))); menu.addItem((new CaseMenu.Item(this , "设置开锁码" , "SetDynamicLockOpenCode"))); menu.run(); } public static void main(String[] args) { DynamicLockDemo dynamicLockDemo=new DynamicLockDemo(); InitTest("192.168.3.110",37777,"admin","admin123"); dynamicLockDemo.RunTest(); LoginOut(); } }