aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--certificate/certificate.go26
1 files changed, 18 insertions, 8 deletions
diff --git a/certificate/certificate.go b/certificate/certificate.go
index 185ac4d..6e77599 100644
--- a/certificate/certificate.go
+++ b/certificate/certificate.go
@@ -21,7 +21,7 @@ import (
)
// Dir represents a directory of certificates.
-// The zero value of Dir is an empty directory ready to use.
+// The zero value for Dir is an empty directory ready to use.
//
// Dir is safe for concurrent use by multiple goroutines.
type Dir struct {
@@ -68,12 +68,21 @@ func (d *Dir) Lookup(scope string) (tls.Certificate, bool) {
return cert, ok
}
-// Load loads certificates from the given path.
-// The path should lead to a directory containing certificates and private keys
-// in the form scope.crt and scope.key.
-// For example, the hostname "localhost" would have the corresponding files
-// localhost.crt (certificate) and localhost.key (private key).
-// New certificates will be written to this directory.
+// Entries returns a map of hostnames to certificates.
+func (d *Dir) Entries() map[string]tls.Certificate {
+ certs := map[string]tls.Certificate{}
+ for key := range d.certs {
+ certs[key] = d.certs[key]
+ }
+ return certs
+}
+
+// Load loads certificates from the provided path.
+// Add will write certificates to this path.
+//
+// The directory should contain certificates and private keys
+// named scope.crt and scope.key respectively, where scope is
+// the scope of the certificate.
func (d *Dir) Load(path string) error {
matches, err := filepath.Glob(filepath.Join(path, "*.crt"))
if err != nil {
@@ -94,7 +103,8 @@ func (d *Dir) Load(path string) error {
return nil
}
-// SetPath sets the directory that new certificates will be written to.
+// SetPath sets the directory path.
+// Add will write certificates to this path.
func (d *Dir) SetPath(path string) {
d.mu.Lock()
defer d.mu.Unlock()