modernssh
API reference

Agents and public-key management

Exact declarations for 122 package-root exports. Private and protected class members are omitted.

Agent

Class. Declared in src/publickey/Agent.ts.

export default abstract class Agent<Id = string> {
    abstract type: AgentType;
    getStream?(): Promise<Duplex>;
    abstract sign(id: Id, data: Buffer, algorithm?: string): Promise<EncodedSignature>;
    abstract getPublicKeys(): Promise<[
        Id,
        PublicKey
    ][]>;
    abstract getPublicKey(id: Id): Promise<PublicKey>;
}

AgentError

Class. Declared in src/publickey/Agent.ts.

export declare class AgentError extends Error {
    name: string;
}

AgentType

Enum. Declared in src/publickey/Agent.ts.

export declare enum AgentType {
    Interactive = 0,
    NonInteractive = 1
}

createSocketAgent

Function. Declared in src/publickey/SocketAgent.ts.

/** Construct the socket-backed agent appropriate for the current platform and path. */
export declare function createSocketAgent(socketPath: string): Agent<string>;

CygwinAgent

Class. Declared in src/publickey/CygwinAgent.ts.

/** A signing agent transported through Cygwin's legacy AF_UNIX socket-file protocol. */
export default class CygwinAgent extends Agent<string> {
    readonly type = AgentType.NonInteractive;
    readonly socketPath: string;
    readonly options: Readonly<Required<CygwinAgentOptions>>;
    constructor(socketPath: string, options?: CygwinAgentOptions);
    getPublicKeys(): Promise<[
        string,
        PublicKey
    ][]>;
    getPublicKey(id: string): Promise<PublicKey>;
    sign(id: string, data: Buffer, algorithm?: string): Promise<EncodedSignature>;
    getStream(): Promise<Socket>;
}

CygwinAgentError

Class. Declared in src/publickey/CygwinAgent.ts.

export declare class CygwinAgentError extends AgentError {
    name: string;
}

CygwinAgentOptions

Interface. Declared in src/publickey/CygwinAgent.ts.

export interface CygwinAgentOptions {
    /** Maximum idle milliseconds for each TCP handshake. Zero disables the deadline. */
    handshakeTimeout?: number;
    /** Maximum bytes read from the Cygwin socket descriptor file. */
    maxSocketFileLength?: number;
}

decodePublicKeySubsystemPacket

Function. Declared in src/publickey/PublicKeySubsystemCodec.ts.

export declare function decodePublicKeySubsystemPacket(frame: Buffer): PublicKeySubsystemPacket;

discoverPageantAgentSocket

Function. Declared in src/publickey/PageantDiscovery.ts.

/** Discover the named pipe used by Pageant 0.75 and newer for the current Windows user. */
export declare function discoverPageantAgentSocket(): string;

DiskAgent

Class. Declared in src/publickey/DiskAgent.ts.

export default class DiskAgent implements Agent<string> {
    type: AgentType;
    readonly directory: string;
    constructor(directory?: string, options?: DiskAgentOptions);
    sign(id: string, data: Buffer, algorithm?: string): Promise<EncodedSignature>;
    getPublicKeys(): Promise<[
        string,
        PublicKey
    ][]>;
    getPublicKey(id: string): Promise<PublicKey>;
}

DiskAgentError

Class. Declared in src/publickey/DiskAgent.ts.

export declare class DiskAgentError extends AgentError {
    name: string;
}

DiskAgentOptions

Interface. Declared in src/publickey/DiskAgent.ts.

export interface DiskAgentOptions {
    readonly passphrase?: DiskAgentPassphrase | ((privateKeyPath: string) => DiskAgentPassphrase | Promise<DiskAgentPassphrase>);
    readonly onInvalidPublicKey?: (error: DiskAgentError, publicKeyPath: string) => void | Promise<void>;
}

DiskAgentPassphrase

Type. Declared in src/publickey/DiskAgent.ts.

export type DiskAgentPassphrase = string | Buffer;

encodePublicKeySubsystemPacket

Function. Declared in src/publickey/PublicKeySubsystemCodec.ts.

export declare function encodePublicKeySubsystemPacket(packet: PublicKeySubsystemPacket): Buffer;

MAX_OPENSSH_AGENT_ASSOCIATED_CERTIFICATES

Constant. Declared in src/publickey/OpenSSHAgentProtocol.ts.

export declare const MAX_OPENSSH_AGENT_ASSOCIATED_CERTIFICATES = 1024;

MAX_OPENSSH_AGENT_DESTINATION_CONSTRAINTS

Constant. Declared in src/publickey/OpenSSHAgentProtocol.ts.

export declare const MAX_OPENSSH_AGENT_DESTINATION_CONSTRAINTS = 1024;

MAX_OPENSSH_AGENT_SESSION_BINDINGS

Constant. Declared in src/publickey/OpenSSHAgentProtocol.ts.

export declare const MAX_OPENSSH_AGENT_SESSION_BINDINGS = 16;

MAX_OPENSSH_AGENT_SESSION_IDENTIFIER_LENGTH

Constant. Declared in src/publickey/OpenSSHAgentProtocol.ts.

export declare const MAX_OPENSSH_AGENT_SESSION_IDENTIFIER_LENGTH = 128;

MAX_PUBLIC_KEY_SUBSYSTEM_NAMESPACE_CHARACTERS

Constant. Declared in src/publickey/PublicKeySubsystemCodec.ts.

export declare const MAX_PUBLIC_KEY_SUBSYSTEM_NAMESPACE_CHARACTERS = 300;

