Interface Keystore

A Keystore is responsible for holding the user's XMTP private keys and using them to encrypt/decrypt/sign messages. Keystores are instantiated using a KeystoreProvider

Use KeystoreInterface instead

interface Keystore {
    createAuthToken(req: CreateAuthTokenRequest): Promise<Token>;
    createInvite(req: CreateInviteRequest): Promise<CreateInviteResponse>;
    decryptV1(req: DecryptV1Request): Promise<DecryptResponse>;
    decryptV2(req: DecryptV2Request): Promise<DecryptResponse>;
    encryptV1(req: EncryptV1Request): Promise<EncryptResponse>;
    encryptV2(req: EncryptV2Request): Promise<EncryptResponse>;
    getAccountAddress(): Promise<string>;
    getPrivateKeyBundle(): Promise<PrivateKeyBundleV1>;
    getPrivatePreferencesTopicIdentifier(): Promise<GetPrivatePreferencesTopicIdentifierResponse>;
    getPublicKeyBundle(): Promise<PublicKeyBundle>;
    getRefreshJob(req: GetRefreshJobRequest): Promise<GetRefreshJobResponse>;
    getV1Conversations(): Promise<GetConversationsResponse>;
    getV2ConversationHmacKeys(): Promise<GetConversationHmacKeysResponse>;
    getV2Conversations(): Promise<GetConversationsResponse>;
    saveInvites(req: SaveInvitesRequest): Promise<SaveInvitesResponse>;
    saveV1Conversations(req: SaveV1ConversationsRequest): Promise<SaveV1ConversationsResponse>;
    selfDecrypt(req: SelfDecryptRequest): Promise<DecryptResponse>;
    selfEncrypt(req: SelfEncryptRequest): Promise<SelfEncryptResponse>;
    setRefreshJob(req: SetRefeshJobRequest): Promise<SetRefreshJobResponse>;
    signDigest(req: SignDigestRequest): Promise<Signature>;
}

Methods

  • Create an XMTP auth token to be used as a header on XMTP API requests

    Parameters

    • req: CreateAuthTokenRequest

    Returns Promise<Token>

  • Create a sealed/encrypted invite and store the Topic keys in the Keystore for later use. The returned invite payload must be sent to the network for the other party to be able to communicate.

    Parameters

    • req: CreateInviteRequest

    Returns Promise<CreateInviteResponse>

  • Export the private keys. May throw an error if the keystore implementation does not allow this operation

    Returns Promise<PrivateKeyBundleV1>

  • Get the private preferences topic identifier

    Returns Promise<GetPrivatePreferencesTopicIdentifierResponse>

  • Get a refresh job from the persistence

    Parameters

    • req: GetRefreshJobRequest

    Returns Promise<GetRefreshJobResponse>

  • Returns the conversation HMAC keys for the current, previous, and next 30 day periods since the epoch

    Returns Promise<GetConversationHmacKeysResponse>

  • Take a batch of invite messages and store the TopicKeys for later use in decrypting messages

    Parameters

    • req: SaveInvitesRequest

    Returns Promise<SaveInvitesResponse>

  • Save V1 Conversations

    Parameters

    • req: SaveV1ConversationsRequest

    Returns Promise<SaveV1ConversationsResponse>

  • Encrypt a batch of messages to yourself

    Parameters

    • req: SelfEncryptRequest

    Returns Promise<SelfEncryptResponse>

  • Sets the time of a refresh job

    Parameters

    • req: SetRefeshJobRequest

    Returns Promise<SetRefreshJobResponse>

  • Sign the provided digest with either the IdentityKey or a specified PreKey

    Parameters

    • req: SignDigestRequest

    Returns Promise<Signature>