tlv

package module
v0.0.1 Latest Latest
Warning

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

Go to latest
Published: Mar 7, 2024 License: MIT Imports: 13 Imported by: 1

Documentation

Index

Constants

View Source
const (
	ErrTagHasNoBytes       constantError = "tag has no bytes"
	ErrTagShouldHave2Bytes constantError = "tag should have 2 bytes"
	ErrTagTooLong          constantError = "tag too long"

	ErrLengthHasNoBytes     constantError = "length has no bytes"
	ErrLengthBiggerThanData constantError = "length bigger than data"
	ErrLengthFormatError    constantError = "length format error"

	ErrValueTooShort constantError = "value too short"
)

Variables

View Source
var (
	ErrDataLengthTooBigForEncoder = errors.New("data length is too big for this encoder")
	ErrDataTooShortForDecoder     = errors.New("data is too short for this decoder")
	ErrDataShorterThanLength      = errors.New("data is shorter than the length field")
)
View Source
var (
	ShortLengthEncoder    _ShortLengthEncoder
	ExtendedLengthEncoder _ExtendedLengthEncoder
)

Functions

func UnmarshalBER

func UnmarshalBER(data []byte, v any) error

Types

type Decoder

type Decoder[T any] interface {
	Decode(state *T, data []byte) (int, error)
}

Decoder Returns the total of bytes read and an error if present

type Encoder

type Encoder[T any] interface {
	Encode(state T) ([]byte, error)
}

type EncoderDecoder

type EncoderDecoder[T any] interface {
	Encoder[T]
	Decoder[T]
}

func MapRouter

func MapRouter[K comparable, T any](itemDenomination string, mapEncoder EncoderDecoder[map[K][]byte], subEncoders map[K]EncoderDecoder[T]) EncoderDecoder[T]

func RawMap

func RawMap[K comparable](
	keyEncoder EncoderDecoder[K],
	valueEncoder EncoderDecoder[[]byte],
) EncoderDecoder[map[K][]byte]

func TagEncoder

func TagEncoder() EncoderDecoder[Tag]

type Entry

type Entry struct {
	Tag    Tag
	Length int
	Value  Value
}

type LengthEncoder

type LengthEncoder interface {
	Encode(length int) (lengthBytes []byte, err error)
	Decode(dataWithLength []byte) (length int, data []byte, err error)
}

type Map

type Map = map[Tag][]byte

type TL

type TL []TLEntry

func ParseBERTL

func ParseBERTL(data []byte) (TL, error)

type TLEntry

type TLEntry struct {
	Tag    Tag
	Length int
}

type TLV

type TLV []Entry

func ParseBER

func ParseBER(data []byte) (TLV, error)

func (TLV) CopyTo

func (tlv TLV) CopyTo(v any) error

func (TLV) GetList

func (tlv TLV) GetList(t Tag) TaggedValuesList

func (TLV) GetValue

func (tlv TLV) GetValue(t Tag) Value

func (TLV) Index

func (tlv TLV) Index(i int) (Entry, bool)

func (TLV) MakeValuesList

func (tlv TLV) MakeValuesList(list TL) (TaggedValuesList, error)

func (TLV) Values

func (tlv TLV) Values() TaggedValuesList

type TLVDecodeError

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

func (TLVDecodeError) Error

func (e TLVDecodeError) Error() string

func (TLVDecodeError) Is

func (e TLVDecodeError) Is(err error) bool

type Tag