MAX_PUBLIC_KEY_SUBSYSTEM_PACKET_LENGTH

Constant. Declared in src/publickey/PublicKeySubsystemCodec.ts.

export declare const MAX_PUBLIC_KEY_SUBSYSTEM_PACKET_LENGTH: number;

MAX_PUBLIC_KEY_SUBSYSTEM_RESPONSE_BYTES

Constant. Declared in src/publickey/PublicKeySubsystemCodec.ts.

export declare const MAX_PUBLIC_KEY_SUBSYSTEM_RESPONSE_BYTES: number;

MAX_PUBLIC_KEY_SUBSYSTEM_RESPONSES

Constant. Declared in src/publickey/PublicKeySubsystemCodec.ts.

export declare const MAX_PUBLIC_KEY_SUBSYSTEM_RESPONSES = 1024;

MAX_SSH_AGENT_MESSAGE_LENGTH

Constant. Declared in src/publickey/SSHAgentProtocol.ts.

export declare const MAX_SSH_AGENT_MESSAGE_LENGTH: number;

OnePasswordAgent

Class. Declared in src/publickey/OnePasswordAgent.ts.

export default class OnePasswordAgent extends SSHAgent {
    type: AgentType;
    constructor(agentSocketPath?: string);
}

OnePasswordAgentError

Class. Declared in src/publickey/OnePasswordAgent.ts.

export declare class OnePasswordAgentError extends SSHAgentError {
    name: string;
}

OPENSSH_AGENT_ASSOCIATED_CERTIFICATES

Constant. Declared in src/publickey/OpenSSHAgentProtocol.ts.

export declare const OPENSSH_AGENT_ASSOCIATED_CERTIFICATES = "associated-certs-v00@openssh.com";

OPENSSH_AGENT_RESTRICT_DESTINATION

Constant. Declared in src/publickey/OpenSSHAgentProtocol.ts.

export declare const OPENSSH_AGENT_RESTRICT_DESTINATION = "restrict-destination-v00@openssh.com";

OPENSSH_AGENT_SECURITY_KEY_PROVIDER

Constant. Declared in src/publickey/SSHAgentProtocol.ts.

export declare const OPENSSH_AGENT_SECURITY_KEY_PROVIDER = "sk-provider@openssh.com";

OPENSSH_AGENT_SESSION_BIND

Constant. Declared in src/publickey/OpenSSHAgentProtocol.ts.

export declare const OPENSSH_AGENT_SESSION_BIND = "session-bind@openssh.com";

OpenSSHAgentAssociatedCertificatesConstraint

Type. Declared in src/publickey/OpenSSHAgentProtocol.ts.

export type OpenSSHAgentAssociatedCertificatesConstraint = Readonly<{
    type: "openssh-associated-certificates";
    certificatesOnly?: boolean;
    certificates: readonly PublicKey[];
}>;

OpenSSHAgentDestinationConstraint

Type. Declared in src/publickey/OpenSSHAgentProtocol.ts.

export type OpenSSHAgentDestinationConstraint = Readonly<{
    type: "openssh-restrict-destination";
    destinations: readonly OpenSSHAgentDestinationRule[];
}>;

OpenSSHAgentDestinationHop

Type. Declared in src/publickey/OpenSSHAgentProtocol.ts.

export type OpenSSHAgentDestinationHop = Readonly<{
    hostname: string;
    hostKeys: readonly OpenSSHAgentDestinationKey[];
}>;

OpenSSHAgentDestinationKey

Type. Declared in src/publickey/OpenSSHAgentProtocol.ts.

export type OpenSSHAgentDestinationKey = Readonly<{
    publicKey: PublicKey;
    certificateAuthority?: boolean;
}>;

OpenSSHAgentDestinationRule

Type. Declared in src/publickey/OpenSSHAgentProtocol.ts.

export type OpenSSHAgentDestinationRule = Readonly<{
    /** Undefined identifies the initial hop from the machine running the agent. */
    from?: OpenSSHAgentDestinationHop;
    to: Readonly<{
        username?: string;
        hostname: string;
        hostKeys: readonly OpenSSHAgentDestinationKey[];
    }>;
}>;

OpenSSHAgentKeyConstraint

Type. Declared in src/publickey/OpenSSHAgentProtocol.ts.

export type OpenSSHAgentKeyConstraint = OpenSSHAgentDestinationConstraint | OpenSSHAgentAssociatedCertificatesConstraint;

OpenSSHAgentSecurityKeyProviderConstraint

Type. Declared in src/publickey/SSHAgentProtocol.ts.

export type OpenSSHAgentSecurityKeyProviderConstraint = Readonly<{
    type: "openssh-security-key-provider";
    provider: string;
}>;

OpenSSHAgentSessionBinding

Type. Declared in src/publickey/OpenSSHAgentProtocol.ts.

export type OpenSSHAgentSessionBinding = Readonly<{
    hostKey: PublicKey;
    sessionIdentifier: Buffer;
    signature: EncodedSignature;
    forwarding: boolean;
}>;

PageantAgent

Class. Declared in src/publickey/PageantAgent.ts.

/** An agent client for Pageant's standard agent-protocol transport. */
export default class PageantAgent extends SSHAgent {
    type: AgentType;
    constructor(socketPath?: string);
}

PageantAgentError

Class. Declared in src/publickey/PageantDiscovery.ts.

export declare class PageantAgentError extends SSHAgentError {
    name: string;
}

PrivateKeyAgent

