Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 7 additions & 4 deletions cmd/server/server.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,11 @@ import (
"github.com/flatheadmill/tang-encryption-provider/crypter"
"github.com/gorilla/mux"
"github.com/pkg/errors"
"github.com/prometheus/client_golang/prometheus/promhttp"
"net/http"
"os"
"os/signal"
"runtime"
"syscall"
"time"

Expand All @@ -36,17 +38,17 @@ const (
func main() {
var spec Specification
try.To(envconfig.Process("tang_kms", &spec))
log := logger.New(os.Stdout)
log := logger.New(os.Stdout).WithFields(map[string]interface{}{"go_version": runtime.Version(), "env": spec.Env})
if spec.Env == EnvLocal {
log.Console()
}

log.MsgWithFields(map[string]interface{}{"thumbprint": spec.Thumbprint, "unix_socket": spec.UnixSocket}, "")
crypt := try.To1(crypter.NewCrypter(spec.ServerUrl, spec.Thumbprint))
plugin := try.To1(plugin.New(log, crypt, spec.UnixSocket))
httpSvr := setupHttpServer(log, []HealthComponent{NewHealthComponent(plugin, "tang-encryption-provider plugin")}, spec.HttpPort)

httpSvr := setupHttpServer(log, []HealthComponent{NewHealthComponent(crypt, "tang_crypter")}, spec.HttpPort)

err := run(log, try.To1(plugin.New(log, crypt, spec.UnixSocket)), httpSvr)
err := run(log, plugin, httpSvr)
if err != nil {
fmt.Printf("exited with error: %T %v\n", err, err)
}
Expand Down Expand Up @@ -85,6 +87,7 @@ func setupHttpServer(l logger.Logger, components []HealthComponent, httpPort str
r := mux.NewRouter()
r.HandleFunc("/livez", healthAPI.Health)
r.HandleFunc("/readyz", healthAPI.Health)
r.Handle("/metrics", promhttp.Handler())

return &http.Server{Addr: ":" + httpPort, Handler: r}
}
Expand Down
10 changes: 5 additions & 5 deletions crypter/crypter.go
Original file line number Diff line number Diff line change
Expand Up @@ -114,8 +114,8 @@ func NewCrypter(url string, thumbprint string) (crypter *Crypter, err error) {
}

func (c *Crypter) Encrypt(plain []byte) (cipher []byte, err error) {
defer err2.Handle(&err, handler.Handler(&err))
return try.To1(jwe.Encrypt(plain, jwa.ECDH_ES, c.exchangeKey, jwa.A256GCM, jwa.NoCompress, jwe.WithProtectedHeaders(c.headers))), nil
cipher, err = jwe.Encrypt(plain, jwa.ECDH_ES, c.exchangeKey, jwa.A256GCM, jwa.NoCompress, jwe.WithProtectedHeaders(c.headers))
return cipher, errors.Wrap(err, "failed to encrypt plaintext locally with JWE")
}

func (c *Crypter) Decrypt(cipher []byte) (plain []byte, err error) {
Expand All @@ -124,12 +124,12 @@ func (c *Crypter) Decrypt(cipher []byte) (plain []byte, err error) {

func Decrypt(cipher []byte) (plain []byte, err error) {
plain, err = clevis.Decrypt(cipher)
err = errors.Wrap(err, "failed to decrypt cipher")
err = errors.Wrap(err, "failed to decrypt cipher with clevis")
return
}

func (c Crypter) Health() error {
randomPlaintext := RandomHex(8)
randomPlaintext := randomHex(8)
cipher, err := c.Encrypt([]byte(randomPlaintext))
if err != nil {
return errors.Wrap(err, "failed to encrypt random text")
Expand All @@ -149,7 +149,7 @@ func init() {
rand.Seed(time.Now().UnixNano())
}

func RandomHex(n int) string {
func randomHex(n int) string {
if n <= 0 {
return ""
}
Expand Down
271 changes: 0 additions & 271 deletions go-jose/crypter.go

This file was deleted.

15 changes: 10 additions & 5 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -4,25 +4,26 @@ go 1.18

require (
github.com/anatol/clevis.go v0.0.0-20220325231436-1877edc32744
github.com/flatheadmill/go-jose/v3 v3.0.2
github.com/gogo/protobuf v1.3.2
github.com/gorilla/mux v1.8.0
github.com/goware/urlx v0.3.1
github.com/kelseyhightower/envconfig v1.4.0
github.com/lainio/err2 v0.8.0
github.com/lestrrat-go/jwx v1.2.20
github.com/pkg/errors v0.9.1
github.com/prometheus/client_golang v1.12.1
github.com/rs/zerolog v1.26.1
golang.org/x/net v0.0.0-20211209124913-491a49abca63
golang.org/x/net v0.0.0-20220225172249-27dd8689420f
google.golang.org/grpc v1.45.0
k8s.io/apiserver v0.23.5
)

require (
github.com/PuerkitoBio/purell v1.1.1 // indirect
github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578 // indirect
github.com/beorn7/perks v1.0.1 // indirect
github.com/cespare/xxhash/v2 v2.1.2 // indirect
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1 // indirect
github.com/go-jose/go-jose/v3 v3.0.0 // indirect
github.com/goccy/go-json v0.9.5 // indirect
github.com/golang/protobuf v1.5.2 // indirect
github.com/google/go-tpm v0.3.3 // indirect
Expand All @@ -31,9 +32,13 @@ require (
github.com/lestrrat-go/httpcc v1.0.0 // indirect
github.com/lestrrat-go/iter v1.0.1 // indirect
github.com/lestrrat-go/option v1.0.0 // indirect
github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369 // indirect
github.com/prometheus/client_model v0.2.0 // indirect
github.com/prometheus/common v0.34.0 // indirect
github.com/prometheus/procfs v0.7.3 // indirect
golang.org/x/crypto v0.0.0-20220315160706-3147a52a75dd // indirect
golang.org/x/sys v0.0.0-20220315194320-039c03cc5b86 // indirect
golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6 // indirect
golang.org/x/text v0.3.7 // indirect
google.golang.org/genproto v0.0.0-20210831024726-fe130286e0e2 // indirect
google.golang.org/protobuf v1.27.1 // indirect
google.golang.org/protobuf v1.28.0 // indirect
)
Loading