Skip to content
View selfguard's full-sized avatar

Block or report selfguard

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Please don't include any personal information such as legal names or email addresses. Maximum 100 characters, markdown supported. This note will be visible to only you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
selfguard/README.md

SelfGuard

Universal API For Encryption

SelfGuard provides encryption APIs and tooling to allow web2/3 developers to build enhanced and secure UI/UX. These include Encrypted Notifications, File Storage, Custodianship, and Payments.

Contact [email protected] with any questions.

Get your API-Key at https://selfguard.xyz

View the Full Docs

Installation

npm install selfguard-client

Usage

Import SelfGuard-Client

import SelfGuard from 'selfguard-client';

Instantiation

There are three main ways to instantiate SelfGuard.

Without Asymmetric Encryption

This instantiates SelfGuard such that data with SelfGuard can be decrypted with this API-KEY.

let sg = new SelfGuard(API_KEY);

With Asymmetric Encryption (Key Pair)

This instantiates SelfGuard such that data encrypted with SelfGuard can only be decrypted by the user with the respective public/private key pair.

let sg = new SelfGuard(API_KEY, key_pair_type, public_key, private_key);

With Asymmetric Encryption (Metamask)

This instantiates SelfGuard such that data encrypted with SelfGuard can only be decrypted by the end user's metamask's account.

let sg = new SelfGuard(API_KEY, 'metamask');

Key Pair

Generate Public Private Key Pair

Allows you to create an RSA or ECSDA key pair.

let key_pair = sg.createKeyPair('rsa' || 'ecdsa');

Upload Key Pair

Allows you to save this key pair with SelfGuard, encrypted with a password

await sg.uploadKeyPair(key_pair,'password');

Get Key Pairs

Allows you to retrieve all encrypted key pairs stored with this account

await sg.getKeyPairs();

Encryption

Encrypt:

Allows you to encrypt any piece of data and receive the respective encryption key id (the encryption key is stored with SelfGuard) and the encrypted text.

await sg.encrypt( 'This is some super top secret text!')

Decrypt:

Allows you to decrypt previously encrypted data by providing the encrypted text and the encryption key id respective to the encrypted data.

await sg.decrypt(encrypted_text, encryption_key_id)

Encrypt With Password

Allows you to encrypt any piece of data with a password.

sg.encryptWithPassword( 'This is some super top secret text!','password')

Decrypt With Password:

Allows you to decrypt encrypted data with the respective password.

sg.decryptWithPassword(ciphertext, 'password')

File Storage

Used for storing encrypted files onto decentralized storage protocols like IPFS.

Upload/Encrypt File

await sg.encryptFile(file,(err,progress) => {
	console.log(progress);
});

Decrypt File

await sg.decryptFile(id,(err,progress) => {
	console.log(progress);
});

Get List of Files

await sg.getFiles();

Data Tokenization

Tokenize:

Allows you to encrypt data and store the encrypted data with SelfGuard itself.

await sg.tokenize( 'This is some super top secret text!');

Detokenize:

Allows you to retrieve the previously tokenized data by providing the respective token id.

let data = await sg.detokenize(token_id)

Encrypted Key/Value Storage

Put:

Allows you to store any key value data where the value is encrypted.

await sg.put('key','value');

Get:

Allows you to retrieve key value data where the value is decrypted upon retrieval

await sg.get('key');

Get Keys

Allows you to get all the keys (amongst all the key-value objects) stored with this account

await sg.getKeys();

Notifications

Used to send texts or emails to addresses who's email and phone number are stored using the encrypted key/value storage.

React Component For Notifications

Add Package

npm install selfguard-react-components

Implement Component

import { NotificationsButton } from  'selfguard-react-components';
return (
	<NotificationsButton
    api_key={api_key} 
    notification_group={notification_group} 
    user_address={user_address}
    background={background}
    size={size}
    color={color}
    onDisabled={onDisabled}
    onEnabled={onEnabled}
/>
)

Update Profile

await sg.updateProfile({user_address, value, notification_group});

Send SMS

await sg.sendSMS({user_address,notification_group,text});

Send Email

await sg.sendEmail({user_address,notification_group, subject, body});

Popular repositories Loading

  1. selfguard selfguard Public

    JavaScript 1

  2. tests tests Public

    JavaScript

  3. frontend-components frontend-components Public

    JavaScript

  4. docs docs Public

  5. selfguard-react-components selfguard-react-components Public

    JavaScript

  6. selfguard-node selfguard-node Public

    JavaScript