btfs-encryption

module
v0.0.0-...-52eb507 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 18, 2023 License: GPL-3.0

README

BTFS-Encryption

btfs-encryption is a demo project for BTFS Encrypted Storage Protocol, and provide a binary you can use to encrypt/decrypt files from/to btfs with this protocol:

How to install

  • Use go tools
    go install github.com/bittorrent/btfs-encryption/cmd/btfs-encryption@latest
    
  • Build from source: if you have installed go and make tools, you can clone the source code and make:
    git clone git@github.com:bittorrent/btfs-encryption.git && cd btfs-encryption && make
    
    the binary will be build as btfs-encryption in the current directory.

Prerequisites

  • This project use RSA algorithm to encrypt the secret, so before use the binary, enable the RSA public/private key pairs has been generated in the local. These key pairs can be generated by below commands:
    ssh-keygen -t rsa
    
    Or you can just use the exists key pairs, they are commonly be $HOME/.ssh/id_rsa and $HOME/.ssh/id_rsa.pub.
  • If you need add encrypted file to BTFS and decrypted file from BTFS, before use these commands, you need set the BTFS_HOST environment variable.
    export BTFS_HOST=<btfs_api_host>
    

Commands

NAME:
   btfs-encryption - btfs-encryption is a demo project for btfs encryption protocol

USAGE:
   btfs-encryption [global options] command [command options] [arguments...]

VERSION:
   v0.1.0

COMMANDS:
   encrypt        Encrypt local file or folder and add it to BTFS
   decrypt        Get encrypted file from BTFS and decrypt it to local
   encrypt-local  Encrypt local file or folder
   decrypt-local  Decrypt local encrypted file
   help, h        Shows a list of commands or help for one command

GLOBAL OPTIONS:
   --help, -h     show help (default: false)
   --version, -v  print the version (default: false)
  • Encrypt local file or folder and add it to BTFS
    ./btfs-encryption encrypt [-pub <public_key_path>] <source_file_or_folder_path>
    

    If it works, the output will show the encrypted BTFS file info:

    Encrypted File: 
    CID  - <CID>
    Name - <Name>
    Size - <Size>
    
  • Get encrypted file from BTFS and decrypt it to local
    ./btfs-encryption decrypt [-dst <destination_directory_path>] [-prv <private_key_path>] <cid>
    

    If it works, the decrypted files will be in the specified destination directory, and output will be:

    completed!
    
  • Encrypt local file or folder
    ./btfs-encryption encrypt-local [-dst <destination_directory_path>] [-pub <public_key_path>] <source_file_or_folder_path>
    

    If it works, the encrypted file will be in the specified destination directory, and output will be:

    completed!
    
  • Decrypt local encrypted file
    ./btfs-encryption decrypt-local [-src <source_file_path>] [-dst <destination_directory_path>] [-prv <private_key_path>] <cid>
    

    If it works, the decrypted files will be in the specified destination directory, and output will be:

    completed!
    

Used as library

The project can be used as library for convenience:

go get github.com/bittorrent/btfs-encryption 
package main

import (
    "github.com/bittorrent/btfs-encryption/enc"
)

func main() {
    // encryption
    err := enc.EncryptToLocal("path/to/source", "path/to/dest", "path/to/public/key")
    if err != nil {
        return 
    }
    
    // decryption
    err = enc.DecryptFromLocal("path/to/source", "path/to/dest", "path/to/private/key")
    if err != nil {
        return
    }
}

Directories

Path Synopsis
cmd

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL