Skip to main content

OpenSecretContextType

@opensecret/react


@opensecret/react / OpenSecretContextType

Type Alias: OpenSecretContextType

OpenSecretContextType = object

Properties​

aiCustomFetch()​

aiCustomFetch: (url, init?) => Promise<Response>

Custom fetch function for AI requests that handles encryption and token refreshing.

Meant to be used with the OpenAI JS library

Example:

const openai = new OpenAI({
baseURL: `${os.apiUrl}/v1/`,
dangerouslyAllowBrowser: true,
apiKey: "the-api-key-doesnt-matter",
defaultHeaders: {
"Accept-Encoding": "identity"
},
fetch: os.aiCustomFetch
});

Parameters​

url​

RequestInfo

init?​

RequestInit

Returns​

Promise<Response>


apiUrl​

apiUrl: string

Returns the current OpenSecret enclave API URL being used

Returns​

The current API URL


auth​

auth: OpenSecretAuthState


authenticate​

authenticate: typeof authenticate

Authenticates an attestation document


awsRootCertDer​

awsRootCertDer: typeof AWS_ROOT_CERT_DER

AWS root certificate in DER format


changePassword​

changePassword: typeof api.changePassword


clientId​

clientId: string

The client ID for this project/tenant

Description​

A UUID that identifies which project/tenant this instance belongs to


confirmPasswordReset()​

confirmPasswordReset: (email, alphanumericCode, plaintextSecret, newPassword) => Promise<void>

Parameters​

email​

string

alphanumericCode​

string

plaintextSecret​

string

newPassword​

string

Returns​

Promise<void>


decryptData​

decryptData: typeof api.decryptData

Decrypts data that was previously encrypted with the user's key

Param​

Base64-encoded encrypted data string

Param​

Optional key derivation options or legacy BIP32 derivation path string

Returns​

A promise resolving to the decrypted string

Throws​

If:

  • The encrypted data is malformed
  • The derivation paths are invalid
  • Authentication fails
  • Server-side decryption error occurs

Description​

This function supports multiple decryption approaches:

  1. Decrypt with master key (no derivation parameters)

  2. Decrypt with BIP-32 derived key

    • Derives a child key from the master seed using BIP-32
  3. Decrypt with BIP-85 derived key

    • Derives a child mnemonic using BIP-85, then uses its master key
  4. Decrypt with combined BIP-85 and BIP-32 derivation

    • First derives a child mnemonic via BIP-85
    • Then applies BIP-32 derivation to derive a key from that seed

IMPORTANT: You must use the exact same derivation options for decryption that were used for encryption.


del​

del: typeof api.fetchDelete

Deletes a key-value pair from the user's storage

Param​

The unique identifier for the value to be deleted

Returns​

A promise resolving when the deletion is complete

Throws​

If the key cannot be deleted

Description​

  • Calls the authenticated API endpoint to remove a specific key
  • Requires an active authentication session
  • Throws an error if the deletion fails (including for non-existent keys)
  • Propagates any server-side errors directly

encryptData​

encryptData: typeof api.encryptData

Encrypts arbitrary string data using the user's private key

Param​

String content to be encrypted

Param​

Optional key derivation options or legacy BIP32 derivation path string

Returns​

A promise resolving to the encrypted data response

Throws​

If:

  • The derivation paths are invalid
  • Authentication fails
  • Server-side encryption error occurs

Description​

This function supports multiple encryption approaches:

  1. Encrypt with master key (no derivation parameters)

  2. Encrypt with BIP-32 derived key

    • Derives a child key from the master seed using BIP-32
    • Example: m/44'/0'/0'/0/0
  3. Encrypt with BIP-85 derived key

    • Derives a child mnemonic using BIP-85, then uses its master key
    • Example with derivation path (formatted as code): { seed_phrase_derivation_path: "m/83696968'/39'/0'/12'/0'" }
  4. Encrypt with combined BIP-85 and BIP-32 derivation

    • First derives a child mnemonic via BIP-85
    • Then applies BIP-32 derivation to derive a key from that seed
    • Example (formatted as code):
      {
      seed_phrase_derivation_path: "m/83696968'/39'/0'/12'/0'",
      private_key_derivation_path: "m/44'/0'/0'/0/0"
      }

Technical details:

  • Encrypts data with AES-256-GCM
  • A random nonce is generated for each encryption operation (included in the result)
  • The encrypted_data format includes the nonce and is base64-encoded

expectedRootCertHash​

expectedRootCertHash: typeof EXPECTED_ROOT_CERT_HASH

Expected hash of the AWS root certificate


generateThirdPartyToken()​

generateThirdPartyToken: (audience?) => Promise<ThirdPartyTokenResponse>

Generates a JWT token for use with third-party services

Parameters​

audience?​

string

Optional URL of the service (e.g. "https://billing.opensecret.cloud")

Returns​

Promise<ThirdPartyTokenResponse>

A promise resolving to the token response

Throws​