type Tag uint32
const (
	Tag42_IssuerIdentificationNumberIIN                        Tag = 0x42
	Tag4F_ApplicationID                                        Tag = 0x4F
	Tag50_ApplicationLabel                                     Tag = 0x50
	Tag57_Track2EquivalentData                                 Tag = 0x57
	Tag5A_ApplicationPAN                                       Tag = 0x5A
	Tag5F20_CardholderName                                     Tag = 0x5F20
	Tag5F24_ApplicationExpirationDate                          Tag = 0x5F24
	Tag5F25_ApplicationEffectiveDate                           Tag = 0x5F25
	Tag5F28_IssuerCountryCode                                  Tag = 0x5F28
	Tag5F2A_TransactionCurrencyCode                            Tag = 0x5F2A
	Tag5F2D_LanguagePreference                                 Tag = 0x5F2D
	Tag5F30_ServiceCode                                        Tag = 0x5F30
	Tag5F34_ApplicationPANSequenceNumber                       Tag = 0x5F34
	Tag5F36_TransactionCurrencyExponent                        Tag = 0x5F36
	Tag5F50_IssuerURL                                          Tag = 0x5F50
	Tag5F53_InternationalBankAccountNumberIBAN                 Tag = 0x5F53
	Tag5F54_BankIdentifierCodeBIC                              Tag = 0x5F54
	Tag5F55_IssuerCountryCodealpha2format                      Tag = 0x5F55
	Tag5F56_IssuerCountryCodealpha3format                      Tag = 0x5F56
	Tag61_ApplicationTemplate                                  Tag = 0x61
	Tag6F_FileControlInformationFCITemplate                    Tag = 0x6F
	Tag70_EMVProprietaryTemplate                               Tag = 0x70
	Tag71_IssuerScriptTemplate1                                Tag = 0x71
	Tag72_IssuerScriptTemplate2                                Tag = 0x72
	Tag73_DirectoryDiscretionaryTemplate                       Tag = 0x73
	Tag77_ResponseMessageTemplateFormat2                       Tag = 0x77
	Tag80_ResponseMessageTemplateFormat1                       Tag = 0x80
	Tag81_AmountAuthorisedBinary                               Tag = 0x81
	Tag82_ApplicationInterchangeProfile                        Tag = 0x82
	Tag83_CommandTemplate                                      Tag = 0x83
	Tag84_DedicatedFileDFName                                  Tag = 0x84
	Tag86_IssuerScriptCommand                                  Tag = 0x86
	Tag87_ApplicationPriorityIndicator                         Tag = 0x87
	Tag88_ShortFileIdentifierSFI                               Tag = 0x88
	Tag89_AuthorisationCode                                    Tag = 0x89
	Tag8A_AuthorisationResponseCode                            Tag = 0x8A
	Tag8C_CDOL1                                                Tag = 0x8C
	Tag8D_CDOL2                                                Tag = 0x8D
	Tag8E_CardholderVerificationMethodList                     Tag = 0x8E
	Tag8F_CAPublicKeyIndex1                                    Tag = 0x8F
	Tag90_IssuerPublicKeyCertificate                           Tag = 0x90
	Tag91_IssuerAuthenticationData                             Tag = 0x91
	Tag92_IssuerPublicKeyRemainder                             Tag = 0x92
	Tag93_SignedStaticApplicationData                          Tag = 0x93
	Tag94_ApplicationFileLocatorAFL                            Tag = 0x94
	Tag95_TerminalVerificationResults                          Tag = 0x95
	Tag97_TransactionCertificateDataObjectListTDOL             Tag = 0x97
	Tag98_TransactionCertificateTCHashValue                    Tag = 0x98
	Tag99_TransactionPersonalIdentificationNumberPINData       Tag = 0x99
	Tag9A_TransactionDate                                      Tag = 0x9A
	Tag9B_TransactionStatusInformation                         Tag = 0x9B
	Tag9C_TransactionType                                      Tag = 0x9C
	Tag9D_DirectoryDefinitionFileDDFName                       Tag = 0x9D
	Tag9F01_AcquirerIdentifier                                 Tag = 0x9F01
	Tag9F02_AmountAuthorisedNumeric                            Tag = 0x9F02
	Tag9F03_AmountOtherNumeric                                 Tag = 0x9F03
	Tag9F04_AmountOtherBinary                                  Tag = 0x9F04
	Tag9F05_ApplicationDiscretionaryData                       Tag = 0x9F05
	Tag9F06_AIDterminal                                        Tag = 0x9F06
	Tag9F07_ApplicationUsageControl                            Tag = 0x9F07
	Tag9F08_ApplicationVersionNumber1                          Tag = 0x9F08
	Tag9F09_ApplicationVersionNumber2                          Tag = 0x9F09
	Tag9F0B_CardholderNameExtended                             Tag = 0x9F0B
	Tag9F0D_IssuerActionCodeDefault                            Tag = 0x9F0D
	Tag9F0E_IssuerActionCodeDenial                             Tag = 0x9F0E
	Tag9F0F_IssuerActionCodeOnline                             Tag = 0x9F0F
	Tag9F10_IssuerApplicationData                              Tag = 0x9F10
	Tag9F11_IssuerCodeTableIndex                               Tag = 0x9F11
	Tag9F12_ApplicationPreferredName                           Tag = 0x9F12
	Tag9F13_LastOnlineApplicationTransactionCounterATCRegister Tag = 0x9F13
	Tag9F14_LowerConsecutiveOfflineLimit                       Tag = 0x9F14
	Tag9F15_MerchantCategoryCode                               Tag = 0x9F15
	Tag9F16_MerchantIdentifier                                 Tag = 0x9F16
	Tag9F17_PersonalIdentificationNumberPINTryCounter          Tag = 0x9F17
	Tag9F18_IssuerScriptIdentifier                             Tag = 0x9F18
	Tag9F1A_TerminalCountryCode                                Tag = 0x9F1A
	Tag9F1B_TerminalFloorLimit                                 Tag = 0x9F1B
	Tag9F1C_TerminalIdentification                             Tag = 0x9F1C
	Tag9F1D_TerminalRiskManagementData                         Tag = 0x9F1D
	Tag9F1E_InterfaceDeviceIFDSerialNumber                     Tag = 0x9F1E
	Tag9F1F_Track1DiscretionaryData                            Tag = 0x9F1F
	Tag9F20_Track2DiscretionaryData                            Tag = 0x9F20
	Tag9F21_TransactionTime                                    Tag = 0x9F21
	Tag9F22_CAPublicKeyIndex2                                  Tag = 0x9F22
	Tag9F23_UpperConsecutiveOfflineLimit                       Tag = 0x9F23
	Tag9F26_ApplicationCryptogram                              Tag = 0x9F26
	Tag9F27_CryptogramInformationData                          Tag = 0x9F27
	Tag9F2D_ICCPINEnciphermentPublicKeyCertificate             Tag = 0x9F2D
	Tag9F2E_ICCPINEnciphermentPublicKeyExponent                Tag = 0x9F2E
	Tag9F2F_ICCPINEnciphermentPublicKeyRemainder               Tag = 0x9F2F
	Tag9F32_IssuerPublicKeyExponent                            Tag = 0x9F32
	Tag9F33_TerminalCapabilities                               Tag = 0x9F33
	Tag9F34_CardholderVerificationMethodResults                Tag = 0x9F34
	Tag9F35_TerminalType                                       Tag = 0x9F35
	Tag9F36_ApplicationTransactionCounter                      Tag = 0x9F36
	Tag9F37_UnpredictableNumber                                Tag = 0x9F37
	Tag9F38_ProcessingOptionsDataObjectListPDOL                Tag = 0x9F38
	Tag9F39_PointOfServicePOSEntryMode                         Tag = 0x9F39
	Tag9F3A_AmountReferenceCurrency                            Tag = 0x9F3A
	Tag9F3B_ApplicationReferenceCurrency                       Tag = 0x9F3B
	Tag9F3C_TransactionReferenceCurrencyCode                   Tag = 0x9F3C
	Tag9F3D_TransactionReferenceCurrencyExponent               Tag = 0x9F3D
	Tag9F40_AdditionalTerminalCapabilities                     Tag = 0x9F40
	Tag9F41_TransactionSequenceCounter                         Tag = 0x9F41
	Tag9F42_ApplicationCurrencyCode                            Tag = 0x9F42
	Tag9F43_ApplicationReferenceCurrencyExponent               Tag = 0x9F43
	Tag9F44_ApplicationCurrencyExponent                        Tag = 0x9F44
	Tag9F45_DataAuthenticationCode                             Tag = 0x9F45
	Tag9F46_ICCPublicKeyCertificate                            Tag = 0x9F46
	Tag9F47_ICCPublicKeyExponent                               Tag = 0x9F47
	Tag9F48_ICCPublicKeyRemainder                              Tag = 0x9F48
	Tag9F49_DynamicDataAuthenticationDataObjectListDDOL        Tag = 0x9F49
	Tag9F4A_StaticDataAuthenticationTagList                    Tag = 0x9F4A
	Tag9F4B_SignedDynamicApplicationData                       Tag = 0x9F4B
	Tag9F4C_ICCDynamicNumber                                   Tag = 0x9F4C
	Tag9F4D_LogEntry                                           Tag = 0x9F4D
	Tag9F4E_MerchantNameandLocation                            Tag = 0x9F4E
	Tag9F4F_LogFormat                                          Tag = 0x9F4F
	TagA5_FileControlInformationFCIProprietaryTemplate         Tag = 0xA5
	TagBF0C_FileControlInformationFCIIssuerDiscretionaryData   Tag = 0xBF0C
)

func (Tag) DescriptionOrDefault

func (t Tag) DescriptionOrDefault(def string) string

func (Tag) NameOrDefault

func (t Tag) NameOrDefault(def string) string

func (Tag) String

func (tag Tag) String() string

type TaggedValue

type TaggedValue struct {
	Tag   Tag
	Value Value
}

type TaggedValuesList

type TaggedValuesList []TaggedValue

func (TaggedValuesList) AsBERTLV

func (list TaggedValuesList) AsBERTLV() ([]TLV, error)

func (TaggedValuesList) Bytes

func (list TaggedValuesList) Bytes() []byte

func (TaggedValuesList) GetValue

func (vl TaggedValuesList) GetValue(t Tag) Value

type Unmarshaler

type Unmarshaler interface {
	Unmarshal(data []byte) error
}

type Value

type Value []byte

func (Value) AsBERTLV

func (val Value) AsBERTLV() (TLV, error)

func (Value) Hex

func (val Value) Hex() string

Directories

Path Synopsis
internal

Jump to

Keyboard shortcuts

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