github.com/axw/juju@v0.0.0-20161005053422-4bd6544d08d4/tools/lxdclient/client_cert.go (about) 1 // Copyright 2015 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 // +build go1.3 5 6 package lxdclient 7 8 import ( 9 "crypto/x509" 10 11 "github.com/juju/errors" 12 "github.com/lxc/lxd/shared" 13 ) 14 15 type rawCertClient interface { 16 CertificateList() ([]shared.CertInfo, error) 17 CertificateAdd(cert *x509.Certificate, name string) error 18 CertificateRemove(fingerprint string) error 19 } 20 21 type certClient struct { 22 raw rawCertClient 23 } 24 25 // AddCert adds the given certificate to the server. 26 func (c certClient) AddCert(cert Cert) error { 27 x509Cert, err := cert.X509() 28 if err != nil { 29 return errors.Trace(err) 30 } 31 32 if err := c.raw.CertificateAdd(x509Cert, cert.Name); err != nil { 33 return errors.Trace(err) 34 } 35 36 return nil 37 } 38 39 // ListCerts returns the list of cert fingerprints from the server. 40 func (c certClient) ListCerts() ([]string, error) { 41 certs, err := c.raw.CertificateList() 42 if err != nil { 43 return nil, errors.Trace(err) 44 } 45 46 var fingerprints []string 47 for _, cert := range certs { 48 fingerprints = append(fingerprints, cert.Fingerprint) 49 } 50 return fingerprints, nil 51 } 52 53 // RemoveCert removes the cert from the server. 54 func (c certClient) RemoveCert(cert *Cert) error { 55 fingerprint, err := cert.Fingerprint() 56 if err != nil { 57 return errors.Trace(err) 58 } 59 60 if err := c.raw.CertificateRemove(fingerprint); err != nil { 61 return errors.Trace(err) 62 } 63 return nil 64 } 65 66 // RemoveCertByFingerprint removes the cert from the server. 67 func (c certClient) RemoveCertByFingerprint(fingerprint string) error { 68 if err := c.raw.CertificateRemove(fingerprint); err != nil { 69 return errors.Trace(err) 70 } 71 return nil 72 }