If:

  • The user is not authenticated
  • The audience URL is invalid (if provided)

Description​

  • Generates a signed JWT token for use with third-party services
  • If audience is provided, it can be any valid URL
  • If audience is omitted, a token with no audience restriction will be generated
  • Requires an active authentication session
  • Token can be used to authenticate with the specified service

get​

get: typeof api.fetchGet

Retrieves a value from key-value storage

Param​

The unique identifier for the stored value

Returns​

A promise resolving to the stored value

Throws​

If the key cannot be retrieved

Description​

  • Calls the authenticated API endpoint to fetch a value
  • Returns undefined if the key does not exist
  • Requires an active authentication session
  • Logs any retrieval errors

getAttestation​

getAttestation: typeof getAttestation

Gets attestation from the enclave


getAttestationDocument()​

getAttestationDocument: () => Promise<ParsedAttestationView>

Gets and verifies an attestation document from the enclave

Returns​

Promise<ParsedAttestationView>

A promise resolving to the parsed attestation document

Throws​

If attestation fails or is invalid

Description​

This is a convenience function that:

  1. Fetches the attestation document with a random nonce
  2. Authenticates the document
  3. Parses it for viewing

getPrivateKey​

getPrivateKey: typeof api.fetchPrivateKey

Retrieves the user's private key mnemonic phrase

Param​

Optional key derivation options

Returns​

A promise resolving to the private key response

Throws​

If the private key cannot be retrieved

Description​

This function supports two modes:

  1. Master mnemonic (no parameters)

    • Returns the user's master 12-word BIP39 mnemonic
  2. BIP-85 derived mnemonic

    • Derives a child mnemonic using BIP-85
    • Requires seed_phrase_derivation_path in options
    • Example: "m/83696968'/39'/0'/12'/0'"

getPrivateKeyBytes​

getPrivateKeyBytes: typeof api.fetchPrivateKeyBytes

Retrieves the private key bytes for the given derivation options

Param​

Optional key derivation options or legacy BIP32 derivation path string

Returns​

A promise resolving to the private key bytes response

Throws​

If:

  • The private key bytes cannot be retrieved
  • The derivation paths are invalid

Description​

This function supports multiple derivation approaches:

  1. Master key only (no parameters)

    • Returns the master private key bytes
  2. BIP-32 derivation only

    • Uses a single derivation path to derive a child key from the master seed
    • Supports both absolute and relative paths with hardened derivation:
      • Absolute path: "m/44'/0'/0'/0/0"
      • Relative path: "0'/0'/0'/0/0"
      • Hardened notation: "44'" or "44h"
    • Common paths:
      • BIP44 (Legacy): m/44'/0'/0'/0/0
      • BIP49 (SegWit): m/49'/0'/0'/0/0
      • BIP84 (Native SegWit): m/84'/0'/0'/0/0
      • BIP86 (Taproot): m/86'/0'/0'/0/0
  3. BIP-85 derivation only

    • Derives a child mnemonic from the master seed using BIP-85
    • Then returns the master private key of that derived seed
    • Example path: "m/83696968'/39'/0'/12'/0'"
  4. Combined BIP-85 and BIP-32 derivation

    • First derives a child mnemonic via BIP-85
    • Then applies BIP-32 derivation to that derived seed

getPublicKey​

getPublicKey: typeof api.fetchPublicKey

Retrieves the user's public key for the specified algorithm

Param​

The signing algorithm ('schnorr' or 'ecdsa')

Param​

Optional key derivation options or legacy BIP32 derivation path string

Returns​

A promise resolving to the public key response

Throws​

If the public key cannot be retrieved

Description​

The derivation paths determine which key is used to generate the public key:

  1. Master key (no derivation parameters)

    • Returns the public key corresponding to the master private key
  2. BIP-32 derived key

    • Returns the public key for a derived child key
  3. BIP-85 derived key

    • Returns the public key for the master key of a BIP-85 derived seed
  4. Combined BIP-85 and BIP-32 derivation

    • First derives a child mnemonic via BIP-85
    • Then applies BIP-32 derivation to get the corresponding public key

handleGitHubCallback()​

handleGitHubCallback: (code, state, inviteCode) => Promise<void>

Parameters​

code​

string

state​

string

inviteCode​

string

Returns​

Promise<void>


handleGoogleCallback()​

handleGoogleCallback: (code, state, inviteCode) => Promise<void>

Parameters​

code​

string

state​

string

inviteCode​

string

Returns​

Promise<void>


initiateGitHubAuth()​

initiateGitHubAuth: (inviteCode) => Promise<GithubAuthResponse>

Parameters​

inviteCode​

string

Returns​

Promise<GithubAuthResponse>


initiateGoogleAuth()​

initiateGoogleAuth: (inviteCode) => Promise<GoogleAuthResponse>

Parameters​

inviteCode​

string

Returns​

Promise<GoogleAuthResponse>


list​

list: typeof api.fetchList

