hsm

package
v0.0.0-...-66c0836 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 9, 2018 License: Apache-2.0 Imports: 10 Imported by: 0

Documentation

Index

Constants

View Source
const (
	HSM_SJL05 = "SJL05"
	HSM_SJL06 = "SJL06"
	HSM_CONF  = "HSM"
)
View Source
const (
	//MAC向量
	IV = "\x00\x00\x00\x00\x00\x00\x00\x00"
	//MAC算法
	MAC_ALGO_XOR = 0x01
	MAC_ALGO_99  = 0x02
	MAC_ALGO_919 = 0x03
	MAC_ALGO_ECB = 0x04
	//PIN格式
	PIN_BLOCK_01 = 0x01
	PIN_BLOCK_02 = 0x02
	PIN_BLOCK_03 = 0x03
	PIN_BLOCK_04 = 0x04
	PIN_BLOCK_05 = 0x05
	PIN_BLOCK_06 = 0x06
	//指令类型
	CMD_ENC = 0x00
	CMD_DEC = 0x01
	//生成终端主秘钥类型 D181使用
	KEY_TEK_TP     = 0x00
	KEY_TMK_TP     = 0x01
	KEY_TMK_TEK_TP = 0x02
	//工作密钥类型-变种
	WK_COM_TP = 0x01
	WK_PIK_TP = 0x11
	WK_MAK_TP = 0x12
	WK_DAT_TP = 0x13

	MaxReqLen = 4096
)

Variables

This section is empty.

Functions

func HsmClose

func HsmClose()

func HsmInit

func HsmInit()

func LogInit

func LogInit(cfg string)

Types

type HsmCall05

type HsmCall05 struct {
	// contains filtered or unexported fields
}

加密机请求报文

func NewHsmCall

func NewHsmCall() *HsmCall05

设置计算密钥时 密钥调用

func (*HsmCall05) ConvPin

func (opr *HsmCall05) ConvPin() error

必输:源Pik 源PinType 源PinBlock 源PinAcct

目的Pik  目的PinType 目的PinAcct

func (*HsmCall05) ExportWorkKey

func (opr *HsmCall05) ExportWorkKey() error

必输: 密钥长度 密钥索引 通信主密钥 工作密钥 响应: GetWorkKey()

GetCheckVal()

func (*HsmCall05) GenMac

func (opr *HsmCall05) GenMac() error

必输: Mac算法 Mac工作密钥 MacBlock 响应:GetMac

func (*HsmCall05) GenTermTmk

func (opr *HsmCall05) GenTermTmk() error

func (*HsmCall05) GenTermWorkKey

func (opr *HsmCall05) GenTermWorkKey() error

必输:密钥类型 工作密钥长度 发散因子1 发散因子2 应答: GetTmk() GetWorkKey() GetChkValue()

func (*HsmCall05) GetCallResult

func (opr *HsmCall05) GetCallResult() bool

返回调用结果

func (*HsmCall05) GetCheckValue

func (opr *HsmCall05) GetCheckValue() []byte

返回校验值

func (*HsmCall05) GetMac

func (opr *HsmCall05) GetMac() []byte

返回Mac

func (*HsmCall05) GetPinBlock

func (opr *HsmCall05) GetPinBlock() []byte

返回PinBlock

func (*HsmCall05) GetReserved

func (opr *HsmCall05) GetReserved() []byte

返回保留域

func (*HsmCall05) GetTmk

func (opr *HsmCall05) GetTmk() []byte

返回终端主秘钥

func (*HsmCall05) GetWorkKey

func (opr *HsmCall05) GetWorkKey() []byte

返回工作密钥

func (*HsmCall05) ImportWorkKey

func (opr *HsmCall05) ImportWorkKey() error

导入工作密钥:必输: 索引/主秘钥 密钥类型 工作密钥

响应:GetWorkKey()

GetCheckVal()

func (*HsmCall05) SetInChkValue

func (opr *HsmCall05) SetInChkValue(chkVal []byte)

设置计算密钥时 校验值

func (*HsmCall05) SetInKeyIndex

func (opr *HsmCall05) SetInKeyIndex(index int)

