Documentation ¶
Index ¶
- Constants
- func BytesToHex(bytes []byte) string
- func CryptCBC(blockCipher cipher.Block, iv []byte, data []byte, encrypt bool) []byte
- func CryptoHash(alg crypto.Hash, data []byte) []byte
- func CryptoHashByOid(oid asn1.ObjectIdentifier, data []byte) []byte
- func DecodeAsn1objectId(data []byte) string
- func DesKeyAdjustParity(key []byte) []byte
- func GetCipherForKey(alg BlockCipherAlg, key []byte) (cipher.Block, error)
- func HexToBytes(str string) []byte
- func ISO9797Method2Pad(data []byte, blockSize int) []byte
- func ISO9797Method2Unpad(data []byte) []byte
- func ISO9797RetailMacDes(key []byte, data []byte) (mac []byte, err error)
- func KDF(k []byte, c KDFCounterType, alg BlockCipherAlg, keySizeBits int) []byte
- func MrtdPassiveAuth(doc *Document)
- func PrintableBytes(data []byte) bool
- func RandomBytes(length int) []byte
- func TlvEncodeLength(length int) []byte
- func TlvEncodeTag(tag TlvTag) []byte
- func TlvGetLength(buf *bytes.Buffer) (length int)
- func TlvIsConstructedTag(tag TlvTag) bool
- func WriteFile(filename string, data []byte)
- type ActiveAuthenticationInfo
- type AlgorithmIdentifier
- type Attribute
- type AttributeList
- type BAC
- type BiometricDataBlock
- type BiometricHeaderTemplate
- type BiometricInfoTemplate
- type BlockCipherAlg
- type CApdu
- type COM
- type CardAccess
- type CardSecurity
- type ChipAuthStatus
- type ChipAuthenticationInfo
- type ChipAuthenticationPublicKeyInfo
- type DG1
- type DG11
- type DG12
- type DG13
- type DG14
- type DG15
- type DG16
- type DG2
- type DG7
- type DG7Image
- type DataGroupHash
- type Document
- type EC_POINT
- type EFDIR
- type EFDirInfo
- type EfDirApplication
- type EncapContentInfo
- type Facial
- type FacialFeature
- type FacialHeader
- type FacialInfo
- type Image
- type ImageInfo
- type IssuerAndSerial
- type KDFCounterType
- type KeyGeneratorEcFn
- type LDSSecurityObject
- type LDSVersionInfo
- type MRZ
- type MockTransceiver
- type MockTransceiverReqRsp
- type NfcSession
- func (nfc *NfcSession) DoAPDU(capdu *CApdu) (rapdu *RApdu, err error)
- func (nfc *NfcSession) ExternalAuthenticate(data []byte, le int) (out []byte, err error)
- func (nfc *NfcSession) GetChallenge(length int) (out []byte, err error)
- func (nfc *NfcSession) ReadBinaryFromOffset(offset int, length int) []byte
- func (nfc *NfcSession) ReadFile(fileId int) (fileData []byte)
- func (nfc *NfcSession) SelectAid(aid []byte) (selected bool, err error)
- func (nfc *NfcSession) SelectEF(fileId int) (selected bool, err error)
- func (nfc *NfcSession) SelectMF() (err error)
- type PACEAuthToken
- type PACEDomainParams
- type PACEMapping
- type PACESeccureMessaging
- type Pace
- type PaceConfig
- type PaceDomainParameterInfo
- type PaceInfo
- type Password
- type PasswordType
- type RApdu
- type RandomBytesFn
- type SOD
- type SecureMessaging
- type SecurityInfoOid
- type SecurityInfoOidSET
- type SecurityInfos
- type SignedData
- type SignedData2
- type SignerInfo
- type StaticTransceiver
- type SubjectPublicKeyInfo
- type TerminalAuthenticationInfo
- type TlvConstructedNode
- func (tlv *TlvConstructedNode) AddChild(child TlvNode)
- func (node TlvConstructedNode) Encode() []byte
- func (node TlvConstructedNode) GetNode(tag TlvTag) TlvNode
- func (node TlvConstructedNode) GetNodeByOccur(tag TlvTag, occurrence int) TlvNode
- func (node TlvConstructedNode) GetTag() TlvTag
- func (node TlvConstructedNode) GetValue() []byte
- func (node TlvConstructedNode) IsValidNode() bool
- func (node TlvConstructedNode) String() string
- type TlvNilNode
- func (node TlvNilNode) Encode() []byte
- func (node TlvNilNode) GetNode(tag TlvTag) TlvNode
- func (node TlvNilNode) GetNodeByOccur(tag TlvTag, occurrence int) TlvNode
- func (node TlvNilNode) GetTag() TlvTag
- func (node TlvNilNode) GetValue() []byte
- func (node TlvNilNode) IsValidNode() bool
- func (node TlvNilNode) String() string
- type TlvNode
- type TlvNodes
- type TlvSimpleNode
- func (node TlvSimpleNode) Encode() []byte
- func (node TlvSimpleNode) GetNode(tag TlvTag) TlvNode
- func (node TlvSimpleNode) GetNodeByOccur(tag TlvTag, occurrence int) TlvNode
- func (node TlvSimpleNode) GetTag() TlvTag
- func (node TlvSimpleNode) GetValue() []byte
- func (node TlvSimpleNode) IsValidNode() bool
- func (node TlvSimpleNode) String() string
- type TlvTag
- type Transceiver
- type UnhandledInfo
Constants ¶
const CLA_MASK byte = 0x0C
const COMTag = 0x60
const DES_BLOCK_SIZE_BYTES = 8
const DG11Tag = 0x6B
const DG12Tag = 0x6C
const DG13Tag = 0x6D
const DG14Tag = 0x6E
const DG15Tag = 0x6F
const DG16Tag = 0x70
const DG1Tag = 0x61
const DG2Tag = 0x75
const DG7Tag = 0x67
const INS_EXTERNAL_AUTHENTICATE = byte(0x82)
const INS_GENERAL_AUTHENTICATE = byte(0x86)
const INS_GET_CHALLENGE = byte(0x84)
const INS_READ_BINARY = byte(0xB0)
const INS_SELECT = byte(0xA4)
const MRTDFileIdCardAccess = 0x011C
TODO - look at moving to short-file id if that is actually the mandatory one
const MRTDFileIdCardSecurity = 0x011D
const MRTDFileIdDG1 = 0x0101
const MRTDFileIdDG11 = 0x010B
const MRTDFileIdDG12 = 0x010C
const MRTDFileIdDG13 = 0x010D
const MRTDFileIdDG14 = 0x010E
const MRTDFileIdDG15 = 0x010F
const MRTDFileIdDG16 = 0x0110
const MRTDFileIdDG2 = 0x0102
const MRTDFileIdDG7 = 0x0107
const MRTDFileIdEFCOM = 0x011E
const MRTDFileIdEFDIR = 0x2F00
const MRTDFileIdEFSOD = 0x011D
const MRTD_AID = "A0000002471001"
const MRZLengthTD1 = 90
const MRZLengthTD2 = 72
const MRZLengthTD3 = 88
const RAPDU_STATUS_FILENOTFOUND = 0x6A82
const RAPDU_STATUS_SUCCESS = 0x9000
const SODTag = 0x77
Variables ¶
This section is empty.
Functions ¶
func BytesToHex ¶
func CryptoHashByOid ¶
func CryptoHashByOid(oid asn1.ObjectIdentifier, data []byte) []byte
hashes the data using the hash algorithm specified by oid panics if hash algorithm is not supported
func DecodeAsn1objectId ¶
func DesKeyAdjustParity ¶
func GetCipherForKey ¶
func GetCipherForKey(alg BlockCipherAlg, key []byte) (cipher.Block, error)
TODO - maybe this should panic.. as this should only be caused by a code issue NB supports 8/16/24 byte key lengths for DES
func HexToBytes ¶
func ISO9797Method2Pad ¶
func ISO9797Method2Unpad ¶
panics if data is not padded
func ISO9797RetailMacDes ¶
ISO-9797 Retail MAC (DES) key: 16 bytes (double) DES key error: if invalid key length (not 16 bytes) or data not aligned to block boundary (8 bytes)
func KDF ¶
func KDF(k []byte, c KDFCounterType, alg BlockCipherAlg, keySizeBits int) []byte
NB expects keySizeBits=112 for TDES
func MrtdPassiveAuth ¶
func MrtdPassiveAuth(doc *Document)
func PrintableBytes ¶
func RandomBytes ¶
func TlvEncodeLength ¶
func TlvEncodeTag ¶
func TlvGetLength ¶
func TlvIsConstructedTag ¶
Types ¶
type ActiveAuthenticationInfo ¶
type ActiveAuthenticationInfo struct { Protocol asn1.ObjectIdentifier Version int SignatureAlgorithm asn1.ObjectIdentifier }
type AlgorithmIdentifier ¶
type AlgorithmIdentifier struct { Algorithm asn1.ObjectIdentifier Parameters int `asn1:"optional"` // TODO - spec technically says ANY type }
type AttributeList ¶
type AttributeList []Attribute
type BiometricDataBlock ¶
type BiometricDataBlock struct {
Facial Facial
}
type BiometricHeaderTemplate ¶
type BiometricHeaderTemplate struct { IcaoHeaderVersion []byte // optional BiometricType []byte // optional BiometricSubType []byte // optional (for DG2) CreationDateTime []byte // optional ValidityPeriod []byte // optional PID []byte // optional FormatOwner []byte // required FormatType []byte // required }
type BiometricInfoTemplate ¶
type BiometricInfoTemplate struct { BHT BiometricHeaderTemplate BDB BiometricDataBlock }
type CApdu ¶
type CApdu struct {
// contains filtered or unexported fields
}
func (*CApdu) EncodeHeader ¶
func (*CApdu) IsExtended ¶
type CardAccess ¶
type CardAccess struct { RawData []byte SecurityInfos *SecurityInfos }
func NewCardAccess ¶
func NewCardAccess(data []byte) (*CardAccess, error)
type CardSecurity ¶
type CardSecurity struct { RawData []byte SecurityInfos *SecurityInfos }
func NewCardSecurity ¶
func NewCardSecurity(data []byte) (out *CardSecurity, err error)
type ChipAuthStatus ¶
type ChipAuthStatus int
const ( CHIP_AUTH_STATUS_NA ChipAuthStatus = iota CHIP_AUTH_STATUS_PACE_CAM CHIP_AUTH_STATUS_CA CHIP_AUTH_STATUS_AA )
type ChipAuthenticationInfo ¶
type ChipAuthenticationInfo struct { Protocol asn1.ObjectIdentifier Version int KeyId int `asn1:"optional"` }
type ChipAuthenticationPublicKeyInfo ¶
type ChipAuthenticationPublicKeyInfo struct { Protocol asn1.ObjectIdentifier ChipAuthenticationPublicKey SubjectPublicKeyInfo KeyId int `asn1:"optional"` }
type DG14 ¶
type DG14 struct { RawData []byte // TODO - add to test cases (for all other DGs also) SecInfos *SecurityInfos }
type DG2 ¶
type DG2 struct { RawData []byte BITs []BiometricInfoTemplate }
type DataGroupHash ¶
type Document ¶
type Document struct { CardAccess *CardAccess CardSecurity *CardSecurity // NB only read for PACE-CAM - read during PACE flow Dir *EFDIR // indicates which applications are present - generally not acvailable Com *COM // largely deprecated by SOD, but used to determine Lds/Unicode Version if older SOD formatis present Sod *SOD // Document Security Object EF.SOD (MANDATORY) Dg1 *DG1 // DATA GROUP 1 — Machine Readable Zone Information (MANDATORY) Dg2 *DG2 // DATA GROUP 2 — Encoded Identification Features — Face (MANDATORY) Dg7 *DG7 // DATA GROUP 7 — Displayed Signature or Usual Mark (OPTIONAL) Dg11 *DG11 // DATA GROUP 11 — Additional Personal Detail(s) (OPTIONAL) Dg12 *DG12 // DATA GROUP 12 — Additional Document Detail(s) (OPTIONAL) Dg13 *DG13 // DATA GROUP 13 — Optional Details(s) (OPTIONAL) Dg14 *DG14 // DATA GROUP 14 — Security Options (CONDITIONAL) Dg15 *DG15 // DATA GROUP 15 — Active Authentication Public Key Info (CONDITIONAL) Dg16 *DG16 // DATA GROUP 16 — Person(s) to Notify (OPTIONAL) ChipAuthStatus ChipAuthStatus }
func ReadDocument ¶
func ReadDocument(transceiver Transceiver, password *Password) (doc *Document, err error)
NB returns partial data (MrtdDocument) in the event of an error
func (Document) LdsVersion ¶
gets the LDS Version (e.g. '0108') from EF.SOD or EF.COM returns empty string if valid cannot be determined
func (Document) UnicodeVersion ¶
gets the Unicode Version (e.g. '040000') from EF.SOD or EF.COM returns empty string if valid cannot be determined
type EFDIR ¶
type EFDIR struct { RawData []byte Application []EfDirApplication }
type EFDirInfo ¶
type EFDirInfo struct { Protocol asn1.ObjectIdentifier EFDir []byte }
type EfDirApplication ¶
type EfDirApplication struct {
// contains filtered or unexported fields
}
type EncapContentInfo ¶
type EncapContentInfo struct { EContentType asn1.ObjectIdentifier `` EContent []byte `asn1:"explicit,tag:0"` // contains LDSSecurityObject }
type Facial ¶
type Facial struct { Header FacialHeader Images []Image }
type FacialFeature ¶
type FacialHeader ¶
type FacialInfo ¶
type Image ¶
type Image struct { FacialInformation FacialInfo Features []FacialFeature ImageInformation ImageInfo Data []byte }
type IssuerAndSerial ¶
type KDFCounterType ¶
type KDFCounterType int
const ( KDF_COUNTER_KSENC KDFCounterType = 1 KDF_COUNTER_KSMAC KDFCounterType = 2 KDF_COUNTER_PACE KDFCounterType = 3 )
type LDSSecurityObject ¶
type LDSSecurityObject struct { Version int `` HashAlgorithm pkix.AlgorithmIdentifier `` DataGroupHashValues []DataGroupHash `` LdsVersionInfo LDSVersionInfo `asn1:"optional"` }
type LDSVersionInfo ¶
TODO - present but empty strings if not present in parsed data
type MRZ ¶
type MRZ struct { DocumentCode string IssuingState string NameOfHolder string DocumentNumber string Nationality string DateOfBirth string Sex string DateOfExpiry string OptionalData string OptionalData2 string // TODO - just required for TD1?.. should this be considered as a single logical field? }
func (*MRZ) EncodeMrzi ¶
type MockTransceiver ¶
type MockTransceiver struct {
// contains filtered or unexported fields
}
func (*MockTransceiver) AddReqRsp ¶
func (transceiver *MockTransceiver) AddReqRsp(reqHexStr string, rspHexStr string)
func (*MockTransceiver) Transceive ¶
func (transceiver *MockTransceiver) Transceive(capdu []byte) []byte
type MockTransceiverReqRsp ¶
type MockTransceiverReqRsp struct {
// contains filtered or unexported fields
}
type NfcSession ¶
type NfcSession struct {
// contains filtered or unexported fields
}
func NewNfcSession ¶
func NewNfcSession(transceiver Transceiver) *NfcSession
func (*NfcSession) ExternalAuthenticate ¶
func (nfc *NfcSession) ExternalAuthenticate(data []byte, le int) (out []byte, err error)
func (*NfcSession) GetChallenge ¶
func (nfc *NfcSession) GetChallenge(length int) (out []byte, err error)
func (*NfcSession) ReadBinaryFromOffset ¶
func (nfc *NfcSession) ReadBinaryFromOffset(offset int, length int) []byte
NB may not return requested length
func (*NfcSession) ReadFile ¶
func (nfc *NfcSession) ReadFile(fileId int) (fileData []byte)
returns: file contents OR nil if file not found
func (*NfcSession) SelectAid ¶
func (nfc *NfcSession) SelectAid(aid []byte) (selected bool, err error)
func (*NfcSession) SelectEF ¶
func (nfc *NfcSession) SelectEF(fileId int) (selected bool, err error)
returns: false if file-not-found, otherwise true
func (*NfcSession) SelectMF ¶
func (nfc *NfcSession) SelectMF() (err error)
TODO - why not just try to directly select file from MF?
0 0 0 0 1 0 0 0 – Select from MF (data field=path without the identifier of the MF)
type PACEDomainParams ¶
type PACEDomainParams struct {
// contains filtered or unexported fields
}
type PACESeccureMessaging ¶
type PACESeccureMessaging int
const ( CBC_CBC PACESeccureMessaging = iota CBC_CMAC )
TODO - is this even used in the code anywhere?... MAC code seems to just infer from cipher-alg... should allow this to be passed in?
type PaceConfig ¶
type PaceConfig struct {
// contains filtered or unexported fields
}
type PaceDomainParameterInfo ¶
type PaceDomainParameterInfo struct { Protocol asn1.ObjectIdentifier DomainParameter AlgorithmIdentifier ParameterId int `asn1:"optional"` }
type PaceInfo ¶
type PaceInfo struct { Protocol asn1.ObjectIdentifier Version int ParameterId int `asn1:"optional"` }
type Password ¶
type Password struct {
// contains filtered or unexported fields
}
func NewPasswordCan ¶
func NewPasswordMrz ¶
type PasswordType ¶
type PasswordType int
const ( PASSWORD_TYPE_MRZi PasswordType = iota PASSWORD_TYPE_CAN )
type RApdu ¶
func GeneralAuthenticate ¶
func GeneralAuthenticate(nfc *NfcSession, commandChaining bool, data []byte) *RApdu
func ParseRApdu ¶
func (*RApdu) FileNotFound ¶
type RandomBytesFn ¶
type SOD ¶
type SOD struct { RawData []byte // nodes *TlvNodes LdsSecurityObject *LDSSecurityObject }
type SecureMessaging ¶
type SecureMessaging struct { KSenc []byte KSmac []byte SSC []byte // contains filtered or unexported fields }
func NewSecureMessaging ¶
func NewSecureMessaging(alg BlockCipherAlg, KSenc []byte, KSmac []byte) (sm *SecureMessaging, err error)
func (*SecureMessaging) Decode ¶
func (sm *SecureMessaging) Decode(rApduBytes []byte) (rApdu *RApdu, err error)
func (*SecureMessaging) Encode ¶
func (sm *SecureMessaging) Encode(cApdu *CApdu, maxLe uint64) (out *CApdu, err error)
func (*SecureMessaging) SetSSC ¶
func (sm *SecureMessaging) SetSSC(ssc []byte)
func (SecureMessaging) String ¶
func (sm SecureMessaging) String() string
type SecurityInfoOid ¶
type SecurityInfoOid struct { Raw asn1.RawContent Protocol asn1.ObjectIdentifier `asn1:""` }
type SecurityInfoOidSET ¶
type SecurityInfoOidSET []SecurityInfoOid
type SecurityInfos ¶
type SecurityInfos struct { PaceInfos []PaceInfo PaceDomainParamInfos []PaceDomainParameterInfo ActiveAuthInfos []ActiveAuthenticationInfo ChipAuthInfos []ChipAuthenticationInfo ChipAuthPubKeyInfos []ChipAuthenticationPublicKeyInfo TermAuthInfos []TerminalAuthenticationInfo EfDirInfos []EFDirInfo UnhandledInfos []UnhandledInfo TotalCnt int }
func DecodeSecurityInfos ¶
func DecodeSecurityInfos(secInfoData []byte) (secInfos *SecurityInfos, err error)
TODO - currently fails if anything wrong... maybe we should be more tolerant, but record issues?
type SignedData ¶
type SignedData struct { Oid asn1.ObjectIdentifier `` SD2 SignedData2 `asn1:"explicit,tag:0"` // TODO - naming? }
TODO - maybe handle this internally
type SignedData2 ¶
type SignedData2 struct { Version int DigestAlgorithms []pkix.AlgorithmIdentifier `asn1:"set"` Content EncapContentInfo `` Certificates []asn1.RawValue `asn1:"optional,set,tag:0"` CRLs []asn1.RawValue `asn1:"optional,set,tag:1"` SignerInfos []SignerInfo `asn1:"set"` }
type SignerInfo ¶
type SignerInfo struct { Version int `asn1:"default:1"` IssuerAndSerialNumber IssuerAndSerial `` DigestAlgorithm pkix.AlgorithmIdentifier `` AuthenticatedAttributes AttributeList `asn1:"optional,tag:0"` DigestEncryptionAlgorithm pkix.AlgorithmIdentifier `` EncryptedDigest []byte `` UnauthenticatedAttributes AttributeList `asn1:"optional,tag:1"` }
type StaticTransceiver ¶
type StaticTransceiver struct {
// contains filtered or unexported fields
}
func (*StaticTransceiver) Transceive ¶
func (transceiver *StaticTransceiver) Transceive(capdu []byte) []byte
type SubjectPublicKeyInfo ¶
type SubjectPublicKeyInfo struct { Algorithm AlgorithmIdentifier SubjectPublicKey asn1.BitString }
type TerminalAuthenticationInfo ¶
type TerminalAuthenticationInfo struct { Protocol asn1.ObjectIdentifier Version int }
type TlvConstructedNode ¶
func NewTlvConstructedNode ¶
func NewTlvConstructedNode(tag TlvTag) *TlvConstructedNode
func (*TlvConstructedNode) AddChild ¶
func (tlv *TlvConstructedNode) AddChild(child TlvNode)
func (TlvConstructedNode) Encode ¶
func (node TlvConstructedNode) Encode() []byte
func (TlvConstructedNode) GetNode ¶
func (node TlvConstructedNode) GetNode(tag TlvTag) TlvNode
func (TlvConstructedNode) GetNodeByOccur ¶
func (node TlvConstructedNode) GetNodeByOccur(tag TlvTag, occurrence int) TlvNode
func (TlvConstructedNode) GetTag ¶
func (node TlvConstructedNode) GetTag() TlvTag
func (TlvConstructedNode) GetValue ¶
func (node TlvConstructedNode) GetValue() []byte
func (TlvConstructedNode) IsValidNode ¶
func (node TlvConstructedNode) IsValidNode() bool
func (TlvConstructedNode) String ¶
func (node TlvConstructedNode) String() string
type TlvNilNode ¶
type TlvNilNode struct{}
func NewTlvNilNode ¶
func NewTlvNilNode() *TlvNilNode
func (TlvNilNode) Encode ¶
func (node TlvNilNode) Encode() []byte
func (TlvNilNode) GetNode ¶
func (node TlvNilNode) GetNode(tag TlvTag) TlvNode
func (TlvNilNode) GetNodeByOccur ¶
func (node TlvNilNode) GetNodeByOccur(tag TlvTag, occurrence int) TlvNode
func (TlvNilNode) GetTag ¶
func (node TlvNilNode) GetTag() TlvTag
func (TlvNilNode) GetValue ¶
func (node TlvNilNode) GetValue() []byte
func (TlvNilNode) IsValidNode ¶
func (node TlvNilNode) IsValidNode() bool
func (TlvNilNode) String ¶
func (node TlvNilNode) String() string
type TlvNodes ¶
type TlvNodes struct {
Nodes []TlvNode
}
func NewTlvNodes ¶
func NewTlvNodes() *TlvNodes
func (TlvNodes) GetNodeByOccur ¶
occurrence: 1-n
func (TlvNodes) IsValidNode ¶
type TlvSimpleNode ¶
func NewTlvSimpleNode ¶
func NewTlvSimpleNode(tag TlvTag, value []byte) *TlvSimpleNode
func (TlvSimpleNode) Encode ¶
func (node TlvSimpleNode) Encode() []byte
func (TlvSimpleNode) GetNode ¶
func (node TlvSimpleNode) GetNode(tag TlvTag) TlvNode
func (TlvSimpleNode) GetNodeByOccur ¶
func (node TlvSimpleNode) GetNodeByOccur(tag TlvTag, occurrence int) TlvNode
func (TlvSimpleNode) GetTag ¶
func (node TlvSimpleNode) GetTag() TlvTag
func (TlvSimpleNode) GetValue ¶
func (node TlvSimpleNode) GetValue() []byte
func (TlvSimpleNode) IsValidNode ¶
func (node TlvSimpleNode) IsValidNode() bool
func (TlvSimpleNode) String ¶
func (node TlvSimpleNode) String() string
type Transceiver ¶
type UnhandledInfo ¶
type UnhandledInfo struct { Protocol asn1.ObjectIdentifier RawData []byte }
Source Files ¶
- active_auth.go
- bac.go
- byte_utils.go
- capdu.go
- card_access.go
- card_security.go
- chip_auth.go
- com.go
- crypto_utils.go
- dg1.go
- dg11.go
- dg12.go
- dg13.go
- dg14.go
- dg15.go
- dg16.go
- dg2.go
- dg7.go
- document.go
- ef_dir.go
- mock_transceiver.go
- mrz.go
- nfc_session.go
- oid.go
- pace.go
- passive_auth.go
- password.go
- rapdu.go
- reader.go
- secure_messaging.go
- security_infos.go
- sod.go
- tlv.go
- transceiver.go