code.pfad.fr/gohmekit@v0.2.1/pairing/kltv.go (about)

     1  //nolint:godot
     2  package pairing
     3  
     4  import "code.pfad.fr/gohmekit/tlv8"
     5  
     6  // Table 5-3.
     7  const (
     8  	kTLVMethod_PairSetup = 0
     9  	// kTLVMethod_PairSetupWithAuth = 1 // not supported (yet)
    10  	// kTLVMethod_PairVerify        = 2 // not used in the spec...
    11  	kTLVMethod_AddPairing    = 3
    12  	kTLVMethod_RemovePairing = 4
    13  	kTLVMethod_ListPairings  = 5
    14  )
    15  
    16  // Table 5-5.
    17  const (
    18  	kTLVError_Unknown        = 0x01
    19  	kTLVError_Authentication = 0x02
    20  	// kTLVError_Backoff        = 0x03
    21  	// kTLVError_MaxPeers       = 0x04
    22  	// kTLVError_MaxTries       = 0x05
    23  	kTLVError_Unavailable = 0x06
    24  	// kTLVError_Busy           = 0x07
    25  )
    26  
    27  // Table 5-6.
    28  const (
    29  	// kTLVType_Method        = 0x00
    30  	// kTLVType_Identifier    = 0x01
    31  	// kTLVType_Salt          = 0x02
    32  	// kTLVType_PublicKey     = 0x03
    33  	// kTLVType_Proof         = 0x04
    34  	// kTLVType_EncryptedData = 0x05
    35  	kTLVType_State = 0x06
    36  	// kTLVType_Error         = 0x07
    37  	// kTLVType_RetryDelay    = 0x08
    38  	// kTLVType_Certificate   = 0x09
    39  	// kTLVType_Signature     = 0x0A
    40  	// kTLVType_Permissions   = 0x0B
    41  	// kTLVType_FragmentData  = 0x0C
    42  	// kTLVType_FragmentLast  = 0x0D
    43  	// kTLVType_Flags         = 0x13
    44  	// kTLVType_Separator     = 0xFF
    45  )
    46  
    47  type ktlvState struct {
    48  	State byte `tlv8:"kTLVType_State"`
    49  }
    50  
    51  func ktlvError(state, err byte) ([]byte, error) {
    52  	return tlv8.Marshal(struct {
    53  		ktlvState
    54  		Error byte `tlv8:"kTLVType_Error"`
    55  	}{
    56  		ktlvState: ktlvState{state},
    57  		Error:     err,
    58  	})
    59  }