Codebase list certgraph / 66fc50f fingerprint / fingerprint.go
66fc50f

Tree @66fc50f (Download .tar.gz)

fingerprint.go @66fc50fraw · history · blame

// Package fingerprint defines types to define a certificate fingerprint for certgraph
package fingerprint

import (
	"crypto/sha256"
	"encoding/base64"
	"fmt"
)

// Fingerprint sha256 of certificate bytes
type Fingerprint [sha256.Size]byte

// HexString print Fingerprint as hex
func (fp *Fingerprint) HexString() string {
	return fmt.Sprintf("%X", *fp)
}

// FromHashBytes returns a Fingerprint generated by the first len(Fingerprint) bytes
func FromHashBytes(data []byte) Fingerprint {
	var fp Fingerprint
	for i := 0; i < len(data) && i < len(fp); i++ {
		fp[i] = data[i]
	}
	return fp
}

// FromBytes returns a Fingerprint generated by the provided bytes
func FromBytes(data []byte) Fingerprint {
	fp := sha256.Sum256(data)
	return fp
}

// FromB64 returns a Fingerprint from a base64 encoded hash string
func FromB64(hash string) Fingerprint {
	data, _ := base64.StdEncoding.DecodeString(hash)
	return FromHashBytes(data)
}

// B64Encode returns the b64 string of a Fingerprint
func (fp *Fingerprint) B64Encode() string {
	return base64.StdEncoding.EncodeToString(fp[:])
}