72 lines
1.9 KiB
Go
72 lines
1.9 KiB
Go
package certstore
|
|
|
|
import (
|
|
"crypto"
|
|
"crypto/x509"
|
|
"errors"
|
|
)
|
|
|
|
var (
|
|
// ErrUnsupportedHash is returned by Signer.Sign() when the provided hash
|
|
// algorithm isn't supported.
|
|
ErrUnsupportedHash = errors.New("unsupported hash algorithm")
|
|
)
|
|
|
|
// StoreLocation defines the store location to look certificates in.
|
|
type StoreLocation int
|
|
|
|
const (
|
|
// User is the user scoped certificate store. "CURRENT_USER" on Windows or
|
|
// "login" on MacOS
|
|
User StoreLocation = iota
|
|
// System is the system scoped certificate store. "LOCAL_MACHINE" on Windows
|
|
// or "System" on MacOS
|
|
System
|
|
)
|
|
|
|
// StorePermission defines the store permission to open the store with
|
|
type StorePermission int
|
|
|
|
const (
|
|
// ReadOnly is the store permission allows reading and using certificates
|
|
ReadOnly StorePermission = iota
|
|
// ReadWrite is the store permission that allows importing certificates
|
|
ReadWrite
|
|
)
|
|
|
|
// Open opens the system's certificate store.
|
|
func Open(location StoreLocation, permissions ...StorePermission) (Store, error) {
|
|
return openStore(location, permissions...)
|
|
}
|
|
|
|
// Store represents the system's certificate store.
|
|
type Store interface {
|
|
// Identities gets a list of identities from the store.
|
|
Identities() ([]Identity, error)
|
|
|
|
// Import imports a PKCS#12 (PFX) blob containing a certificate and private
|
|
// key.
|
|
Import(data []byte, password string) error
|
|
|
|
// Close closes the store.
|
|
Close()
|
|
}
|
|
|
|
// Identity is a X.509 certificate and its corresponding private key.
|
|
type Identity interface {
|
|
// Certificate gets the identity's certificate.
|
|
Certificate() (*x509.Certificate, error)
|
|
|
|
// CertificateChain attempts to get the identity's full certificate chain.
|
|
CertificateChain() ([]*x509.Certificate, error)
|
|
|
|
// Signer gets a crypto.Signer that uses the identity's private key.
|
|
Signer() (crypto.Signer, error)
|
|
|
|
// Delete deletes this identity from the system.
|
|
Delete() error
|
|
|
|
// Close any manually managed memory held by the Identity.
|
|
Close()
|
|
}
|