Class. Declared in src/publickey/PrivateKeyAgent.ts.

export default class PrivateKeyAgent extends Agent<string> {
    readonly type = AgentType.NonInteractive;
    constructor(keys: PrivateKey | readonly PrivateKey[]);
    getPublicKeys(): Promise<[
        string,
        PublicKey
    ][]>;
    getPublicKey(id: string): Promise<PublicKey>;
    sign(id: string, data: Buffer, algorithm?: string): Promise<EncodedSignature>;
}

PrivateKeyAgentError

Class. Declared in src/publickey/PrivateKeyAgent.ts.

export declare class PrivateKeyAgentError extends AgentError {
    name: string;
}

PUBLIC_KEY_SUBSYSTEM_VERSION

Constant. Declared in src/publickey/PublicKeySubsystemCodec.ts.

export declare const PUBLIC_KEY_SUBSYSTEM_VERSION = 3;

PublicKeySubsystemAddAttribute

Interface. Declared in src/publickey/PublicKeySubsystemCodec.ts.

export interface PublicKeySubsystemAddAttribute {
    readonly name: string;
    readonly value: Buffer;
    readonly critical: boolean;
}

PublicKeySubsystemAddCertificateOptions

Interface. Declared in src/publickey/PublicKeySubsystemClient.ts.

export interface PublicKeySubsystemAddCertificateOptions extends PublicKeySubsystemAddOptions {
    readonly namespace: string;
}

PublicKeySubsystemAddCertificatePacket

Interface. Declared in src/publickey/PublicKeySubsystemCodec.ts.

export interface PublicKeySubsystemAddCertificatePacket {
    readonly type: "add-certificate";
    readonly format: string;
    readonly certificateBlob: Buffer;
    readonly overwrite: boolean;
    readonly attributes: readonly PublicKeySubsystemAddAttribute[];
}

PublicKeySubsystemAddOptions

Interface. Declared in src/publickey/PublicKeySubsystemClient.ts.

export interface PublicKeySubsystemAddOptions {
    readonly overwrite?: boolean;
    readonly namespace?: string;
    readonly attributes?: readonly PublicKeySubsystemAttributeInput[];
}

PublicKeySubsystemAddPacket

Interface. Declared in src/publickey/PublicKeySubsystemCodec.ts.

export interface PublicKeySubsystemAddPacket {
    readonly type: "add";
    readonly algorithm: string;
    readonly keyBlob: Buffer;
    readonly overwrite: boolean;
    readonly attributes: readonly PublicKeySubsystemAddAttribute[];
}

PublicKeySubsystemAttributeInput

Interface. Declared in src/publickey/PublicKeySubsystemClient.ts.

export interface PublicKeySubsystemAttributeInput {
    readonly name: string;
    readonly value: string | Buffer;
    readonly critical?: boolean;
}

PublicKeySubsystemAttributePacket

Interface. Declared in src/publickey/PublicKeySubsystemCodec.ts.

export interface PublicKeySubsystemAttributePacket {
    readonly type: "attribute";
    readonly name: string;
    readonly compulsory: boolean;
}

PublicKeySubsystemCertificate

Interface. Declared in src/publickey/PublicKeySubsystemClient.ts.

export interface PublicKeySubsystemCertificate {
    readonly format: string;
    readonly certificate: Buffer;
    readonly namespace: string;
    readonly attributes: readonly PublicKeySubsystemListedAttribute[];
}

PublicKeySubsystemCertificatePacket

Interface. Declared in src/publickey/PublicKeySubsystemCodec.ts.

export interface PublicKeySubsystemCertificatePacket {
    readonly type: "certificate";
    readonly format: string;
    readonly certificateBlob: Buffer;
    readonly attributes: readonly PublicKeySubsystemListedAttribute[];
}

PublicKeySubsystemClient

Class. Declared in src/publickey/PublicKeySubsystemClient.ts.

export default class PublicKeySubsystemClient {
    readonly protocolVersion = 3;
    readonly channel: ClientSessionChannel;
    readonly requestTimeout: number;
    get negotiatedProtocolVersion(): number | undefined;
    static connect(channel: ClientSessionChannel, options?: PublicKeySubsystemClientOptions): Promise<PublicKeySubsystemClient>;
    add(key: PublicKey, options?: PublicKeySubsystemAddOptions): Promise<void>;
    remove(key: PublicKey, options?: PublicKeySubsystemRequestOptions): Promise<void>;
    list(options?: PublicKeySubsystemRequestOptions): Promise<readonly PublicKeySubsystemKey[]>;
    addCertificate(format: string, certificate: Buffer, options: PublicKeySubsystemAddCertificateOptions): Promise<void>;
    removeCertificate(format: string, certificate: Buffer, options: PublicKeySubsystemRemoveCertificateOptions): Promise<void>;
    listCertificates(): Promise<readonly PublicKeySubsystemCertificate[]>;
    listNamespaces(): Promise<readonly string[]>;
    listAttributes(): Promise<readonly PublicKeySubsystemSupportedAttribute[]>;
    end(): void;
    /** Close the subsystem and settle after its SSH channel closes. */
    close(): Promise<void>;
    [Symbol.asyncDispose](): Promise<void>;
    destroy(error?: Error): void;
}

PublicKeySubsystemClientOptions

Interface. Declared in src/publickey/PublicKeySubsystemClient.ts.

export interface PublicKeySubsystemClientOptions {
    /** Maximum integer milliseconds for initialization or a reply. Range: 1 through 2147483647. */
    requestTimeout?: number;
}

