🚀 Big News: Socket Acquires Coana to Bring Reachability Analysis to Every Appsec Team.Learn more
Socket
Sign inDemoInstall
Socket

git.1-hub.cn/go-universal/cryptography

Package Overview
Dependencies
Alerts
File Explorer
Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

git.1-hub.cn/go-universal/cryptography

v0.0.1
Go
Version published
Created
Source

Cryptography Library

GitHub Tag Go Reference License Go Report Card Contributors Issues

This library provides a comprehensive set of cryptographic utilities for hashing, encryption, and key management. It supports both symmetric and asymmetric cryptography, as well as various hashing algorithms.

Features

  • Symmetric encryption using AES-GCM.
  • Asymmetric encryption using RSA.
  • Hashing with Argon2, bcrypt, and HMAC.
  • Key generation and parsing utilities.

Installation

To use this library, add it to your Go project:

go get github.com/go-universal/cryptography

API Documentation

Symmetric Encryption

Creates a new symmetric encryption driver.

func NewSymmetric(key SimpleKey, signer HashingAlgo) Cryptography
key, _ := cryptography.NewSimpleKey(cryptography.Simple32)
driver := cryptography.NewSymmetric(key, cryptography.SHA256)

data := []byte("my secret data")

// Encrypt
encrypted, _ := driver.EncryptBase64(data)

// Decrypt
decrypted, _ := driver.DecryptBase64(encrypted)
fmt.Println(string(decrypted)) // Output: my secret data

Asymmetric Encryption

Creates a new asymmetric encryption driver with a private key.

func NewAsymmetric(key RSAKey, signer HashingAlgo) Cryptography

NewAsymmetricClient

Creates a new asymmetric encryption driver with a public key.

func NewAsymmetricClient(public *rsa.PublicKey, signer HashingAlgo) Cryptography
key, _ := cryptography.NewRSAKey(cryptography.RSA2048)
driver := cryptography.NewAsymmetric(*key, cryptography.SHA256)

data := []byte("my secret data")

// Encrypt
encrypted, _ := driver.EncryptBase64(data)

// Decrypt
decrypted, _ := driver.DecryptBase64(encrypted)
fmt.Println(string(decrypted)) // Output: my secret data

Hashing

Creates a new Argon2 hasher.

func NewArgon2Hasher(
    saltLength SimpleLength, keyLength uint32,
    memory uint32, iterations uint32, parallelism uint8,
) Hasher

Creates a new bcrypt hasher.

func NewBcryptHasher(cost int) Hasher

Creates a new HMAC hasher.

func HMacHasher(key []byte, algo HashingAlgo) Hasher
password := []byte("my_password")

// Argon2
argon2Hasher := cryptography.NewArgon2Hasher(0, 0, 0, 0, 0)
hashed, _ := argon2Hasher.Hash(password)
valid, _ := argon2Hasher.Validate(hashed, password)
fmt.Println(valid) // Output: true

// bcrypt
bcryptHasher := cryptography.NewBcryptHasher(0)
hashed, _ = bcryptHasher.Hash(password)
valid, _ = bcryptHasher.Validate(hashed, password)
fmt.Println(valid) // Output: true

Key Management

Simple Key

Generates a new random key of the specified length.

func NewSimpleKey(length SimpleLength) (SimpleKey, error)

RSA Key

Generates a new RSA private key of the specified length.

func NewRSAKey(length RSALength) (*RSAKey, error)

Parse Private Key

Parses an RSA private key from PKCS#1 or PKCS#8 format.

func ParsePrivateKey(key []byte, isPEM bool) (*RSAKey, error)

Parse Public Key

Parses an RSA public key from PKIX or PKCS#1 format.

func ParsePublicKey(key []byte, isPEM bool) (*rsa.PublicKey, error)
// Generate a new RSA key
rsaKey, _ := cryptography.NewRSAKey(cryptography.RSA2048)

// Export and parse the private key
privateKeyPEM, _ := rsaKey.PrivateKeyPEM(true)
parsedKey, _ := cryptography.ParsePrivateKey(privateKeyPEM, true)

// Export and parse the public key
publicKeyPEM, _ := rsaKey.PublicKeyPEM(true)
parsedPublicKey, _ := cryptography.ParsePublicKey(publicKeyPEM, true)

License

This project is licensed under the ISC License. See the LICENSE file for details.

FAQs

Package last updated on 07 Apr 2025

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts