@domojs/homekit-controller
Version:
79 lines (78 loc) • 2.46 kB
TypeScript
import { Http, IsomorphicBuffer } from "@akala/core";
import State from "../state.js";
export type PairMessage = {
method: PairMethod;
identifier: string;
salt: IsomorphicBuffer;
publicKey: IsomorphicBuffer;
proof: IsomorphicBuffer;
encryptedData: IsomorphicBuffer;
state: PairState;
error: PairErrorCode;
retryDelay: number;
certificate: IsomorphicBuffer;
signature: IsomorphicBuffer;
permissions: number;
fragmentData: IsomorphicBuffer;
fragmentLast: IsomorphicBuffer;
flags: number;
};
export declare enum PairMethod {
Setup = 0,
SetupWithAuth = 1,
Verify = 2,
AddPairing = 3,
RemovePairing = 4,
ListPairings = 5
}
export declare enum PairState {
M1 = 1,
M2 = 2,
M3 = 3,
M4 = 4,
M5 = 5,
M6 = 6
}
export declare enum PairErrorCode {
Unknown = 1,
Authentication = 2,
Backoff = 3,
MaxPeers = 4,
MaxTries = 5,
Unavailable = 6,
Busy = 7
}
export declare enum PairTypeFlags {
Transient = 2,
Split = 64
}
export default function pair(this: State, accessoryAddress: string, accessoryFqdn: string, http: Http, pinCode: string): Promise<void>;
export declare const pairMessage: import("@akala/protocol-parser/dist/parsers/tlv/object.js").default<Partial<PairMessage>>;
export type PairSetupM2 = Pick<PairMessage, 'state' | 'publicKey' | 'salt'>;
export type PairSetupM3 = Pick<PairMessage, 'state' | 'proof'>;
export type PairSetupM4 = Pick<PairMessage, 'state' | 'proof' | 'encryptedData'>;
export type PairSetupM5 = Pick<PairMessage, 'state' | 'publicKey' | 'encryptedData'>;
export type PairSetupM6 = Pick<PairMessage, 'state' | 'encryptedData'>;
export type SubPairSetupM6 = Pick<PairMessage, 'identifier' | 'signature' | 'publicKey'>;
export interface PairSetupClientInfo {
username: string;
publicKey: IsomorphicBuffer;
privateKey: IsomorphicBuffer;
}
interface EncryptedData {
ciphertext: IsomorphicBuffer;
authTag: IsomorphicBuffer;
}
export interface PairedAccessory {
publicKey: IsomorphicBuffer;
identifier: string;
}
/**
* @group Cryptography
*/
export declare function chacha20_poly1305_encryptAndSeal(key: Buffer, nonce: Buffer, aad: Buffer | null, plaintext: Buffer): EncryptedData;
/**
* @group Cryptography
*/
export declare function chacha20_poly1305_decryptAndVerify(key: Buffer, nonce: Buffer, aad: Buffer | null, ciphertext: Buffer, authTag: Buffer): Buffer;
export {};