Documentation
¶
Index ¶
- Constants
- Variables
- func Conns() map[string]*Conn
- func NewChunkedWriter(wr io.Writer, chunk int) io.Writer
- func NewFsStore(dir string) *fsStore
- func NewMemStore() memStore
- func SetConn(addr string, conn *Conn)
- type AccessoriesPayload
- type Conn
- type KeyPair
- type Listener
- type PairSetupSession
- type Pairing
- type ServeMux
- type Server
- type Session
- type Store
Constants ¶
const ( JsonStatusSuccess = 0 JsonStatusInsufficientPrivileges = -70401 JsonStatusServiceCommunicationFailure = -70402 JsonStatusResourceBusy = -70403 JsonStatusReadOnlyCharacteristic = -70404 JsonStatusWriteOnlyCharacteristic = -70405 JsonStatusNotificationNotSupported = -70406 JsonStatusOutOfResource = -70407 JsonStatusOperationTimedOut = -70408 JsonStatusResourceDoesNotExist = -70409 JsonStatusInvalidValueInRequest = -70410 )
const ( TlvErrorUnknown = 0x1 TlvErrorInvalidRequest = 0x2 TlvErrorAuthentication = 0x2 TlvErrorBackoff = 0x3 TlvErrorMaxPeers = 0x4 TlvErrorUnknownPeer = 0x4 TlvErrorMaxTries = 0x5 TlvErrorBusy = 0x7 )
const ( // HTTPContentTypePairingTLV8 is the HTTP content type for pairing HTTPContentTypePairingTLV8 = "application/pairing+tlv8" // HTTPContentTypeHAPJson is the HTTP content type for json data HTTPContentTypeHAPJson = "application/hap+json" )
const ( Step1 byte = 0x1 Step2 byte = 0x2 Step3 byte = 0x3 Step4 byte = 0x4 Step5 byte = 0x5 Step6 byte = 0x6 )
const ( MethodPair byte = 0x0 // pair MethodPairMFi byte = 0x1 // MFi compliant accessory MethodVerifyPair byte = 0x2 // verify a pairing MethodAddPairing byte = 0x3 // add client through secure connection MethodDeletePairing byte = 0x4 // delete pairing through secure connection MethodListPairings byte = 0x5 )
const ( PermissionUser byte = 0x0 PermissionAdmin byte = 0x1 )
const (
// PacketLengthMax is the max length of encrypted packets
PacketLengthMax = 0x400
)
const (
SRPGroup = "rfc5054.3072" // N (modulo) => 384 byte
)
Main SRP algorithm is described in http://srp.stanford.edu/design.html The HAP uses the SRP-6a Stanford implementation with the following characteristics
x = H(s | H(I | ":" | P)) -> called the key derivative function M1 = H(H(N) xor H(g), H(I), s, A, B, K)
Variables ¶
Functions ¶
func NewChunkedWriter ¶
NewChunkedWriter returns a writer which writes bytes in chunkes of specified size.
func NewFsStore ¶
func NewFsStore(dir string) *fsStore
func NewMemStore ¶
func NewMemStore() memStore
Types ¶
type AccessoriesPayload ¶
type Conn ¶
type Listener ¶
type Listener struct {
*net.TCPListener
}
type PairSetupSession ¶
type PairSetupSession struct { Identifier []byte Salt []byte // s PublicKey []byte // A PrivateKey []byte // S EncryptionKey [32]byte // K // contains filtered or unexported fields }
func NewPairSetupSession ¶
func NewPairSetupSession(id, pin string) (*PairSetupSession, error)
NewPairSetupSession return a new setup server session.
func (*PairSetupSession) ProofFromClientProof ¶
func (p *PairSetupSession) ProofFromClientProof(clientProof []byte) ([]byte, error)
ProofFromClientProof validates client proof (`M1`) and returns authenticator or error if proof is not valid.
func (*PairSetupSession) SetupEncryptionKey ¶
func (p *PairSetupSession) SetupEncryptionKey(salt []byte, info []byte) error
SetupEncryptionKey calculates and internally sets encryption key `K` based on salt and info
Only 32 bytes are used from HKDF-SHA512
func (*PairSetupSession) SetupPrivateKeyFromClientPublicKey ¶
func (p *PairSetupSession) SetupPrivateKeyFromClientPublicKey(key []byte) error
SetupPrivateKeyFromClientPublicKey calculates and internally sets secret key `S` based on client public key `A`
type ServeMux ¶
type ServeMux interface { // Handle registers the handler for the given pattern. Handle(pattern string, handler http.Handler) // HandleFuncs registers the handler function for the given pattern. HandleFunc(pattern string, handler http.HandlerFunc) }
A ServeMux lets you attach handlers to http url paths.
type Server ¶
type Server struct { // Pin specifies the pincode used to pair // with the accessory. Pin string // Addr specifies the tcp address for the server // to listen to in form of "host:port". // If empty, a random port is used. Addr string MfiCompliant bool // default false Protocol string // default "1.0" SetupId string Key KeyPair // public and private key (generated and stored on disk) // contains filtered or unexported fields }
A server handles incoming HTTP request for an accessory. The server uses dnssd to announce the accessory on the local network.
func NewServer ¶
NewServer returns a new server give a store (to persist data) and accessories. If more than one accessory is added to the server, *a* acts as a bridge.
func (*Server) ListenAndServe ¶
ListenAndServe starts the server.
type Session ¶
type Session struct { Pairing Pairing // contains filtered or unexported fields }
type Store ¶
type Store interface { // Set sets the value for the given key. Set(key string, value []byte) error // Get returns the value for the given key. Get(key string) ([]byte, error) // Delete deletes the value for the given key. Delete(key string) error // KeysWithSuffix returns a list keys with the give suffix. KeysWithSuffix(suffix string) ([]string, error) }
A Store lets you store key-value pairs.
Source Files
¶
Directories
¶
Path | Synopsis |
---|---|
THIS FILE IS AUTO-GENERATED
|
THIS FILE IS AUTO-GENERATED |
THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED Package characteristic implements the HomeKit characteristics.
|
THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED Package characteristic implements the HomeKit characteristics. |
cmd
|
|
switch
This example show an example of a switch accessory which periodically changes it's state between on and off.
|
This example show an example of a switch accessory which periodically changes it's state between on and off. |
THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED
|
THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED THIS FILE IS AUTO-GENERATED |