github.com/code-to-go/safepool.lib@v0.0.0-20221205180519-ee25e63c226e/security/eccrypt.go (about)

     1  package security
     2  
     3  import (
     4  	"github.com/code-to-go/safepool.lib/core"
     5  
     6  	eciesgo "github.com/ecies/go/v2"
     7  )
     8  
     9  func EcEncrypt(identity Identity, data []byte) ([]byte, error) {
    10  	pk, err := eciesgo.NewPublicKeyFromBytes(identity.EncryptionKey.Public)
    11  	if core.IsErr(err, "cannot convert bytes to secp256k1 public key: %v") {
    12  		return nil, err
    13  	}
    14  	data, err = eciesgo.Encrypt(pk, data)
    15  	if core.IsErr(err, "cannot encrypt with secp256k1: %v") {
    16  		return nil, err
    17  	}
    18  	return data, err
    19  }
    20  
    21  func EcDecrypt(identity Identity, data []byte) ([]byte, error) {
    22  	data, err := eciesgo.Decrypt(eciesgo.NewPrivateKeyFromBytes(identity.EncryptionKey.Private), data)
    23  	if core.IsErr(err, "cannot decrypt with secp256k1: %v") {
    24  		return nil, err
    25  	}
    26  	return data, nil
    27  }