From 20b2c6a2017ac0f370a7916b7fd2104575427347 Mon Sep 17 00:00:00 2001 From: Mariano Cano Date: Wed, 18 May 2022 18:27:37 -0700 Subject: [PATCH] Extract cert storer methods from AuthDB To be able to extend the AuthDB with methods that also extend the provisioner we need to either create a new method or to split the interface. This change splits the interface so we can have a cleaner implementation. --- db/db.go | 9 +++++++-- db/simple.go | 2 +- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/db/db.go b/db/db.go index eccaf801..8cd1db0f 100644 --- a/db/db.go +++ b/db/db.go @@ -50,14 +50,19 @@ type AuthDB interface { Revoke(rci *RevokedCertificateInfo) error RevokeSSH(rci *RevokedCertificateInfo) error GetCertificate(serialNumber string) (*x509.Certificate, error) - StoreCertificate(crt *x509.Certificate) error UseToken(id, tok string) (bool, error) IsSSHHost(name string) (bool, error) - StoreSSHCertificate(crt *ssh.Certificate) error GetSSHHostPrincipals() ([]string, error) Shutdown() error } +// CertificateStorer is an extension of AuthDB that allows to store +// certificates. +type CertificateStorer interface { + StoreCertificate(crt *x509.Certificate) error + StoreSSHCertificate(crt *ssh.Certificate) error +} + // DB is a wrapper over the nosql.DB interface. type DB struct { nosql.DB diff --git a/db/simple.go b/db/simple.go index 0e5426ec..a7e38de9 100644 --- a/db/simple.go +++ b/db/simple.go @@ -20,7 +20,7 @@ type SimpleDB struct { usedTokens *sync.Map } -func newSimpleDB(c *Config) (AuthDB, error) { +func newSimpleDB(c *Config) (*SimpleDB, error) { db := &SimpleDB{} db.usedTokens = new(sync.Map) return db, nil