PublicKeySubsystemKey

Interface. Declared in src/publickey/PublicKeySubsystemClient.ts.

export interface PublicKeySubsystemKey {
    readonly key: PublicKey;
    readonly namespace?: string;
    readonly attributes: readonly PublicKeySubsystemListedAttribute[];
}

PublicKeySubsystemListAttributesPacket

Interface. Declared in src/publickey/PublicKeySubsystemCodec.ts.

export interface PublicKeySubsystemListAttributesPacket {
    readonly type: "listattributes";
}

PublicKeySubsystemListCertificatesPacket

Interface. Declared in src/publickey/PublicKeySubsystemCodec.ts.

export interface PublicKeySubsystemListCertificatesPacket {
    readonly type: "list-certificates";
}

PublicKeySubsystemListedAttribute

Interface. Declared in src/publickey/PublicKeySubsystemClient.ts.

export interface PublicKeySubsystemListedAttribute {
    readonly name: string;
    readonly value: Buffer;
}

PublicKeySubsystemListNamespacesPacket

Interface. Declared in src/publickey/PublicKeySubsystemCodec.ts.

export interface PublicKeySubsystemListNamespacesPacket {
    readonly type: "list-namespaces";
}

PublicKeySubsystemListPacket

Interface. Declared in src/publickey/PublicKeySubsystemCodec.ts.

export interface PublicKeySubsystemListPacket {
    readonly type: "list";
    /** Present on RFC 7076 version-3 requests and absent on RFC 4819 version-2 requests. */
    readonly attributes?: readonly PublicKeySubsystemAddAttribute[];
}

PublicKeySubsystemNamespacePacket

Interface. Declared in src/publickey/PublicKeySubsystemCodec.ts.

export interface PublicKeySubsystemNamespacePacket {
    readonly type: "namespace";
    readonly name: string;
}

PublicKeySubsystemPacket

Type. Declared in src/publickey/PublicKeySubsystemCodec.ts.

export type PublicKeySubsystemPacket = PublicKeySubsystemVersionPacket | PublicKeySubsystemAddPacket | PublicKeySubsystemStatusPacket | PublicKeySubsystemRemovePacket | PublicKeySubsystemListPacket | PublicKeySubsystemListAttributesPacket | PublicKeySubsystemPublicKeyPacket | PublicKeySubsystemAttributePacket | PublicKeySubsystemAddCertificatePacket | PublicKeySubsystemRemoveCertificatePacket | PublicKeySubsystemListCertificatesPacket | PublicKeySubsystemCertificatePacket | PublicKeySubsystemListNamespacesPacket | PublicKeySubsystemNamespacePacket | PublicKeySubsystemUnknownPacket;

PublicKeySubsystemPacketParser

Class. Declared in src/publickey/PublicKeySubsystemCodec.ts.

export declare class PublicKeySubsystemPacketParser {
    push(chunk: Buffer): PublicKeySubsystemPacket[];
    end(): void;
}

PublicKeySubsystemProtocolError

Class. Declared in src/publickey/PublicKeySubsystemCodec.ts.

export declare class PublicKeySubsystemProtocolError extends Error {
    constructor(message: string);
}

PublicKeySubsystemPublicKeyPacket

Interface. Declared in src/publickey/PublicKeySubsystemCodec.ts.

export interface PublicKeySubsystemPublicKeyPacket {
    readonly type: "publickey";
    readonly algorithm: string;
    readonly keyBlob: Buffer;
    readonly attributes: readonly PublicKeySubsystemListedAttribute[];
}

PublicKeySubsystemRemoveCertificateOptions

Interface. Declared in src/publickey/PublicKeySubsystemClient.ts.

export interface PublicKeySubsystemRemoveCertificateOptions extends PublicKeySubsystemRequestOptions {
    readonly namespace: string;
}

PublicKeySubsystemRemoveCertificatePacket

Interface. Declared in src/publickey/PublicKeySubsystemCodec.ts.

export interface PublicKeySubsystemRemoveCertificatePacket {
    readonly type: "remove-certificate";
    readonly format: string;
    readonly certificateBlob: Buffer;
    readonly attributes: readonly PublicKeySubsystemListedAttribute[];
}

PublicKeySubsystemRemovePacket

Interface. Declared in src/publickey/PublicKeySubsystemCodec.ts.

export interface PublicKeySubsystemRemovePacket {
    readonly type: "remove";
    readonly algorithm: string;
    readonly keyBlob: Buffer;
    /** Present on RFC 7076 version-3 requests and absent on RFC 4819 version-2 requests. */
    readonly attributes?: readonly PublicKeySubsystemAddAttribute[];
}

PublicKeySubsystemRequestOptions

Interface. Declared in src/publickey/PublicKeySubsystemClient.ts.

export interface PublicKeySubsystemRequestOptions {
    readonly namespace?: string;
    readonly attributes?: readonly PublicKeySubsystemAttributeInput[];
}

PublicKeySubsystemServer

Class. Declared in src/publickey/PublicKeySubsystemServer.ts.

export default class PublicKeySubsystemServer extends EventEmitter<PublicKeySubsystemServerEvents> {
    readonly protocolVersion = 3;
    readonly stream: Shell;
    readonly hooker: Hooker<PublicKeySubsystemServerHooker>;
    readonly attributes: readonly Readonly<Required<PublicKeySubsystemSupportedAttribute>>[];
    get negotiatedProtocolVersion(): number | undefined;
    constructor(stream: Shell, options?: PublicKeySubsystemServerOptions);
    destroy(error?: Error): void;
    /** Close the subsystem and settle after its SSH channel closes. */
    close(): Promise<void>;
    [Symbol.asyncDispose](): Promise<void>;
}