设置计算密钥时 密钥索引

func (*HsmCall05) SetInKeyLen

func (opr *HsmCall05) SetInKeyLen(len int)

设置计算密钥时 密钥长度

func (*HsmCall05) SetInKeyType

func (opr *HsmCall05) SetInKeyType(tp byte)

设置计算密钥时 密钥类型

func (*HsmCall05) SetInMac

func (opr *HsmCall05) SetInMac(mac []byte)

MAC 校验时传入目的Mac

func (*HsmCall05) SetInMacAlgo

func (opr *HsmCall05) SetInMacAlgo(algo byte)

设置Mac计算算法

func (*HsmCall05) SetInMacBlock

func (opr *HsmCall05) SetInMacBlock(block []byte)

MAC 计算时传入MAB

func (*HsmCall05) SetInQAcct

func (opr *HsmCall05) SetInQAcct(acct []byte)

设置转PIN时 源账号

func (*HsmCall05) SetInQPik

func (opr *HsmCall05) SetInQPik(pik []byte)

设置转PIN时 源Pik

func (*HsmCall05) SetInQPinBlock

func (opr *HsmCall05) SetInQPinBlock(block []byte)

设置转PIN时 源PinBlock

func (*HsmCall05) SetInQPinType

func (opr *HsmCall05) SetInQPinType(tp byte)

设置转PIN时 源Pin类型

func (*HsmCall05) SetInRAcct

func (opr *HsmCall05) SetInRAcct(acct []byte)

设置转PIN时 目的异或账号

func (*HsmCall05) SetInRPik

func (opr *HsmCall05) SetInRPik(pik []byte)

设置转PIN时 目的Pik

func (*HsmCall05) SetInRPinType

func (opr *HsmCall05) SetInRPinType(tp byte)

设置转PIN时 目的Pin类型

func (*HsmCall05) SetInRand1

func (opr *HsmCall05) SetInRand1(rand []byte)

生成主密钥时随机因子1

func (*HsmCall05) SetInRand2

func (opr *HsmCall05) SetInRand2(rand []byte)

生成主密钥时随机因子2

func (*HsmCall05) SetInReserved

func (opr *HsmCall05) SetInReserved(resv []byte)

设置保留域

func (*HsmCall05) SetInTekIndex

func (opr *HsmCall05) SetInTekIndex(index int)

设置计算密钥时 TEK根密钥索引

func (*HsmCall05) SetInTmk

func (opr *HsmCall05) SetInTmk(tmk []byte)

设置计算密钥时 终端主秘钥

func (*HsmCall05) SetInZmk

func (opr *HsmCall05) SetInZmk(zmk []byte)

设置计算密钥时 通信主密钥

func (*HsmCall05) SetWorkKey

func (opr *HsmCall05) SetWorkKey(key []byte)

设置计算密钥时 工作密钥

func (*HsmCall05) VerifyMac

func (opr *HsmCall05) VerifyMac() error

必输: Mac 算法; 工作密钥; Mac; MacBlock; 得到结果: GetCallResult()

type HsmOper