Retrieves all key-value pairs stored by the user

Returns​

A promise resolving to an array of stored items

Throws​

If the list cannot be retrieved

Description​

  • Calls the authenticated API endpoint to fetch all stored items
  • Returns an array of key-value pairs with metadata
  • Requires an active authentication session
  • Each item includes key, value, creation, and update timestamps
  • Logs any listing errors

parseAttestationForView()​

parseAttestationForView: (document, cabundle, pcrConfig?) => Promise<ParsedAttestationView>

Parses an attestation document for viewing

Parameters​

document​

AttestationDocument

cabundle​

Uint8Array[]

pcrConfig?​

PcrConfig

Returns​

Promise<ParsedAttestationView>


pcrConfig​

pcrConfig: PcrConfig

Additional PCR0 hashes to validate against


put​

put: typeof api.fetchPut

Stores a key-value pair in the user's storage

Param​

The unique identifier for the value

Param​

The string value to be stored

Returns​

A promise resolving to the server's response

Throws​

If the value cannot be stored

Description​

  • Calls the authenticated API endpoint to store a value
  • Requires an active authentication session
  • Overwrites any existing value for the given key
  • Logs any storage errors

refetchUser()​

refetchUser: () => Promise<void>

Returns​

Promise<void>


refreshAccessToken​

refreshAccessToken: typeof api.refreshToken


requestNewVerificationCode​

requestNewVerificationCode: typeof api.requestNewVerificationCode


requestNewVerificationEmail​

requestNewVerificationEmail: typeof api.requestNewVerificationCode


requestPasswordReset()​

requestPasswordReset: (email, hashedSecret) => Promise<void>

Parameters​

email​

string

hashedSecret​

string

Returns​

Promise<void>


signIn()​

signIn: (email, password) => Promise<void>

Authenticates a user with email and password

Parameters​

email​

string

User's email address

password​

string

User's password

Returns​

Promise<void>

A promise that resolves when authentication is complete

Throws​

If login fails

Description​

  • Calls the login API endpoint with the configured clientId
  • Stores access_token and refresh_token in localStorage
  • Updates the auth state with user information
  • Throws an error if authentication fails

signInGuest()​

signInGuest: (id, password) => Promise<void>

Authenticates a guest user with user id and password

Parameters​

id​

string

User's unique id

password​

string

User's password

Returns​

Promise<void>

A promise that resolves when authentication is complete

Throws​

If login fails

Description​

  • Calls the login API endpoint
  • Stores access_token and refresh_token in localStorage
  • Updates the auth state with user information
  • Throws an error if authentication fails

signMessage​

signMessage: typeof api.signMessage

Signs a message using the specified algorithm

Param​

The message to sign as a Uint8Array

Param​

The signing algorithm ('schnorr' or 'ecdsa')

Param​

Optional key derivation options or legacy BIP32 derivation path string

Returns​

A promise resolving to the signature response

Throws​

If the message signing fails

Description​

This function supports multiple signing approaches:

  1. Sign with master key (no derivation parameters)

  2. Sign with BIP-32 derived key

    • Derives a child key from the master seed using BIP-32
  3. Sign with BIP-85 derived key

    • Derives a child mnemonic using BIP-85, then uses its master key
  4. Sign with combined BIP-85 and BIP-32 derivation

    • First derives a child mnemonic via BIP-85
    • Then applies BIP-32 derivation to derive a key from that seed

signOut()​

signOut: () => Promise<void>

Logs out the current user

Returns​

Promise<void>

A promise that resolves when logout is complete

Throws​

If logout fails

Description​

  • Calls the logout API endpoint with the current refresh_token
  • Removes access_token, refresh_token from localStorage
  • Removes session-related items from sessionStorage
  • Resets the auth state to show no user is authenticated

signUp()​

signUp: (email, password, inviteCode, name?) => Promise<void>

Creates a new user account

Parameters​

email​

string

User's email address

password​

string

User's chosen password

inviteCode​

string

Invitation code for registration

name?​

string

Optional user's full name

Returns​

Promise<void>

A promise that resolves when account creation is complete

Throws​

If signup fails

Description​

  • Calls the registration API endpoint
  • Stores access_token and refresh_token in localStorage
  • Updates the auth state with new user information
  • Throws an error if account creation fails

signUpGuest()​

signUpGuest: (password, inviteCode) => Promise<LoginResponse>

Creates a new long-lived guest account with no email recovery.

Parameters​

password​

string

User's chosen password. It can be changed while authenticated, but it cannot be recovered via email unless an email address is later added to the account.

inviteCode​

string

Invitation code for registration

Returns​

Promise<LoginResponse>

A promise that resolves to the login response containing the guest ID

Throws​

If signup fails

Description​

  • Calls the registration API endpoint
  • Stores access_token and refresh_token in localStorage
  • Updates the auth state with new user information
  • Throws an error if account creation fails

verifyEmail​

verifyEmail: typeof api.verifyEmail