certmanager updated

This commit is contained in:
Олег Бородин
2024-08-06 19:10:36 +02:00
parent c7b9532377
commit f89cfe7d90
7 changed files with 281 additions and 206 deletions

View File

@@ -7,39 +7,39 @@ import (
cmapi "certmanager/api/certmanagercontrol"
"certmanager/internal/descriptor"
"certmanager/pkg/cm509"
"certmanager/pkg/cm509"
)
func (lg *Logic) CreateIssuerPair(ctx context.Context, params *cmapi.CreateIssuerPairParams) (*cmapi.CreateIssuerPairResult, error) {
var err error
res := &cmapi.CreateIssuerPairResult{}
var signerDescr *descriptor.Issuer
var signerExists bool
if params.SignerID > 0 {
signerExists, signerDescr, err = lg.db.GetIssuerByID(ctx, params.SignerID)
if !signerExists {
err := fmt.Errorf("Issuer with id %d cannot found", params.SignerID)
if err != nil {
return res, err
}
}
} else if params.SignerName != "" {
signerExists, signerDescr, err = lg.db.GetIssuerByName(ctx, params.SignerName)
if signerExists {
err := fmt.Errorf("Issuer with name %s cannot found", params.SignerName)
if err != nil {
return res, err
}
}
}
var signerDescr *descriptor.Issuer
var signerExists bool
if params.SignerID > 0 {
signerExists, signerDescr, err = lg.db.GetIssuerByID(ctx, params.SignerID)
if !signerExists {
err := fmt.Errorf("Issuer with id %d cannot found", params.SignerID)
if err != nil {
return res, err
}
}
} else if params.SignerName != "" {
signerExists, signerDescr, err = lg.db.GetIssuerByName(ctx, params.SignerName)
if signerExists {
err := fmt.Errorf("Issuer with name %s cannot found", params.SignerName)
if err != nil {
return res, err
}
}
}
createIssuerPairParams := &cm509.CreateIssuerPairParams{
CommonName: params.IssuerCommonName,
}
if signerDescr != nil {
lg.log.Debugf("Create issuer with signer name %s", signerDescr.Name)
createIssuerPairParams.SignerCert = signerDescr.Cert
createIssuerPairParams.SignerKey = signerDescr.Key
}
if signerDescr != nil {
lg.log.Debugf("Create issuer with signer name %s", signerDescr.Name)
createIssuerPairParams.SignerCert = signerDescr.Cert
createIssuerPairParams.SignerKey = signerDescr.Key
}
createIssuerPairRes, err := cm509.CreateIssuerPair(createIssuerPairParams)
if err != nil {
@@ -52,21 +52,21 @@ func (lg *Logic) CreateIssuerPair(ctx context.Context, params *cmapi.CreateIssue
Key: createIssuerPairRes.Key,
}
issuerExists, _, err := lg.db.GetIssuerByName(ctx, issuerDescr.Name)
if issuerExists {
err := fmt.Errorf("Issuer with name %s already exists", issuerDescr.Name)
if err != nil {
return res, err
}
}
issuerExists, _, err := lg.db.GetIssuerByName(ctx, issuerDescr.Name)
if issuerExists {
err := fmt.Errorf("Issuer with name %s already exists", issuerDescr.Name)
if err != nil {
return res, err
}
}
issuerID, err := lg.db.InsertIssuer(ctx, issuerDescr)
if err != nil {
return res, err
}
res.IssuerID = issuerID
res.IssuerName = createIssuerPairRes.Name
res.Certificate = createIssuerPairRes.Cert
res.IssuerName = createIssuerPairRes.Name
res.Certificate = createIssuerPairRes.Cert
return res, err
}

View File

@@ -4,9 +4,9 @@ import (
"context"
"fmt"
"certmanager/internal/descriptor"
cmapi "certmanager/api/certmanagercontrol"
"certmanager/pkg/cm509"
"certmanager/internal/descriptor"
"certmanager/pkg/cm509"
)
func (lg *Logic) CreateServicePair(ctx context.Context, params *cmapi.CreateServicePairParams) (*cmapi.CreateServicePairResult, error) {
@@ -19,7 +19,7 @@ func (lg *Logic) CreateServicePair(ctx context.Context, params *cmapi.CreateServ
case params.IssuerID != 0:
issuerExists, issuerDescr, err = lg.db.GetIssuerByID(ctx, params.IssuerID)
if !issuerExists {
err := fmt.Errorf("No signer with this ID was found")
err := fmt.Errorf("No signer with id was found", params.IssuerID)
if err != nil {
return res, err
}
@@ -27,7 +27,7 @@ func (lg *Logic) CreateServicePair(ctx context.Context, params *cmapi.CreateServ
case params.IssuerName != "":
issuerExists, issuerDescr, err = lg.db.GetIssuerByName(ctx, params.IssuerName)
if !issuerExists {
err := fmt.Errorf("No signer with this common name was found")
err := fmt.Errorf("No signer with name %s was found", params.IssuerName)
if err != nil {
return res, err
}
@@ -56,8 +56,9 @@ func (lg *Logic) CreateServicePair(ctx context.Context, params *cmapi.CreateServ
IssuerKey: issuerDescr.Key,
IssuerCert: issuerDescr.Cert,
IPAddresses: params.InetAddresses,
DNSNames: params.Hostnames,
}
createSericePairRes, err := cm509.CreateServicePairV2(createServicePairParams)
createSericePairRes, err := cm509.CreateServicePair(createServicePairParams)
if err != nil {
return res, err
}
@@ -73,9 +74,9 @@ func (lg *Logic) CreateServicePair(ctx context.Context, params *cmapi.CreateServ
if err != nil {
return res, err
}
res.Name = createSericePairRes.Name
res.ServiceName = createSericePairRes.Name
res.ServiceID = serviceID
res.Cerificate = createSericePairRes.Cert
res.Certificate = createSericePairRes.Cert
res.Key = createSericePairRes.Key
res.IssuerID = issuerDescr.ID
res.IssuerCertificate = issuerDescr.Cert
@@ -157,7 +158,7 @@ func (lg *Logic) RevokeServicePair(ctx context.Context, params *cmapi.RevokeServ
case params.ServiceID != 0:
serviceExists, serviceDescr, err = lg.db.GetServiceByID(ctx, params.ServiceID)
if !serviceExists {
err := fmt.Errorf("No signer with this ID was found")
err := fmt.Errorf("No signer with id %d was found", params.ServiceID)
if err != nil {
return res, err
}
@@ -165,7 +166,7 @@ func (lg *Logic) RevokeServicePair(ctx context.Context, params *cmapi.RevokeServ
case params.ServiceName != "":
serviceExists, serviceDescr, err = lg.db.GetServiceByName(ctx, params.ServiceName)
if !serviceExists {
err := fmt.Errorf("No signer with this common name was found")
err := fmt.Errorf("No signer with name %s was found", params.ServiceName)
if err != nil {
return res, err
}
@@ -202,7 +203,7 @@ func (lg *Logic) UnrevokeServicePair(ctx context.Context, params *cmapi.Unrevoke
case params.ServiceID != 0:
serviceExists, serviceDescr, err = lg.db.GetServiceByID(ctx, params.ServiceID)
if !serviceExists {
err := fmt.Errorf("No signer with this ID was found")
err := fmt.Errorf("No signer with id %d was found", params.ServiceID)
if err != nil {
return res, err
}
@@ -210,7 +211,7 @@ func (lg *Logic) UnrevokeServicePair(ctx context.Context, params *cmapi.Unrevoke
case params.ServiceName != "":
serviceExists, serviceDescr, err = lg.db.GetServiceByName(ctx, params.ServiceName)
if !serviceExists {
err := fmt.Errorf("No signer with this common name was found")
err := fmt.Errorf("No signer with name %s was found", params.ServiceName)
if err != nil {
return res, err
}

View File

@@ -43,7 +43,7 @@ func TestIssuerCreateV0(t *testing.T) {
signerCommonName := "foo.bar"
var signerID int64
var signerCert string
var signerName string
var signerName string
{
createIssuerPairParams := &cmapi.CreateIssuerPairParams{
IssuerCommonName: signerCommonName,
@@ -61,27 +61,27 @@ func TestIssuerCreateV0(t *testing.T) {
signerName = createIssuerPairRes.IssuerName
printObj("signerName", signerName)
signerCertObj, err := cm509.ParseDoubleEncodedCerificate(signerCert)
require.NoError(t, err)
signerCertObj, err := cm509.ParseDoubleEncodedCerificate(signerCert)
require.NoError(t, err)
require.NotNil(t, signerCertObj)
printObj("signerCertObj Subject", signerCertObj.Subject.String())
printObj("signerCertObj Issuer", signerCertObj.Issuer.String())
printObj("signerCertObj Subject", signerCertObj.Subject.String())
printObj("signerCertObj Issuer", signerCertObj.Issuer.String())
}
issuerCommonName := "make.love.not.war"
var issuerID int64
var issuerCert string
var issuerName string
var issuerName string
{
createIssuerPairParams := &cmapi.CreateIssuerPairParams{
IssuerCommonName: issuerCommonName,
SignerID: signerID,
SignerID: signerID,
}
createIssuerPairRes, err := lg.CreateIssuerPair(ctx, createIssuerPairParams)
require.NoError(t, err)
require.NotNil(t, createIssuerPairRes)
issuerID = createIssuerPairRes.IssuerID
printObj("issuerID", issuerID)
printObj("issuerID", issuerID)
issuerCert = createIssuerPairRes.Certificate
printObj("issuerCert", issuerCert)
@@ -89,17 +89,50 @@ func TestIssuerCreateV0(t *testing.T) {
issuerName = createIssuerPairRes.IssuerName
printObj("issuerName", issuerName)
issuerCertObj, err := cm509.ParseDoubleEncodedCerificate(issuerCert)
require.NoError(t, err)
issuerCertObj, err := cm509.ParseDoubleEncodedCerificate(issuerCert)
require.NoError(t, err)
require.NotNil(t, issuerCertObj)
printObj("issuerCertObj Subject", issuerCertObj.Subject.String())
printObj("issuerCertObj Issuer", issuerCertObj.Issuer.String())
printObj("issuerCertObj Subject", issuerCertObj.Subject.String())
printObj("issuerCertObj Issuer", issuerCertObj.Issuer.String())
require.NotEqual(t, issuerCertObj.Subject.String(), issuerCertObj.Issuer.String())
require.NotEqual(t, issuerCertObj.Subject.String(), issuerCertObj.Issuer.String())
}
serviceCommonName := "dont.worry"
var serviceID int64
var serviceCert string
var serviceName string
{
createServicePairParams := &cmapi.CreateServicePairParams{
ServiceCommonName: serviceCommonName,
IssuerID: issuerID,
InetAddresses: []string{"1.1.1.1", "1.1.1.2", "1.1.1.3"},
Hostnames: []string{"dont.worry", "be.happy"},
}
createServicePairRes, err := lg.CreateServicePair(ctx, createServicePairParams)
require.NoError(t, err)
require.NotNil(t, createServicePairRes)
serviceID = createServicePairRes.ServiceID
printObj("serviceID", serviceID)
serviceCert = createServicePairRes.Certificate
printObj("serviceCert", serviceCert)
serviceName = createServicePairRes.ServiceName
printObj("serviceName", serviceName)
serviceCertObj, err := cm509.ParseDoubleEncodedCerificate(serviceCert)
require.NoError(t, err)
require.NotNil(t, serviceCertObj)
printObj("serviceCertObj Subject", serviceCertObj.Subject.String())
printObj("serviceCertObj Service", serviceCertObj.Issuer.String())
printObj("serviceCertObj DNSNames", serviceCertObj.DNSNames)
printObj("serviceCertObj IP addresses", serviceCertObj.IPAddresses)
require.NotEqual(t, serviceCertObj.Subject.String(), serviceCertObj.Issuer.String())
}
}
func XXXTestIssuerCreate(t *testing.T) {
var err error
var lg *logic.Logic
@@ -260,4 +293,3 @@ func XXXTestIssuerCreate(t *testing.T) {
printObj("getServicePairRes", getServicePairRes)
}
}