SecureStorage Module


Version SecureStorage 1.2.0

Table of Contents

Usage

To use the SecureStorage module, you can import it into your project from the Firebolt SDK:

import { SecureStorage } from '@firebolt-js/manage-sdk'

Overview

A module for storing and retrieving secure data owned by the app

Methods

clearForApp

Clears all the secure data values for a specific app

function clearForApp(appId: string, scope: StorageScope): Promise<void>

Parameters:

Param Type Required Description
appId string true appId for which values are removed
scope StorageScope true The scope of the key/value
values: 'device' \| 'account'

Promise resolution:

Capabilities:

Role Capability
manages xrn:firebolt:capability:storage:secure

Examples

Clears all the secure data values for appId foo

JavaScript:

import { SecureStorage } from '@firebolt-js/manage-sdk'

let success = await SecureStorage.clearForApp('foo', 'account')
console.log(success)

Value of success:

null
JSON-RPC:

Request:

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "SecureStorage.clearForApp",
  "params": {
    "appId": "foo",
    "scope": "account"
  }
}

Response:

{
  "jsonrpc": "2.0",
  "id": 1,
  "result": null
}

removeForApp

Removes single data value for a specific app.

function removeForApp(
  appId: string,
  scope: StorageScope,
  key: string,
): Promise<void>

Parameters:

Param Type Required Description
appId string true appId for which values are removed
scope StorageScope true The scope of the key/value
values: 'device' \| 'account'
key string true Key to remove

Promise resolution:

Capabilities:

Role Capability
manages xrn:firebolt:capability:storage:secure

Examples

Removes authRefreshToken for appId foo

JavaScript:

import { SecureStorage } from '@firebolt-js/manage-sdk'

let success = await SecureStorage.removeForApp(
  'foo',
  'account',
  'authRefreshToken',
)
console.log(success)

Value of success:

null
JSON-RPC:

Request:

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "SecureStorage.removeForApp",
  "params": {
    "appId": "foo",
    "scope": "account",
    "key": "authRefreshToken"
  }
}

Response:

{
  "jsonrpc": "2.0",
  "id": 1,
  "result": null
}

setForApp

Set or update a secure data value for a specific app.

function setForApp(
  appId: string,
  scope: StorageScope,
  key: string,
  value: string,
  options: StorageOptions,
): Promise<void>

Parameters:

Param Type Required Description
appId string true appId for which value is being set
scope StorageScope true The scope of the data key
values: 'device' \| 'account'
key string true Key to set
value string true Value to set
options StorageOptions false Optional parameters to set

Promise resolution:

Capabilities:

Role Capability
manages xrn:firebolt:capability:storage:secure

Examples

Set a refresh token with name authRefreshToken with optional parameter for appId foo

JavaScript:

import { SecureStorage } from '@firebolt-js/manage-sdk'

let success = await SecureStorage.setForApp(
  'foo',
  'device',
  'authRefreshToken',
  'VGhpcyBub3QgYSByZWFsIHRva2VuLgo=',
  {
    ttl: 600,
  },
)
console.log(success)

Value of success:

null
JSON-RPC:

Request:

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "SecureStorage.setForApp",
  "params": {
    "appId": "foo",
    "scope": "device",
    "key": "authRefreshToken",
    "value": "VGhpcyBub3QgYSByZWFsIHRva2VuLgo=",
    "options": {
      "ttl": 600
    }
  }
}

Response:

{
  "jsonrpc": "2.0",
  "id": 1,
  "result": null
}

Set a refresh token with name authRefreshToken without optional parameter for appId foo

JavaScript:

import { SecureStorage } from '@firebolt-js/manage-sdk'

let success = await SecureStorage.setForApp(
  'foo',
  'account',
  'authRefreshToken',
  'VGhpcyBub3QgYSByZWFsIHRva2VuLgo=',
  null,
)
console.log(success)

Value of success:

null
JSON-RPC:

Request:

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "SecureStorage.setForApp",
  "params": {
    "appId": "foo",
    "scope": "account",
    "key": "authRefreshToken",
    "value": "VGhpcyBub3QgYSByZWFsIHRva2VuLgo="
  }
}

Response:

{
  "jsonrpc": "2.0",
  "id": 1,
  "result": null
}

Types

StorageScope

The scope of the data

StorageScope: {
    DEVICE: 'device',
    ACCOUNT: 'account',
},


StorageOptions

type StorageOptions = {
  ttl: number // Seconds from set time before the data expires and is removed
}