PublicKeySubsystemServerAddCertificateContext

Interface. Declared in src/publickey/PublicKeySubsystemServer.ts.

export interface PublicKeySubsystemServerAddCertificateContext {
    readonly format: string;
    readonly certificate: Buffer;
    readonly overwrite: boolean;
    readonly namespace: string;
    readonly attributes: readonly PublicKeySubsystemAddAttribute[];
}

PublicKeySubsystemServerAddContext

Interface. Declared in src/publickey/PublicKeySubsystemServer.ts.

export interface PublicKeySubsystemServerAddContext {
    readonly key: PublicKey;
    readonly overwrite: boolean;
    readonly attributes: readonly PublicKeySubsystemAddAttribute[];
    readonly namespace?: string;
}

PublicKeySubsystemServerEvents

Type. Declared in src/publickey/PublicKeySubsystemServer.ts.

export type PublicKeySubsystemServerEvents = {
    ready: [
        clientVersion: number
    ];
    close: [
    ];
    error: [
        error: Error
    ];
};

PublicKeySubsystemServerHooker

Type. Declared in src/publickey/PublicKeySubsystemServer.ts.

export type PublicKeySubsystemServerHooker = {
    add: [
        context: Readonly<PublicKeySubsystemServerAddContext>,
        controller: PublicKeySubsystemServerResponseController,
        operation: Readonly<PublicKeySubsystemServerOperationContext>
    ];
    remove: [
        context: Readonly<PublicKeySubsystemServerRemoveContext>,
        controller: PublicKeySubsystemServerResponseController,
        operation: Readonly<PublicKeySubsystemServerOperationContext>
    ];
    list: [
        controller: PublicKeySubsystemServerListController,
        context: Readonly<PublicKeySubsystemServerListContext>,
        operation: Readonly<PublicKeySubsystemServerOperationContext>
    ];
    addCertificate: [
        context: Readonly<PublicKeySubsystemServerAddCertificateContext>,
        controller: PublicKeySubsystemServerResponseController,
        operation: Readonly<PublicKeySubsystemServerOperationContext>
    ];
    removeCertificate: [
        context: Readonly<PublicKeySubsystemServerRemoveCertificateContext>,
        controller: PublicKeySubsystemServerResponseController,
        operation: Readonly<PublicKeySubsystemServerOperationContext>
    ];
    listCertificates: [
        controller: PublicKeySubsystemServerListCertificatesController,
        operation: Readonly<PublicKeySubsystemServerOperationContext>
    ];
    listNamespaces: [
        controller: PublicKeySubsystemServerListNamespacesController,
        operation: Readonly<PublicKeySubsystemServerOperationContext>
    ];
};

PublicKeySubsystemServerListCertificatesController

Interface. Declared in src/publickey/PublicKeySubsystemServer.ts.

export interface PublicKeySubsystemServerListCertificatesController extends PublicKeySubsystemServerResponseController {
    certificates?: readonly PublicKeySubsystemServerListedCertificate[];
}

PublicKeySubsystemServerListContext

Interface. Declared in src/publickey/PublicKeySubsystemServer.ts.

export interface PublicKeySubsystemServerListContext {
    readonly attributes: readonly PublicKeySubsystemAddAttribute[];
    readonly namespace?: string;
}

PublicKeySubsystemServerListController

Interface. Declared in src/publickey/PublicKeySubsystemServer.ts.

export interface PublicKeySubsystemServerListController extends PublicKeySubsystemServerResponseController {
    keys?: readonly PublicKeySubsystemServerListedKey[];
}

PublicKeySubsystemServerListedAttribute

Interface. Declared in src/publickey/PublicKeySubsystemServer.ts.

export interface PublicKeySubsystemServerListedAttribute {
    readonly name: string;
    readonly value: string | Buffer;
}

PublicKeySubsystemServerListedCertificate

Interface. Declared in src/publickey/PublicKeySubsystemServer.ts.

export interface PublicKeySubsystemServerListedCertificate {
    readonly format: string;
    readonly certificate: Buffer;
    readonly namespace: string;
    readonly attributes?: readonly PublicKeySubsystemServerListedAttribute[];
}

PublicKeySubsystemServerListedKey

Interface. Declared in src/publickey/PublicKeySubsystemServer.ts.

export interface PublicKeySubsystemServerListedKey {
    readonly key: PublicKey;
    readonly attributes?: readonly PublicKeySubsystemServerListedAttribute[];
}

PublicKeySubsystemServerListNamespacesController

Interface. Declared in src/publickey/PublicKeySubsystemServer.ts.

export interface PublicKeySubsystemServerListNamespacesController extends PublicKeySubsystemServerResponseController {
    namespaces?: readonly string[];
}

PublicKeySubsystemServerOperationContext

Interface. Declared in src/publickey/PublicKeySubsystemServer.ts.

export interface PublicKeySubsystemServerOperationContext {
    /** Aborted when this request expires or its subsystem channel closes. */
    readonly signal: AbortSignal;
}

PublicKeySubsystemServerOptions

Interface. Declared in src/publickey/PublicKeySubsystemServer.ts.

