2021-02-25 23:32:21 +00:00
|
|
|
package scep
|
|
|
|
|
2021-03-12 14:49:39 +00:00
|
|
|
import (
|
|
|
|
"context"
|
|
|
|
"crypto"
|
|
|
|
"crypto/x509"
|
|
|
|
)
|
|
|
|
|
|
|
|
// Service is a wrapper for crypto.Signer and crypto.Decrypter
|
2021-02-25 23:32:21 +00:00
|
|
|
type Service struct {
|
2021-03-12 14:49:39 +00:00
|
|
|
certificateChain []*x509.Certificate
|
|
|
|
signer crypto.Signer
|
|
|
|
decrypter crypto.Decrypter
|
|
|
|
}
|
|
|
|
|
2021-03-21 15:42:41 +00:00
|
|
|
func NewService(ctx context.Context, opts Options) (*Service, error) {
|
2021-03-12 14:49:39 +00:00
|
|
|
if err := opts.Validate(); err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
|
|
|
|
// TODO: should this become similar to the New CertificateAuthorityService as in x509CAService?
|
|
|
|
return &Service{
|
2021-03-12 14:51:16 +00:00
|
|
|
certificateChain: opts.CertificateChain,
|
|
|
|
signer: opts.Signer,
|
|
|
|
decrypter: opts.Decrypter,
|
2021-03-12 14:49:39 +00:00
|
|
|
}, nil
|
2021-02-25 23:32:21 +00:00
|
|
|
}
|