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 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>

  • 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>