init: v1.0.0
This commit is contained in:
@@ -0,0 +1,88 @@
|
||||
package sdf
|
||||
|
||||
import (
|
||||
"encoding/binary"
|
||||
"fmt"
|
||||
|
||||
"xdx.jelly/xgcl/api/common"
|
||||
)
|
||||
|
||||
type DeviceInfo struct {
|
||||
IssuerName [40]byte
|
||||
DeviceName [16]byte
|
||||
DeviceSerial [16]byte
|
||||
DeviceVersion uint32
|
||||
StandardVersion uint32
|
||||
AsymAlgAbility [2]uint32
|
||||
SymAlgAbility uint32
|
||||
HashAlgAbility uint32
|
||||
BufferSize uint32
|
||||
}
|
||||
|
||||
func (d *DeviceInfo) Size() int {
|
||||
return 40 + 16 + 16 + 4*7
|
||||
}
|
||||
|
||||
func strlen(s []byte) int {
|
||||
for i, c := range s {
|
||||
if c == 0 {
|
||||
return i
|
||||
}
|
||||
}
|
||||
return len(s)
|
||||
}
|
||||
|
||||
func (d *DeviceInfo) String() string {
|
||||
return fmt.Sprintf("IssuerName: %s\nDeviceName: %s\nDeviceSerial: %s\nDeviceVersion: 0x%08x\nStandardVersion: 0x%08x\nAsymAlgAbility: 0x%08x%08x\nSymAlgAbility 0x%08x\nHashAlgAbility 0x%08x\nBufferSize: 0x%08x",
|
||||
string(d.IssuerName[:strlen(d.IssuerName[:])]),
|
||||
string(d.DeviceName[:strlen(d.DeviceName[:])]),
|
||||
string(d.DeviceSerial[:strlen(d.DeviceSerial[:])]),
|
||||
d.DeviceVersion,
|
||||
d.StandardVersion,
|
||||
d.AsymAlgAbility[0],
|
||||
d.AsymAlgAbility[1],
|
||||
d.SymAlgAbility,
|
||||
d.HashAlgAbility,
|
||||
d.BufferSize)
|
||||
}
|
||||
|
||||
func (d *DeviceInfo) Unmarshal(data []byte) error {
|
||||
fmt.Println(data)
|
||||
if len(data) < d.Size() {
|
||||
return common.SDR_INARGERR
|
||||
}
|
||||
n := copy(d.IssuerName[:], data)
|
||||
data = data[n:]
|
||||
n = copy(d.DeviceName[:], data)
|
||||
data = data[n:]
|
||||
n = copy(d.DeviceSerial[:], data)
|
||||
data = data[n:]
|
||||
d.DeviceVersion = binary.LittleEndian.Uint32(data)
|
||||
data = data[4:]
|
||||
d.StandardVersion = binary.LittleEndian.Uint32(data)
|
||||
data = data[4:]
|
||||
d.AsymAlgAbility[0] = binary.LittleEndian.Uint32(data)
|
||||
data = data[4:]
|
||||
d.AsymAlgAbility[1] = binary.LittleEndian.Uint32(data)
|
||||
data = data[4:]
|
||||
d.SymAlgAbility = binary.LittleEndian.Uint32(data)
|
||||
data = data[4:]
|
||||
d.HashAlgAbility = binary.LittleEndian.Uint32(data)
|
||||
data = data[4:]
|
||||
d.BufferSize = binary.LittleEndian.Uint32(data)
|
||||
return nil
|
||||
}
|
||||
|
||||
var (
|
||||
devInfo = &DeviceInfo{
|
||||
IssuerName: [40]byte{'G', 'o', 'M', 'a', 'i', 'n'},
|
||||
DeviceName: [16]byte{'G', 'C', 'L'},
|
||||
DeviceSerial: [16]byte{'0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'},
|
||||
DeviceVersion: 1,
|
||||
StandardVersion: 1,
|
||||
AsymAlgAbility: [2]uint32{10000, 10000},
|
||||
SymAlgAbility: 10000,
|
||||
HashAlgAbility: 10000,
|
||||
BufferSize: 1024, // 最大随机数长度
|
||||
}
|
||||
)
|
||||
Reference in New Issue
Block a user