export interface PublicKeySubsystemServerOptions {
    readonly attributes?: readonly PublicKeySubsystemSupportedAttribute[];
    /** Integer milliseconds to wait for close. Defaults to 30000; range: 1 through 2147483647. */
    readonly closeTimeout?: number;
    /**
     * Integer milliseconds for initialization, policy, and response writes.
     * Defaults to 30000; range: 1 through 2147483647.
     */
    readonly requestTimeout?: number;
}

PublicKeySubsystemServerRemoveCertificateContext

Interface. Declared in src/publickey/PublicKeySubsystemServer.ts.

export interface PublicKeySubsystemServerRemoveCertificateContext {
    readonly format: string;
    readonly certificate: Buffer;
    readonly namespace: string;
    readonly attributes: readonly PublicKeySubsystemListedAttribute[];
}

PublicKeySubsystemServerRemoveContext

Interface. Declared in src/publickey/PublicKeySubsystemServer.ts.

export interface PublicKeySubsystemServerRemoveContext {
    readonly key: PublicKey;
    readonly attributes: readonly PublicKeySubsystemAddAttribute[];
    readonly namespace?: string;
}

PublicKeySubsystemServerResponseController

Interface. Declared in src/publickey/PublicKeySubsystemServer.ts.

export interface PublicKeySubsystemServerResponseController {
    success: boolean;
    failureCode?: number;
    description?: string;
    languageTag?: string;
}

PublicKeySubsystemStatusCode

Enum. Declared in src/publickey/PublicKeySubsystemCodec.ts.

export declare enum PublicKeySubsystemStatusCode {
    Success = 0,
    AccessDenied = 1,
    StorageExceeded = 2,
    VersionNotSupported = 3,
    KeyNotFound = 4,
    KeyNotSupported = 5,
    KeyAlreadyPresent = 6,
    GeneralFailure = 7,
    RequestNotSupported = 8,
    AttributeNotSupported = 9,
    CertificateNotFound = 192,
    CertificateNotSupported = 193,
    CertificateAlreadyPresent = 194,
    ActionNotAuthorized = 195,
    CannotCreateNamespace = 196
}

PublicKeySubsystemStatusError

Class. Declared in src/publickey/PublicKeySubsystemClient.ts.

export declare class PublicKeySubsystemStatusError extends Error {
    readonly code: number;
    readonly languageTag: string;
    constructor(code: number, description: string, languageTag: string);
}

PublicKeySubsystemStatusPacket

Interface. Declared in src/publickey/PublicKeySubsystemCodec.ts.

export interface PublicKeySubsystemStatusPacket {
    readonly type: "status";
    readonly code: number;
    readonly description: string;
    readonly languageTag: string;
}

PublicKeySubsystemSupportedAttribute

Interface. Declared in src/publickey/PublicKeySubsystemClient.ts.

export interface PublicKeySubsystemSupportedAttribute {
    readonly name: string;
    readonly compulsory: boolean;
}

PublicKeySubsystemUnknownPacket

Interface. Declared in src/publickey/PublicKeySubsystemCodec.ts.

export interface PublicKeySubsystemUnknownPacket {
    readonly type: "unknown";
    readonly name: string;
    readonly data: Buffer;
}

PublicKeySubsystemVersionPacket

Interface. Declared in src/publickey/PublicKeySubsystemCodec.ts.

export interface PublicKeySubsystemVersionPacket {
    readonly type: "version";
    readonly version: number;
}

SSHAgent

Class. Declared in src/publickey/SSHAgent.ts.

export default class SSHAgent implements Agent<string> {
    type: AgentType;
    readonly socketPath: string;
    readonly options: Readonly<Required<SSHSocketAgentOptions>>;
    constructor(socketPath?: string | undefined, options?: SSHSocketAgentOptions);
    sign(id: string, data: Buffer, algorithm?: string): Promise<EncodedSignature>;
    getPublicKeys(): Promise<[
        string,
        PublicKey
    ][]>;
    getPublicKey(id: string): Promise<PublicKey>;
    getStream(): Promise<Socket>;
}

SSHAgentAddIdentityOptions

Interface. Declared in src/publickey/SSHAgentProtocol.ts.

export interface SSHAgentAddIdentityOptions {
    comment?: string;
    constraints?: readonly SSHAgentConstraint[];
}

SSHAgentAddTokenOptions

Interface. Declared in src/publickey/SSHAgentProtocol.ts.

export interface SSHAgentAddTokenOptions {
    constraints?: readonly SSHAgentConstraint[];
}

SSHAgentConstraint

Type. Declared in src/publickey/SSHAgentProtocol.ts.

export type SSHAgentConstraint = Readonly<{
    type: "lifetime";
    seconds: number;
}> | Readonly<{
    type: "confirm";
}> | Readonly<{
    type: "extension";
    name: string;
    data: Buffer;
}> | OpenSSHAgentSecurityKeyProviderConstraint | OpenSSHAgentKeyConstraint;

SSHAgentConstraintType

Enum. Declared in src/publickey/SSHAgentProtocol.ts.

export declare enum SSHAgentConstraintType {
    Lifetime = 1,
    Confirm = 2,
    Extension = 255
}

SSHAgentError

Class. Declared in src/publickey/SSHAgent.ts.

export declare class SSHAgentError extends AgentError {
    name: string;
}

SSHAgentExtensionFailureError

Class. Declared in src/publickey/SSHAgentProtocol.ts.

export declare class SSHAgentExtensionFailureError extends SSHAgentProtocolError {
    name: string;
}

SSHAgentExtensionResult

Type. Declared in src/publickey/SSHAgentProtocol.ts.

