Skip to content
This repository has been archived by the owner on Jan 1, 2025. It is now read-only.

Commit

Permalink
fix: update indexdb readme
Browse files Browse the repository at this point in the history
  • Loading branch information
chereseeriepa committed Jul 24, 2024
1 parent c376bfa commit cf45c15
Showing 1 changed file with 66 additions and 20 deletions.
86 changes: 66 additions & 20 deletions packages/indexdb/README.md
Original file line number Diff line number Diff line change
@@ -1,28 +1,74 @@
# @pluto-encrypted/indexdb
This package contains a RXDB compatible wrapper over IndexDB and can be used as database engine inside @pluto-encrypted package with secure database encryption.

### Documentation
[@Pluto-encrypted REFERENCE](https://github.com/elribonazo/pluto-encrypted/blob/master/docs/README.md)
## Overview

### How to use
`@pluto-encrypted/indexdb` is a package that provides secure, encrypted interactions with the IndexedDB database. By leveraging encryption for data at rest and during transactions, this package ensures data integrity and confidentiality, making it ideal for applications that demand enhanced data security.

Creating a IndexDB compatible storage is very simple.
This package includes `@pluto-encrypted/encryption`, which serves as an RxDB wrapper over IndexedDB. This integration allows developers to easily incorporate encrypted storage solutions within their RxDB-based applications, providing seamless and robust data protection.

## Installation

To install the `@pluto-encrypted/indexdb` package, use npm or yarn:

```bash
npm install @pluto-encrypted/indexdb
```

or

```bash
yarn add @pluto-encrypted/indexdb
```

## Usage

### Initialization

The `@pluto-encrypted/indexdb` package leverages `rxdb` and the `wrappedKeyEncryptionStorage` method from `@pluto-encrypted/encryption` to provide a secure storage solution. Below is the main export for the package:

```javascript
import { wrappedKeyEncryptionStorage } from '@pluto-encrypted/encryption';
import { type RxStorage } from 'rxdb';
import { getRxStorageDexie } from 'rxdb/plugins/storage-dexie';

const storage: RxStorage<any, any> = wrappedKeyEncryptionStorage({
storage: getRxStorageDexie()
});

export default storage;
```

### Using with Atala Prism Wallet SDK

Here is a practical example of how to integrate `@pluto-encrypted/indexdb` with the Atala Prism Wallet SDK:

```typescript
import IndexDB from "@pluto-encrypted/indexdb";
import { Database } from "@pluto-encrypted/database";
//default password must be 32 bytes long
const defaultPassword = new Uint8Array(32).fill(1);
const database = db = await Database.createEncrypted(
{
name: `my-db`,
encryptionKey: defaultPassword,
storage: IndexDB,
}
);
import { Agent, Domain, Store, Apollo, Pluto } from '@atala/prism-wallet-sdk'
import IndexDB from '@pluto-encrypted/indexdb'

const mediatorDIDString = 'your-mediator-did-string'; // Replace with your actual mediator DID string
const mediatorDID = Domain.DID.fromString(mediatorDIDString);
const store = new Store({
name: 'my-app-db',
storage: IndexDB,
password: 'something secure 1235!' // Use a secure password
});
const apollo = new Apollo();
const pluto = new Pluto(store, apollo);

const agent = Agent.initialize({ mediatorDID, pluto, apollo });
```

## QA & Documentation
| Statements | Branches | Functions | Lines |
| --------------------------- | ----------------------- | ------------------------- | ----------------- |
| ![Statements](https://img.shields.io/badge/statements-100%25-brightgreen.svg?style=flat) | ![Branches](https://img.shields.io/badge/branches-100%25-brightgreen.svg?style=flat) | ![Functions](https://img.shields.io/badge/functions-100%25-brightgreen.svg?style=flat) | ![Lines](https://img.shields.io/badge/lines-100%25-brightgreen.svg?style=flat) |
## Contributing

We welcome contributions! Please read our [Contributing Guide](https://github.com/atala-community-projects/pluto-encrypted/blob/master/CONTRIBUTING.md) for details on our code of conduct and the process for submitting pull requests.

## License

This project is licensed under the Apache License, Version 2.0. See [LICENCE](https://github.com/atala-community-projects/pluto-encrypted/blob/master/LICENSE) file for the full terms and conditions.

## Support

If you have any questions or need help, feel free to open an issue on our [GitHub repository](https://github.com/atala-community-projects/pluto-encrypted/issues).

---

0 comments on commit cf45c15

Please sign in to comment.