Skip to main content

Efficiently encrypt data off-chain and store securely on the blockchain

Project description

Crypto Vault (off-chain)

Version 0.1.0

Version Build Status License


password-store


About

Crypto Vault is a Python library designed to securely encrypt and store secrets on-chain. It facilitates off-chain encryption followed by on-chain storage through smart contracts, offering a robust solution for managing sensitive data in blockchain applications.

Currently deployed on the Polygon Mumbai testnet only.

Requirements

  • Python 3.9^
  • Polygon wallet with enough MATIC to pay gas
  • HTTP provider URL (Polygon-mumbai RPC)

Installation

pip install crypto-vault

Usage

Basic Workflow:

  1. Initialize Crypto Vault with a private key and HTTP provider.
  2. Store, retrieve, and update secrets on-chain.
  3. Encrypt and decrypt data off-chain.
Code Examples

Generate secure encryption key with Encryption

from crypto_vault import Encryption

# Generate encryption key
encryption_key = Encryption.generate_key()

Initialize Crypto Vault:

from crypto_vault.crypto_vault import CryptoVault

crypto_vault = CryptoVault(
        app="myApp",
        env="prod",
        private_key="private_key",
        encryption_key=encryption_key,
        http_provider="http-provider-url-with-api-key",
)

Store, retrieve, and update secrets

# Store
crypto_vault.store(data={"password": "secret", "foo": "bar"})

# Retrieve secrets
secrets = crypto_vault.retrieve()

# Retrieve single secret
password = crypto_vault.retrieve(value_name="password")

# Update single secret
crypto_vault.update(data={"foo": "Hello world!"})

# Update secrets -> To update all secrets use crypto_vault.store()

Encrypt and decrypt data

# Encrypt
encrypted_data = crypto_vault.encrypt(data="secret")

# Decrypt
decrypted_data = crypto_vault.decrypt(data=encrypted_data)

Crypto Vault API

  1. Storage
    • Store data. Input parameters: data(k: v)
    • Retrieve data. Params: value_name(optional)
    • Update parameter. Params: data
  2. Encryption
    • Generate encryption key
    • Encrypt data(str, int, list, dict). Params: value, key
    • Decrypt data(bytes32). Params: value, key

Crypto Vault Smart Contract

The smart contract is designed to store encrypted data on-chain. It is deployed on the Polygon Mumbai testnet.

Crypto Vault Smart Contract on mumbai-polygonscan

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

crypto-vault-0.1.1.tar.gz (10.9 kB view hashes)

Uploaded Source

Built Distribution

crypto_vault-0.1.1-py3-none-any.whl (9.9 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page