sdf
This commit is contained in:
@@ -6,9 +6,12 @@ import com.sunyard.chsm.sdf.lib.SdfLibrary;
|
||||
import com.sunyard.chsm.sdf.model.DeviceInfo;
|
||||
import com.sunyard.chsm.sdf.model.EccKey;
|
||||
import com.sunyard.chsm.sdf.model.EccPubKey;
|
||||
import com.sunyard.chsm.sdf.model.SDF_DeviceInfo;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.util.Assert;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Map;
|
||||
import java.util.UUID;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
@@ -17,6 +20,7 @@ import java.util.concurrent.ConcurrentHashMap;
|
||||
* @author liulu
|
||||
* @since 2024/11/4
|
||||
*/
|
||||
@Slf4j
|
||||
@RequiredArgsConstructor
|
||||
public abstract class JnaSdfAdaptor implements SdfApiAdapter {
|
||||
|
||||
@@ -87,7 +91,21 @@ public abstract class JnaSdfAdaptor implements SdfApiAdapter {
|
||||
|
||||
@Override
|
||||
public DeviceInfo getDeviceInfo(String sessionHandle) {
|
||||
return null;
|
||||
|
||||
SDF_DeviceInfo sdfInfo = new SDF_DeviceInfo();
|
||||
sdfLibrary.SDF_GetDeviceInfo(getSessionHandle(sessionHandle), sdfInfo);
|
||||
|
||||
DeviceInfo deviceInfo = new DeviceInfo();
|
||||
deviceInfo.setIssuerName(new String(sdfInfo.IssuerName));
|
||||
deviceInfo.setDeviceName(new String(sdfInfo.DeviceName));
|
||||
deviceInfo.setDeviceSerial(new String(sdfInfo.DeviceSerial));
|
||||
deviceInfo.setDeviceVersion(sdfInfo.DeviceVersion);
|
||||
deviceInfo.setStandardVersion(sdfInfo.StandardVersion);
|
||||
deviceInfo.setAsymAlgAbility(sdfInfo.AsymAlgAbility);
|
||||
deviceInfo.setSymAlgAbility(sdfInfo.SymAlgAbility);
|
||||
deviceInfo.setHashAlgAbility(sdfInfo.HashAlgAbility);
|
||||
deviceInfo.setBufferSize(sdfInfo.BufferSize);
|
||||
return deviceInfo;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -100,7 +118,10 @@ public abstract class JnaSdfAdaptor implements SdfApiAdapter {
|
||||
|
||||
@Override
|
||||
public EccPubKey exportEncPublicKeyECC(String sessionHandle, int uiKeyIndex) {
|
||||
return null;
|
||||
byte[] pubKey = new byte[132];
|
||||
Pointer hSessionHandle = getSessionHandle(sessionHandle);
|
||||
sdfLibrary.SDF_ExportEncPublicKey_ECC(hSessionHandle, uiKeyIndex, pubKey);
|
||||
return new EccPubKey(256, Arrays.copyOfRange(pubKey, 36, 68), Arrays.copyOfRange(pubKey, 100, 132));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -27,7 +27,7 @@ public class SdfApiAdapterFactory {
|
||||
case enc001:
|
||||
return new SunyardJnaSdfAdaptor(device.getServiceIp(), device.getServicePort());
|
||||
default:
|
||||
return null;
|
||||
throw new UnsupportedOperationException("不支持的设备型号: " + device.getManufacturerModel());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -24,7 +24,7 @@ public class SunyardJnaSdfAdaptor extends JnaSdfAdaptor {
|
||||
private final Integer dealTimeout;
|
||||
|
||||
public SunyardJnaSdfAdaptor(String ip, int port) {
|
||||
this(ip, port, "libsdf");
|
||||
this(ip, port, "sdf");
|
||||
}
|
||||
|
||||
public SunyardJnaSdfAdaptor(String ip, int port, String libName) {
|
||||
|
||||
Reference in New Issue
Block a user