type HsmOper interface {
	/* 设置区域主密钥索引*/
	SetInKeyIndex(index int)
	/* 设置TEK主密钥索引*/
	SetInTekIndex(index int)
	/* 设置区域主密钥*/
	SetInZmk(zmk []byte)
	/* 设置终端主密钥*/
	SetInTmk(tmk []byte)
	/* 设置密钥长度*/
	SetInKeyLen(len int)
	/* 设置密钥类型*/
	SetInKeyType(tp byte)
	/* 设置密钥*/
	SetWorkKey(key []byte)
	/* 设置校验值*/
	SetInChkValue(chkVal []byte)
	SetInQPinType(tp byte)
	SetInQPik(pik []byte)
	SetInQAcct(acct []byte)
	SetInQPinBlock(block []byte)
	SetInRPinType(tp byte)
	SetInRPik(pik []byte)
	SetInRAcct(acct []byte)
	SetInMacAlgo(algo byte)
	SetInMacBlock(block []byte)
	SetInMac(mac []byte)
	SetInRand1(rand []byte)
	SetInRand2(rand []byte)
	SetInReserved(resv []byte)
	/*加密机操作*/
	ImportWorkKey() error
	/*
	   必输:
	          密钥长度  密钥索引 通信主密钥 工作密钥
	   响应: GetWorkKey()
	          GetCheckVal()
	*/
	ExportWorkKey() error
	/*
		必输:
			Mac算法 Mac工作密钥 MacBlock
		响应:
			GetMac
	*/
	GenMac() error
	/*
		必输: Mac 算法; 工作密钥; Mac; MacBlock;
		得到结果: GetCallResult()
	*/
	VerifyMac() error
	/*
		必输:源Pik 源PinType 源PinBlock 源PinAcct
		      目的Pik  目的PinType 目的PinAcct

	*/
	ConvPin() error
	/*
		必输:TMK根索引
		     TEK根索引
		     SEK明文(ZMK)
		     Rand1 发散因子 (ASCII)
			 Rand2 发散银子 (ASCII)
		应答:
			 GetTmk()
			 GetChkValue()
	*/
	GenTermTmk() error

	/*
		必输:
			根密钥索引 密钥类型  工作密钥长度  发散因子1  发散因子2
		应答:
			GetTmk()
			GetWorkKey()
			GetChkValue()
	*/
	GenTermWorkKey() error

	/*取应答结果*/
	GetCallResult() bool
	GetTmk() []byte
	GetWorkKey() []byte
	GetCheckValue() []byte
	GetMac() []byte
	GetPinBlock() []byte
}

func NewHsmOper

func NewHsmOper() (HsmOper, error)

type HsmRequest

type HsmRequest struct {
	// contains filtered or unexported fields
}

请求报文

func NewHsmRequest

func NewHsmRequest() *HsmRequest

func (*HsmRequest) Byte

func (req *HsmRequest) Byte() []byte

func (*HsmRequest) SetAsc

func (req *HsmRequest) SetAsc(asc string)

func (*HsmRequest) SetByte

func (req *HsmRequest) SetByte(b byte)

func (*HsmRequest) SetHex

func (req *HsmRequest) SetHex(hex []byte)

func (*HsmRequest) SetInt16

func (req *HsmRequest) SetInt16(i int)

func (*HsmRequest) SetInt8

func (req *HsmRequest) SetInt8(i int)

func (*HsmRequest) String

func (req *HsmRequest) String() string

type HsmResponse

type HsmResponse struct {
	// contains filtered or unexported fields
}

func NewHsmResponse

func NewHsmResponse(buf []byte) (*HsmResponse, error)

func (*HsmResponse) CheckSucc

func (rsp *HsmResponse) CheckSucc() bool

func (*HsmResponse) GetAsc

func (rsp *HsmResponse) GetAsc(len int) (string, error)

func (*HsmResponse) GetByte

func (rsp *HsmResponse) GetByte() (byte, error)

func (*HsmResponse) GetHex

func (rsp *HsmResponse) GetHex(len int) ([]byte, error)

func (*HsmResponse) GetInt16

func (rsp *HsmResponse) GetInt16() (uint16, error)

func (*HsmResponse) GetInt8

func (rsp *HsmResponse) GetInt8() (int, error)

func (*HsmResponse) GetLByte

func (rsp *HsmResponse) GetLByte() []byte

func (*HsmResponse) GetRetCd

func (rsp *HsmResponse) GetRetCd() byte

func (*HsmResponse) String

func (rsp *HsmResponse) String() string

type HsmServer

type HsmServer struct {
	HsmName  string
	HsmType  string
	HsmStat  bool
	ConnNum  int
	HsmAddr  string
	ConnChan chan *net.TCPConn
}
var GlbSvr *HsmServer

全局加密机对象

var Hsm05Svr *HsmServer

全局加密机对象

func (*HsmServer) Close

func (svr *HsmServer) Close()

func (*HsmServer) Comm

func (svr *HsmServer) Comm(req *HsmRequest) (*HsmResponse, error)

func (*HsmServer) Connect

func (svr *HsmServer) Connect() error

func (*HsmServer) Init

func (svr *HsmServer) Init() error

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL