cryptography

package
v0.0.0-...-afbecfe Latest Latest
Warning

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

Go to latest
Published: Feb 10, 2022 License: BSD-3-Clause Imports: 18 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// ChunkSize is a size of each file chunks in bytes.
	// Should be less than max value of uint32 (4294967295)
	// since the util package use unsigned 4 bytes to represent the data size.
	ChunkSize  = 16777216 // 2^24 bytes, about 16.7 MB
	IvSize     = 12
	SymKeySize = 32
)

Variables

View Source
var ChunkIncorrectOrder = errors.New("encrypted chunk incorrect order")

ChunkIncorrectOrder occurs when encrypted file chunks are received in incorrect order.

View Source
var IncompleteFile = errors.New("incomplete file")

IncompleteFile occurs when written chunk size != total chunk size.

View Source
var NoPemBlock = errors.New("[]byte does not contain public pem block")

Functions

func BytesToPemFile

func BytesToPemFile(pemBytes []byte, fileName string) (err error)

BytesToPemFile writes pemBytes to fileName in PEM block format.

func DecryptVerifyMsg

func DecryptVerifyMsg(encryptedMsg []byte, signature []byte, senderPubKey *rsa.PublicKey, receiverPrivKey *rsa.PrivateKey) (
	symKey []byte, err error)

DecryptVerifyMsg decrypts key for symmetric encryption with receiver's private key, and verify signature with sender's public key.

func EncryptSignMsg

func EncryptSignMsg(msg []byte, receiverPubKey *rsa.PublicKey, senderPrivKey *rsa.PrivateKey) (
	encryptedData []byte, dataSignature []byte, err error)

EncryptSignMsg encrypts key for symmetric encryption with receiver's public key, and sign hashed symmetric encryption key with sender's private key.

func OpenKeysAsBlock

func OpenKeysAsBlock(keyPath string, keyName string) (keyBlock *pem.Block, err error)

OpenKeysAsBlock open keys and return them as *pem.Block.

If keyName ends with .priv - return private key block if found - return newly created private key pem block if not found If keyName ends anything else - return public key block if found - return err if not found

func OpenPrivKey

func OpenPrivKey(keyPath string, keyFileN string) (privKey *rsa.PrivateKey, err error)

OpenPrivKey opens private key named keyFileN in keyPath

func OpenPubKey

func OpenPubKey(keyPath string, keyFileN string) (pubKey *rsa.PublicKey, err error)

OpenPubKey opens public key named keyFileN in keyPath

func PemToSha256

func PemToSha256(pubBlock *pem.Block) []byte

PemToSha256 generates bytes containing sha256sum of pubBlock bytes.

Types

type AesGcmChunk

type AesGcmChunk struct {
	// contains filtered or unexported fields
}

AesGcmChunk stores data for encrypting or decrypting chunks, but it cannot be both.

func DecryptSetup

func DecryptSetup() (ag *AesGcmChunk, err error)

DecryptSetup creates temporary file, make directory if it doesn't exist then return *AesGcmChunk

func EncryptSetup

func EncryptSetup(fileN string) (ag *AesGcmChunk, err error)

EncryptSetup opens file, determine number of chunks, then return *AesGcmChunk

func (*AesGcmChunk) Decrypt

func (ag *AesGcmChunk) Decrypt(chanMap chan *util.Message, senderPubKey *rsa.PublicKey, receiverPrivKey *rsa.PrivateKey) (err error)

Decrypt reads encrypted data from reader and decrypts the file and return error, if raised. Sender's public key is required for verifying signature. Receiver's private key is required for decrypting symmetric encryption key. err == nil indicates successful execution.

func (*AesGcmChunk) Encrypt

func (ag *AesGcmChunk) Encrypt(writer io.Writer, receiverPubKey *rsa.PublicKey, senderPrivKey *rsa.PrivateKey) (err error)

Encrypt encrypts file and write to writer and return error if raised. Receiver's public key is required for encrypting symmetric encryption key. Sender's private key is required for signing the encrypted key. err == nil indicates successful execution. TODO: Send error if previous operation was unsuccessful

Jump to

Keyboard shortcuts

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