export type SSHAgentExtensionResult = Readonly<{
    kind: "success";
}> | Readonly<{
    kind: "response";
    contents: Buffer;
}>;

SSHAgentIdentity

Interface. Declared in src/publickey/SSHAgentProtocol.ts.

export interface SSHAgentIdentity {
    publicKey: PublicKey;
    comment?: string;
}

SSHAgentMessageType

Enum. Declared in src/publickey/SSHAgentProtocol.ts.

export declare enum SSHAgentMessageType {
    Failure = 5,
    Success = 6,
    RequestIdentities = 11,
    IdentitiesAnswer = 12,
    SignRequest = 13,
    SignResponse = 14,
    AddIdentity = 17,
    RemoveIdentity = 18,
    RemoveAllIdentities = 19,
    AddToken = 20,
    RemoveToken = 21,
    Lock = 22,
    Unlock = 23,
    AddConstrainedIdentity = 25,
    AddConstrainedToken = 26,
    Extension = 27,
    ExtensionFailure = 28,
    ExtensionResponse = 29
}

SSHAgentProtocolClient

Class. Declared in src/publickey/SSHAgentProtocol.ts.

/** A Promise-based client for one already-connected agent protocol stream. */
export declare class SSHAgentProtocolClient extends Agent<string> {
    readonly type = AgentType.NonInteractive;
    readonly stream: Duplex;
    readonly options: Readonly<Required<SSHAgentProtocolOptions>>;
    constructor(stream: Duplex, options?: SSHAgentProtocolOptions);
    getPublicKeys(): Promise<[
        string,
        PublicKey
    ][]>;
    getPublicKey(id: string): Promise<PublicKey>;
    sign(id: string, data: Buffer, algorithm?: string): Promise<EncodedSignature>;
    addIdentity(privateKey: PrivateKey, options?: SSHAgentAddIdentityOptions): Promise<void>;
    addToken(tokenId: string | Buffer, pin?: string | Buffer, options?: SSHAgentAddTokenOptions): Promise<void>;
    removeIdentity(publicKey: PublicKey): Promise<void>;
    removeAllIdentities(): Promise<void>;
    removeToken(tokenId: string, pin?: string | Buffer): Promise<void>;
    lock(passphrase: string | Buffer): Promise<void>;
    unlock(passphrase: string | Buffer): Promise<void>;
    extension(type: string, contents?: Buffer): Promise<SSHAgentExtensionResult>;
    queryExtensions(): Promise<readonly string[]>;
    opensshSessionBind(binding: OpenSSHAgentSessionBinding): Promise<void>;
    /**
     * Drain operations already queued, stop accepting requests, and await stream closure.
     */
    close(): Promise<void>;
    [Symbol.asyncDispose](): Promise<void>;
    destroy(error?: Error): void;
}

SSHAgentProtocolConnectionContext

Interface. Declared in src/publickey/SSHAgentProtocol.ts.

export interface SSHAgentProtocolConnectionContext {
    /** The stream supplied to serve(); use object identity to associate application state. */
    readonly stream: Duplex;
    /** True after any session-bind request, including a malformed or refused one. */
    readonly sessionBindAttempted: boolean;
    /** Accepted bindings in forwarding-path order. */
    readonly sessionBindings: readonly OpenSSHAgentSessionBinding[];
    /** Aborted when this served stream closes or its request deadline expires. */
    readonly signal: AbortSignal;
}

SSHAgentProtocolError

Class. Declared in src/publickey/SSHAgentProtocol.ts.

export declare class SSHAgentProtocolError extends AgentError {
    name: string;
}

SSHAgentProtocolOptions

Interface. Declared in src/publickey/SSHAgentProtocol.ts.

export interface SSHAgentProtocolOptions {
    /** Maximum payload length accepted from the peer. */
    maxMessageLength?: number;
    /** Maximum milliseconds for a client request. Zero disables the deadline. */
    requestTimeout?: number;
}

SSHAgentProtocolServer

Class. Declared in src/publickey/SSHAgentProtocol.ts.

/** An awaited, deny-by-default agent protocol endpoint for a Duplex stream. */
export declare class SSHAgentProtocolServer {
    readonly hooker: Hooker<SSHAgentServerHooker>;
    readonly options: Readonly<Required<SSHAgentProtocolServerOptions>>;
    constructor(options?: SSHAgentProtocolServerOptions);
    get locked(): boolean;
    serve(stream: Duplex): Promise<void>;
}

SSHAgentProtocolServerOptions

Interface. Declared in src/publickey/SSHAgentProtocol.ts.

export interface SSHAgentProtocolServerOptions {
    /** Maximum payload length accepted from the peer or returned by policy. */
    maxMessageLength?: number;
    /** Maximum milliseconds for queueing, awaited policy, and response writes. */
    requestTimeout?: number;
}

SSHAgentServerAddIdentityContext

Type. Declared in src/publickey/SSHAgentProtocol.ts.

export type SSHAgentServerAddIdentityContext = Readonly<{
    privateKey: PrivateKey;
    comment: string;
    constraints: readonly SSHAgentConstraint[];
}>;

SSHAgentServerAddTokenContext

Type. Declared in src/publickey/SSHAgentProtocol.ts.

export type SSHAgentServerAddTokenContext = Readonly<{
    /** Opaque token identifier copied from the request. */
    tokenId: Buffer;
    /** Ephemeral PIN bytes. Do not retain this buffer after the hook returns. */
    pin: Buffer;
    constraints: readonly SSHAgentConstraint[];
}>;

