Merge pull request #1 from loomnetwork/secp256k1
Added secp256k1 supporting
This commit is contained in:
commit
fa21710f0b
|
@ -77,6 +77,20 @@ func CreateSignDataEddsaCommand(keyID uint16, data []byte) (*CommandMessage, err
|
|||
return command, nil
|
||||
}
|
||||
|
||||
func CreateSignDataEcdsaCommand(keyID uint16, data []byte) (*CommandMessage, error) {
|
||||
command := &CommandMessage{
|
||||
CommandType: CommandTypeSignDataEcdsa,
|
||||
}
|
||||
|
||||
payload := bytes.NewBuffer([]byte{})
|
||||
binary.Write(payload, binary.BigEndian, keyID)
|
||||
payload.Write(data)
|
||||
|
||||
command.Data = payload.Bytes()
|
||||
|
||||
return command, nil
|
||||
}
|
||||
|
||||
func CreatePutAsymmetricKeyCommand(keyID uint16, label []byte, domains uint16, capabilities uint64, algorithm Algorithm, keyPart1 []byte, keyPart2 []byte) (*CommandMessage, error) {
|
||||
if len(label) > LabelLength {
|
||||
return nil, errors.New("label is too long")
|
||||
|
@ -124,6 +138,19 @@ func CreateGetPubKeyCommand(keyID uint16) (*CommandMessage, error) {
|
|||
return command, nil
|
||||
}
|
||||
|
||||
func CreateDeleteObjectCommand(objID uint16, objType uint8) (*CommandMessage, error) {
|
||||
command := &CommandMessage{
|
||||
CommandType: CommandTypeDeleteObject,
|
||||
}
|
||||
|
||||
payload := bytes.NewBuffer([]byte{})
|
||||
binary.Write(payload, binary.BigEndian, objID)
|
||||
binary.Write(payload, binary.BigEndian, objType)
|
||||
command.Data = payload.Bytes()
|
||||
|
||||
return command, nil
|
||||
}
|
||||
|
||||
func CreateEchoCommand(data []byte) (*CommandMessage, error) {
|
||||
command := &CommandMessage{
|
||||
CommandType: CommandTypeEcho,
|
||||
|
|
|
@ -39,6 +39,10 @@ type (
|
|||
Signature []byte
|
||||
}
|
||||
|
||||
SignDataEcdsaResponse struct {
|
||||
Signature []byte
|
||||
}
|
||||
|
||||
GetPubKeyResponse struct {
|
||||
Algorithm Algorithm
|
||||
// KeyData can contain different formats depending on the algorithm according to the YubiHSM2 documentation.
|
||||
|
@ -82,12 +86,16 @@ func ParseResponse(data []byte) (Response, error) {
|
|||
return parseCreateAsymmetricKeyResponse(payload)
|
||||
case CommandTypeSignDataEddsa:
|
||||
return parseSignDataEddsaResponse(payload)
|
||||
case CommandTypeSignDataEcdsa:
|
||||
return parseSignDataEcdsaResponse(payload)
|
||||
case CommandTypePutAsymmetric:
|
||||
return parsePutAsymmetricKeyResponse(payload)
|
||||
case CommandTypeCloseSession:
|
||||
return nil, nil
|
||||
case CommandTypeGetPubKey:
|
||||
return parseGetPubKeyResponse(payload)
|
||||
case CommandTypeDeleteObject:
|
||||
return nil, nil
|
||||
case CommandTypeEcho:
|
||||
return parseEchoResponse(payload)
|
||||
case ErrorResponseCode:
|
||||
|
@ -149,6 +157,12 @@ func parseSignDataEddsaResponse(payload []byte) (Response, error) {
|
|||
}, nil
|
||||
}
|
||||
|
||||
func parseSignDataEcdsaResponse(payload []byte) (Response, error) {
|
||||
return &SignDataEcdsaResponse{
|
||||
Signature: payload,
|
||||
}, nil
|
||||
}
|
||||
|
||||
func parsePutAsymmetricKeyResponse(payload []byte) (Response, error) {
|
||||
if len(payload) != 2 {
|
||||
return nil, errors.New("invalid response payload length")
|
||||
|
|
|
@ -78,7 +78,8 @@ const (
|
|||
ErrorCodeCommandUnexecuted ErrorCode = 0xff
|
||||
|
||||
// Algorithms
|
||||
AlgorighmED25519 Algorithm = 46
|
||||
AlgorithmSecp256k1 Algorithm = 15
|
||||
AlgorighmED25519 Algorithm = 46
|
||||
|
||||
// Capabilities
|
||||
CapabilityGetOpaque uint64 = 0x0000000000000001
|
||||
|
@ -145,4 +146,13 @@ const (
|
|||
Domain14 uint16 = 0x2000
|
||||
Domain15 uint16 = 0x4000
|
||||
Domain16 uint16 = 0x8000
|
||||
|
||||
// object types
|
||||
ObjectTypeOpaque uint8 = 0x01
|
||||
ObjectTypeAuthenticationKey uint8 = 0x02
|
||||
ObjectTypeAsymmetricKey uint8 = 0x03
|
||||
ObjectTypeWrapKey uint8 = 0x04
|
||||
ObjectTypeHmacKey uint8 = 0x05
|
||||
ObjectTypeTemplate uint8 = 0x06
|
||||
ObjectTypeOtpAeadKey uint8 = 0x07
|
||||
)
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
package connector
|
||||
|
||||
import "github.com/certusone/yubihsm-go/commands"
|
||||
import "github.com/loomnetwork/yubihsm-go/commands"
|
||||
|
||||
type (
|
||||
// Connector implements a simple request interface with a YubiHSM2
|
||||
|
|
|
@ -3,10 +3,11 @@ package connector
|
|||
import (
|
||||
"bytes"
|
||||
"fmt"
|
||||
"github.com/certusone/yubihsm-go/commands"
|
||||
"io/ioutil"
|
||||
"net/http"
|
||||
"strings"
|
||||
|
||||
"github.com/loomnetwork/yubihsm-go/commands"
|
||||
)
|
||||
|
||||
type (
|
||||
|
|
|
@ -3,11 +3,12 @@ package yubihsm
|
|||
import (
|
||||
"bytes"
|
||||
"errors"
|
||||
"github.com/certusone/yubihsm-go/commands"
|
||||
"github.com/certusone/yubihsm-go/connector"
|
||||
"github.com/certusone/yubihsm-go/securechannel"
|
||||
"sync"
|
||||
"time"
|
||||
|
||||
"github.com/loomnetwork/yubihsm-go/commands"
|
||||
"github.com/loomnetwork/yubihsm-go/connector"
|
||||
"github.com/loomnetwork/yubihsm-go/securechannel"
|
||||
)
|
||||
|
||||
type (
|
||||
|
|
|
@ -7,10 +7,11 @@ import (
|
|||
"crypto/rand"
|
||||
"encoding/binary"
|
||||
"errors"
|
||||
"github.com/certusone/yubihsm-go/commands"
|
||||
"github.com/certusone/yubihsm-go/connector"
|
||||
"github.com/enceve/crypto/cmac"
|
||||
"sync"
|
||||
|
||||
"github.com/enceve/crypto/cmac"
|
||||
"github.com/loomnetwork/yubihsm-go/commands"
|
||||
"github.com/loomnetwork/yubihsm-go/connector"
|
||||
)
|
||||
|
||||
type (
|
||||
|
|
Loading…
Reference in New Issue