yubihsm-go/commands/types.go

180 lines
8.1 KiB
Go

package commands
type (
CommandType uint8
ErrorCode uint8
Algorithm uint8
)
const (
ResponseCommandOffset = 0x80
ErrorResponseCode = 0xff
// LabelLength is the max length of a label
LabelLength = 40
CommandTypeEcho CommandType = 0x01
CommandTypeCreateSession CommandType = 0x03
CommandTypeAuthenticateSession CommandType = 0x04
CommandTypeSessionMessage CommandType = 0x05
CommandTypeDeviceInfo CommandType = 0x06
CommandTypeReset CommandType = 0x08
CommandTypeCloseSession CommandType = 0x40
CommandTypeStorageStatus CommandType = 0x41
CommandTypePutOpaque CommandType = 0x42
CommandTypeGetOpaque CommandType = 0x43
CommandTypePutAuthKey CommandType = 0x44
CommandTypePutAsymmetric CommandType = 0x45
CommandTypeGenerateAsymmetricKey CommandType = 0x46
CommandTypeSignDataPkcs1 CommandType = 0x47
CommandTypeListObjects CommandType = 0x48
CommandTypeDecryptPkcs1 CommandType = 0x49
CommandTypeExportWrapped CommandType = 0x4a
CommandTypeImportWrapped CommandType = 0x4b
CommandTypePutWrapKey CommandType = 0x4c
CommandTypeGetLogs CommandType = 0x4d
CommandTypeGetObjectInfo CommandType = 0x4e
CommandTypePutOption CommandType = 0x4f
CommandTypeGetOption CommandType = 0x50
CommandTypeGetPseudoRandom CommandType = 0x51
CommandTypePutHMACKey CommandType = 0x52
CommandTypeHMACData CommandType = 0x53
CommandTypeGetPubKey CommandType = 0x54
CommandTypeSignDataPss CommandType = 0x55
CommandTypeSignDataEcdsa CommandType = 0x56
CommandTypeDecryptEcdh CommandType = 0x57 // here for backwards compatibility
CommandTypeDeriveEcdh CommandType = 0x57
CommandTypeDeleteObject CommandType = 0x58
CommandTypeDecryptOaep CommandType = 0x59
CommandTypeGenerateHMACKey CommandType = 0x5a
CommandTypeGenerateWrapKey CommandType = 0x5b
CommandTypeVerifyHMAC CommandType = 0x5c
CommandTypeOTPDecrypt CommandType = 0x60
CommandTypeOTPAeadCreate CommandType = 0x61
CommandTypeOTPAeadRandom CommandType = 0x62
CommandTypeOTPAeadRewrap CommandType = 0x63
CommandTypeAttestAsymmetric CommandType = 0x64
CommandTypePutOTPAeadKey CommandType = 0x65
CommandTypeGenerateOTPAeadKey CommandType = 0x66
CommandTypeSetLogIndex CommandType = 0x67
CommandTypeWrapData CommandType = 0x68
CommandTypeUnwrapData CommandType = 0x69
CommandTypeSignDataEddsa CommandType = 0x6a
CommandTypeSetBlink CommandType = 0x6b
CommandTypeChangeAuthenticationKey CommandType = 0x6c
// Errors
ErrorCodeOK ErrorCode = 0x00
ErrorCodeInvalidCommand ErrorCode = 0x01
ErrorCodeInvalidData ErrorCode = 0x02
ErrorCodeInvalidSession ErrorCode = 0x03
ErrorCodeAuthFail ErrorCode = 0x04
ErrorCodeSessionFull ErrorCode = 0x05
ErrorCodeSessionFailed ErrorCode = 0x06
ErrorCodeStorageFailed ErrorCode = 0x07
ErrorCodeWrongLength ErrorCode = 0x08
ErrorCodeInvalidPermission ErrorCode = 0x09
ErrorCodeLogFull ErrorCode = 0x0a
ErrorCodeObjectNotFound ErrorCode = 0x0b
ErrorCodeInvalidID ErrorCode = 0x0c
ErrorCodeSSHCAConstraintViolation ErrorCode = 0x0e
ErrorCodeInvalidOTP ErrorCode = 0x0f
ErrorCodeDemoMode ErrorCode = 0x10
ErrorCodeObjectExists ErrorCode = 0x11
// Algorithms
AlgorithmRSA2048 Algorithm = 9
AlgorithmP256 Algorithm = 12
AlgorithmSecp256k1 Algorithm = 15
AlgorithmOpaqueData Algorithm = 30
AlgorithmOpaqueX509Certificate Algorithm = 31
AlgorithmYubicoAESAuthentication Algorithm = 38
AlgorithmED25519 Algorithm = 46
// Capabilities
CapabilityNone uint64 = 0x0000000000000000
CapabilityGetOpaque uint64 = 0x0000000000000001
CapabilityPutOpaque uint64 = 0x0000000000000002
CapabilityPutAuthKey uint64 = 0x0000000000000004
CapabilityPutAsymmetric uint64 = 0x0000000000000008
CapabilityAsymmetricGen uint64 = 0x0000000000000010
CapabilityAsymmetricSignPkcs uint64 = 0x0000000000000020
CapabilityAsymmetricSignPss uint64 = 0x0000000000000040
CapabilityAsymmetricSignEcdsa uint64 = 0x0000000000000080
CapabilityAsymmetricSignEddsa uint64 = 0x0000000000000100
CapabilityAsymmetricDecryptPkcs uint64 = 0x0000000000000200
CapabilityAsymmetricDecryptOaep uint64 = 0x0000000000000400
CapabilityAsymmetricDecryptEcdh uint64 = 0x0000000000000800 // here for backwards compatibility
CapabilityAsymmetricDeriveEcdh uint64 = 0x0000000000000800
CapabilityExportWrapped uint64 = 0x0000000000001000
CapabilityImportWrapped uint64 = 0x0000000000002000
CapabilityPutWrapKey uint64 = 0x0000000000004000
CapabilityGenerateWrapKey uint64 = 0x0000000000008000
CapabilityExportableUnderWrap uint64 = 0x0000000000010000
CapabilityPutOption uint64 = 0x0000000000020000
CapabilityGetOption uint64 = 0x0000000000040000
CapabilityGetRandomness uint64 = 0x0000000000080000
CapabilityPutHmacKey uint64 = 0x0000000000100000
CapabilityHmacKeyGenerate uint64 = 0x0000000000200000
CapabilityHmacData uint64 = 0x0000000000400000
CapabilityHmacVerify uint64 = 0x0000000000800000
CapabilityAudit uint64 = 0x0000000001000000
CapabilitySshCertify uint64 = 0x0000000002000000
CapabilityGetTemplate uint64 = 0x0000000004000000
CapabilityPutTemplate uint64 = 0x0000000008000000
CapabilityReset uint64 = 0x0000000010000000
CapabilityOtpDecrypt uint64 = 0x0000000020000000
CapabilityOtpAeadCreate uint64 = 0x0000000040000000
CapabilityOtpAeadRandom uint64 = 0x0000000080000000
CapabilityOtpAeadRewrapFrom uint64 = 0x0000000100000000
CapabilityOtpAeadRewrapTo uint64 = 0x0000000200000000
CapabilityAttest uint64 = 0x0000000400000000
CapabilityPutOtpAeadKey uint64 = 0x0000000800000000
CapabilityGenerateOtpAeadKey uint64 = 0x0000001000000000
CapabilityWrapData uint64 = 0x0000002000000000
CapabilityUnwrapData uint64 = 0x0000004000000000
CapabilityDeleteOpaque uint64 = 0x0000008000000000
CapabilityDeleteAuthKey uint64 = 0x0000010000000000
CapabilityDeleteAsymmetric uint64 = 0x0000020000000000
CapabilityDeleteWrapKey uint64 = 0x0000040000000000
CapabilityDeleteHmacKey uint64 = 0x0000080000000000
CapabilityDeleteTemplate uint64 = 0x0000100000000000
CapabilityDeleteOtpAeadKey uint64 = 0x0000200000000000
CapabilityChangeAuthKey uint64 = 0x0000400000000000
// Domains
Domain1 uint16 = 0x0001
Domain2 uint16 = 0x0002
Domain3 uint16 = 0x0004
Domain4 uint16 = 0x0008
Domain5 uint16 = 0x0010
Domain6 uint16 = 0x0020
Domain7 uint16 = 0x0040
Domain8 uint16 = 0x0080
Domain9 uint16 = 0x0100
Domain10 uint16 = 0x0200
Domain11 uint16 = 0x0400
Domain12 uint16 = 0x0800
Domain13 uint16 = 0x1000
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
// list objects params
ListObjectParamID uint8 = 0x01
ListObjectParamType uint8 = 0x02
ListObjectParamDomains uint8 = 0x03
ListObjectParamCapabilities uint8 = 0x04
ListObjectParamAlgorithm uint8 = 0x05
ListObjectParamLabel uint8 = 0x06
)