SSHAgentServerExtensionContext

Type. Declared in src/publickey/SSHAgentProtocol.ts.

export type SSHAgentServerExtensionContext = Readonly<{
    type: string;
    contents: Buffer;
}>;

SSHAgentServerExtensionController

Interface. Declared in src/publickey/SSHAgentProtocol.ts.

export interface SSHAgentServerExtensionController {
    /** Undefined means the extension is unsupported and returns SSH_AGENT_FAILURE. */
    result: SSHAgentServerExtensionResult | undefined;
}

SSHAgentServerExtensionResult

Type. Declared in src/publickey/SSHAgentProtocol.ts.

export type SSHAgentServerExtensionResult = SSHAgentExtensionResult | Readonly<{
    kind: "failure";
}>;

SSHAgentServerHooker

Type. Declared in src/publickey/SSHAgentProtocol.ts.

export type SSHAgentServerHooker = {
    identities: [
        controller: SSHAgentServerIdentitiesController,
        connection: SSHAgentProtocolConnectionContext
    ];
    sign: [
        context: SSHAgentServerSignContext,
        controller: SSHAgentServerSignController,
        connection: SSHAgentProtocolConnectionContext
    ];
    addIdentity: [
        context: SSHAgentServerAddIdentityContext,
        controller: SSHAgentServerSuccessController,
        connection: SSHAgentProtocolConnectionContext
    ];
    addToken: [
        context: SSHAgentServerAddTokenContext,
        controller: SSHAgentServerSuccessController,
        connection: SSHAgentProtocolConnectionContext
    ];
    removeIdentity: [
        context: SSHAgentServerRemoveIdentityContext,
        controller: SSHAgentServerSuccessController,
        connection: SSHAgentProtocolConnectionContext
    ];
    removeAllIdentities: [
        controller: SSHAgentServerSuccessController,
        connection: SSHAgentProtocolConnectionContext
    ];
    removeToken: [
        context: SSHAgentServerRemoveTokenContext,
        controller: SSHAgentServerSuccessController,
        connection: SSHAgentProtocolConnectionContext
    ];
    lock: [
        context: SSHAgentServerPassphraseContext,
        controller: SSHAgentServerSuccessController,
        connection: SSHAgentProtocolConnectionContext
    ];
    unlock: [
        context: SSHAgentServerPassphraseContext,
        controller: SSHAgentServerSuccessController,
        connection: SSHAgentProtocolConnectionContext
    ];
    extension: [
        context: SSHAgentServerExtensionContext,
        controller: SSHAgentServerExtensionController,
        connection: SSHAgentProtocolConnectionContext
    ];
    queryExtensions: [
        controller: SSHAgentServerQueryExtensionsController,
        connection: SSHAgentProtocolConnectionContext
    ];
    sessionBind: [
        binding: OpenSSHAgentSessionBinding,
        controller: SSHAgentServerSuccessController,
        connection: SSHAgentProtocolConnectionContext
    ];
};

SSHAgentServerIdentitiesController

Interface. Declared in src/publickey/SSHAgentProtocol.ts.

export interface SSHAgentServerIdentitiesController {
    /** Leave undefined to deny the request with SSH_AGENT_FAILURE. */
    identities: readonly Readonly<SSHAgentIdentity>[] | undefined;
}

SSHAgentServerPassphraseContext

Type. Declared in src/publickey/SSHAgentProtocol.ts.

export type SSHAgentServerPassphraseContext = Readonly<{
    /** Ephemeral passphrase bytes. Do not retain this buffer after the hook returns. */
    passphrase: Buffer;
}>;

SSHAgentServerQueryExtensionsController

Interface. Declared in src/publickey/SSHAgentProtocol.ts.

export interface SSHAgentServerQueryExtensionsController {
    /** Undefined means the query extension is unsupported. */
    extensions: readonly string[] | undefined;
}

SSHAgentServerRemoveIdentityContext

Type. Declared in src/publickey/SSHAgentProtocol.ts.

export type SSHAgentServerRemoveIdentityContext = Readonly<{
    publicKey: PublicKey;
}>;

SSHAgentServerRemoveTokenContext

Type. Declared in src/publickey/SSHAgentProtocol.ts.

export type SSHAgentServerRemoveTokenContext = Readonly<{
    tokenId: string;
    /** Ephemeral UTF-8 PIN bytes. Do not retain this buffer after the hook returns. */
    pin: Buffer;
}>;

SSHAgentServerSignContext

Type. Declared in src/publickey/SSHAgentProtocol.ts.

export type SSHAgentServerSignContext = Readonly<{
    publicKey: PublicKey;
    data: Buffer;
    /** Exact signature algorithm requested by the agent protocol flags. */
    algorithm: string;
    flags: number;
}>;

SSHAgentServerSignController

Interface. Declared in src/publickey/SSHAgentProtocol.ts.

export interface SSHAgentServerSignController {
    /** Leave undefined to deny the request with SSH_AGENT_FAILURE. */
    signature: EncodedSignature | undefined;
}

SSHAgentServerSuccessController

Interface. Declared in src/publickey/SSHAgentProtocol.ts.

export interface SSHAgentServerSuccessController {
    /** Set to true to accept the request. Undefined and false deny it. */
    success: boolean | undefined;
}

SSHSocketAgentOptions

Interface. Declared in src/publickey/SSHAgent.ts.

export interface SSHSocketAgentOptions {
    /** Maximum socket inactivity in milliseconds while connecting or exchanging a request. */
    timeout?: number;
}