108 lines
3.8 KiB
Go
108 lines
3.8 KiB
Go
// Copyright 2016 ISRG. All rights reserved
|
|
// This Source Code Form is subject to the terms of the Mozilla Public
|
|
// License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
|
|
// Package wrappers wraps the GRPC calls in the core interfaces.
|
|
package grpc
|
|
|
|
import (
|
|
"context"
|
|
|
|
capb "github.com/letsencrypt/boulder/ca/proto"
|
|
"github.com/letsencrypt/boulder/core"
|
|
corepb "github.com/letsencrypt/boulder/core/proto"
|
|
"google.golang.org/grpc"
|
|
)
|
|
|
|
type CertificateAuthorityClientWrapper struct {
|
|
inner capb.CertificateAuthorityClient
|
|
}
|
|
|
|
func NewCertificateAuthorityClient(inner capb.CertificateAuthorityClient) *CertificateAuthorityClientWrapper {
|
|
return &CertificateAuthorityClientWrapper{inner}
|
|
}
|
|
|
|
func (cac CertificateAuthorityClientWrapper) IssuePrecertificate(ctx context.Context, issueReq *capb.IssueCertificateRequest) (*capb.IssuePrecertificateResponse, error) {
|
|
resp, err := cac.inner.IssuePrecertificate(ctx, issueReq)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
if resp == nil || resp.DER == nil {
|
|
return nil, errIncompleteResponse
|
|
}
|
|
return resp, nil
|
|
}
|
|
|
|
func (cac CertificateAuthorityClientWrapper) IssueCertificateForPrecertificate(ctx context.Context, req *capb.IssueCertificateForPrecertificateRequest) (core.Certificate, error) {
|
|
res, err := cac.inner.IssueCertificateForPrecertificate(ctx, req)
|
|
if err != nil {
|
|
return core.Certificate{}, err
|
|
}
|
|
return PBToCert(res)
|
|
}
|
|
|
|
func (cac CertificateAuthorityClientWrapper) GenerateOCSP(ctx context.Context, req *capb.GenerateOCSPRequest) (*capb.OCSPResponse, error) {
|
|
res, err := cac.inner.GenerateOCSP(ctx, req)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
if res == nil || res.Response == nil {
|
|
return nil, errIncompleteResponse
|
|
}
|
|
return res, nil
|
|
}
|
|
|
|
type OCSPGeneratorClientWrapper struct {
|
|
inner capb.OCSPGeneratorClient
|
|
}
|
|
|
|
func NewOCSPGeneratorClient(inner capb.OCSPGeneratorClient) *OCSPGeneratorClientWrapper {
|
|
return &OCSPGeneratorClientWrapper{inner}
|
|
}
|
|
|
|
func (ogc OCSPGeneratorClientWrapper) GenerateOCSP(ctx context.Context, req *capb.GenerateOCSPRequest, _ ...grpc.CallOption) (*capb.OCSPResponse, error) {
|
|
res, err := ogc.inner.GenerateOCSP(ctx, req)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
if res == nil || res.Response == nil {
|
|
return nil, errIncompleteResponse
|
|
}
|
|
return res, nil
|
|
}
|
|
|
|
// CertificateAuthorityServerWrapper is the gRPC version of a core.CertificateAuthority server
|
|
type CertificateAuthorityServerWrapper struct {
|
|
inner core.CertificateAuthority
|
|
}
|
|
|
|
func NewCertificateAuthorityServer(inner core.CertificateAuthority) *CertificateAuthorityServerWrapper {
|
|
return &CertificateAuthorityServerWrapper{inner}
|
|
}
|
|
|
|
func (cas *CertificateAuthorityServerWrapper) IssuePrecertificate(ctx context.Context, request *capb.IssueCertificateRequest) (*capb.IssuePrecertificateResponse, error) {
|
|
if request == nil || request.Csr == nil || request.OrderID == nil || request.RegistrationID == nil {
|
|
return nil, errIncompleteRequest
|
|
}
|
|
return cas.inner.IssuePrecertificate(ctx, request)
|
|
}
|
|
|
|
func (cas *CertificateAuthorityServerWrapper) IssueCertificateForPrecertificate(ctx context.Context, req *capb.IssueCertificateForPrecertificateRequest) (*corepb.Certificate, error) {
|
|
if req == nil || req.DER == nil || req.OrderID == nil || req.RegistrationID == nil || req.SCTs == nil {
|
|
return nil, errIncompleteRequest
|
|
}
|
|
cert, err := cas.inner.IssueCertificateForPrecertificate(ctx, req)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return CertToPB(cert), nil
|
|
}
|
|
|
|
func (cas *CertificateAuthorityServerWrapper) GenerateOCSP(ctx context.Context, req *capb.GenerateOCSPRequest) (*capb.OCSPResponse, error) {
|
|
if (req.CertDER == nil && (req.Serial == nil || req.IssuerID == nil)) || req.Status == nil || req.Reason == nil || req.RevokedAt == nil {
|
|
return nil, errIncompleteRequest
|
|
}
|
|
return cas.inner.GenerateOCSP(ctx, req)
|
|
}
|