portainer/portainer

View on GitHub
api/crypto/hash.go

Summary

Maintainability
A
0 mins
Test Coverage
package crypto

import (
    "golang.org/x/crypto/bcrypt"
)

// Service represents a service for encrypting/hashing data.
type Service struct{}

// Hash hashes a string using the bcrypt algorithm
func (*Service) Hash(data string) (string, error) {
    bytes, err := bcrypt.GenerateFromPassword([]byte(data), bcrypt.DefaultCost)
    if err != nil {
        return "", err
    }
    return string(bytes), err
}

// CompareHashAndData compares a hash to clear data and returns an error if the comparison fails.
func (*Service) CompareHashAndData(hash string, data string) error {
    return bcrypt.CompareHashAndPassword([]byte(hash), []byte(data))
}