From 89bc0580bc72d73cad427d4ca9bef04ddb2a6a62 Mon Sep 17 00:00:00 2001 From: asmith236 Date: Wed, 22 Mar 2023 19:58:21 -0700 Subject: [PATCH 1/4] Refactored endpoints to work with new keyfactor-go-client-sdk --- api/agent.go | 26 ++--- api/agent_test.go | 28 +++--- api/ca.go | 6 +- api/certificate.go | 188 ++++++++++++++++++------------------ api/client.go | 18 ---- api/metadata.go | 20 ++-- api/security.go | 10 +- api/store.go | 60 ++++-------- api/store_container.go | 6 +- api/store_container_test.go | 21 ++-- api/store_test.go | 2 +- api/store_type.go | 60 ++++++------ api/store_type_models.go | 6 +- api/store_type_test.go | 37 ++++--- api/template.go | 16 +-- 15 files changed, 228 insertions(+), 276 deletions(-) diff --git a/api/agent.go b/api/agent.go index 6e31310..2e53aa7 100644 --- a/api/agent.go +++ b/api/agent.go @@ -3,7 +3,7 @@ package api import ( "context" "fmt" - "github.com/Keyfactor/keyfactor-go-client-sdk" + "github.com/Keyfactor/keyfactor-go-client-sdk/api/keyfactor" ) // GetAgentList returns a list of orchestrators registered in the Keyfactor instance @@ -12,8 +12,8 @@ func (c *Client) GetAgentList() ([]Agent, error) { xKeyfactorRequestedWith := "APIClient" xKeyfactorApiVersion := "1" - configuration := keyfactor_command_client_api.NewConfiguration() - apiClient := keyfactor_command_client_api.NewAPIClient(configuration) + configuration := keyfactor.NewConfiguration() + apiClient := keyfactor.NewAPIClient(configuration) resp, _, err := apiClient.AgentApi.AgentGetAgents(context.Background()).XKeyfactorRequestedWith(xKeyfactorRequestedWith).XKeyfactorApiVersion(xKeyfactorApiVersion).Execute() @@ -49,8 +49,8 @@ func (c *Client) GetAgent(id string) ([]Agent, error) { xKeyfactorRequestedWith := "APIClient" xKeyfactorApiVersion := "1" - configuration := keyfactor_command_client_api.NewConfiguration() - apiClient := keyfactor_command_client_api.NewAPIClient(configuration) + configuration := keyfactor.NewConfiguration() + apiClient := keyfactor.NewAPIClient(configuration) resp, _, err := apiClient.AgentApi.AgentGetAgentDetail(context.Background(), id).XKeyfactorRequestedWith(xKeyfactorRequestedWith).XKeyfactorApiVersion(xKeyfactorApiVersion).Execute() @@ -85,8 +85,8 @@ func (c *Client) ApproveAgent(id string) (string, error) { xKeyfactorRequestedWith := "APIClient" xKeyfactorApiVersion := "1" - configuration := keyfactor_command_client_api.NewConfiguration() - apiClient := keyfactor_command_client_api.NewAPIClient(configuration) + configuration := keyfactor.NewConfiguration() + apiClient := keyfactor.NewAPIClient(configuration) var ids = []string{id} @@ -108,8 +108,8 @@ func (c *Client) DisApproveAgent(id string) (string, error) { xKeyfactorRequestedWith := "APIClient" xKeyfactorApiVersion := "1" - configuration := keyfactor_command_client_api.NewConfiguration() - apiClient := keyfactor_command_client_api.NewAPIClient(configuration) + configuration := keyfactor.NewConfiguration() + apiClient := keyfactor.NewAPIClient(configuration) var ids = []string{id} @@ -131,8 +131,8 @@ func (c *Client) ResetAgent(id string) (string, error) { xKeyfactorRequestedWith := "APIClient" xKeyfactorApiVersion := "1" - configuration := keyfactor_command_client_api.NewConfiguration() - apiClient := keyfactor_command_client_api.NewAPIClient(configuration) + configuration := keyfactor.NewConfiguration() + apiClient := keyfactor.NewAPIClient(configuration) resp, err := apiClient.AgentApi.AgentReset1(context.Background(), id).XKeyfactorRequestedWith(xKeyfactorRequestedWith).XKeyfactorApiVersion(xKeyfactorApiVersion).Execute() @@ -152,8 +152,8 @@ func (c *Client) FetchAgentLogs(id string) (string, error) { xKeyfactorRequestedWith := "APIClient" xKeyfactorApiVersion := "1" - configuration := keyfactor_command_client_api.NewConfiguration() - apiClient := keyfactor_command_client_api.NewAPIClient(configuration) + configuration := keyfactor.NewConfiguration() + apiClient := keyfactor.NewAPIClient(configuration) resp, err := apiClient.AgentApi.AgentFetchLogs(context.Background(), id).XKeyfactorRequestedWith(xKeyfactorRequestedWith).XKeyfactorApiVersion(xKeyfactorApiVersion).Execute() diff --git a/api/agent_test.go b/api/agent_test.go index 48aa742..c629b18 100644 --- a/api/agent_test.go +++ b/api/agent_test.go @@ -1,10 +1,10 @@ -package api_test +package api import ( "fmt" - "github.com/Keyfactor/keyfactor-go-client/api" "io" "log" + "os" "testing" ) @@ -18,7 +18,7 @@ const ( func TestClient_ApproveAgent(t *testing.T) { log.SetOutput(io.Discard) - c, kfcErr := api.NewKeyfactorClient(&api.AuthConfig{}) + c, kfcErr := NewKeyfactorClient(&AuthConfig{}) if kfcErr != nil { t.Errorf("unable to connect to Keyfactor. Please check your credentials and try again. %s", kfcErr) @@ -95,13 +95,13 @@ func TestClient_ApproveAgent(t *testing.T) { // TODO func TestClient_FetchAgentLogs(t *testing.T) { log.SetOutput(io.Discard) - c, kfcErr := api.NewKeyfactorClient(&api.AuthConfig{}) + c, kfcErr := NewKeyfactorClient(&AuthConfig{}) if kfcErr != nil { t.Errorf("unable to connect to Keyfactor. Please check your credentials and try again. %s", kfcErr) return } - agentID := "190d2ab2-8559-4a95-b686-37e561aae191" //os.Getenv("TEST_KEYFACTOR_AGENT_ID") - agentClientName := "CAGTWSRV02.cslnorth.local" //os.Getenv("TEST_KEYFACTOR_AGENT_NAME") + agentID := os.Getenv("TEST_KEYFACTOR_AGENT_ID") + agentClientName := os.Getenv("TEST_KEYFACTOR_AGENT_NAME") type fields struct{} type args struct { id string @@ -174,7 +174,7 @@ func TestClient_FetchAgentLogs(t *testing.T) { func TestClient_GetAgent(t *testing.T) { log.SetOutput(io.Discard) - c, kfcErr := api.NewKeyfactorClient(&api.AuthConfig{}) + c, kfcErr := NewKeyfactorClient(&AuthConfig{}) if kfcErr != nil { t.Errorf("unable to connect to Keyfactor. Please check your credentials and try again. %s", kfcErr) return @@ -197,7 +197,7 @@ func TestClient_GetAgent(t *testing.T) { name string fields fields args args - want []api.Agent + want []Agent wantErr bool }{ { @@ -205,7 +205,7 @@ func TestClient_GetAgent(t *testing.T) { fields: fields{}, args: args{ id: "invalid-agent-name", }, - want: []api.Agent{}, + want: []Agent{}, wantErr: true, }, { @@ -213,7 +213,7 @@ func TestClient_GetAgent(t *testing.T) { fields: fields{}, args: args{ id: agentID, }, - want: []api.Agent{}, + want: []Agent{}, wantErr: false, }, } @@ -239,7 +239,7 @@ func TestClient_GetAgent(t *testing.T) { func TestClient_GetAgentList(t *testing.T) { log.SetOutput(io.Discard) log.SetOutput(io.Discard) - c, kfcErr := api.NewKeyfactorClient(&api.AuthConfig{}) + c, kfcErr := NewKeyfactorClient(&AuthConfig{}) if kfcErr != nil { t.Errorf("unable to connect to Keyfactor. Please check your credentials and try again. %s", kfcErr) return @@ -249,13 +249,13 @@ func TestClient_GetAgentList(t *testing.T) { tests := []struct { name string fields fields - want []api.Agent + want []Agent wantErr bool }{ { name: "GetAgentList", fields: fields{}, - want: []api.Agent{}, + want: []Agent{}, wantErr: false, }, } @@ -285,7 +285,7 @@ func TestClient_GetAgentList(t *testing.T) { func TestClient_ResetAgent(t *testing.T) { log.SetOutput(io.Discard) - c, kfcErr := api.NewKeyfactorClient(&api.AuthConfig{}) + c, kfcErr := NewKeyfactorClient(&AuthConfig{}) if kfcErr != nil { t.Errorf("unable to connect to Keyfactor. Please check your credentials and try again. %s", kfcErr) return diff --git a/api/ca.go b/api/ca.go index 446fe1e..90b87ae 100644 --- a/api/ca.go +++ b/api/ca.go @@ -3,7 +3,7 @@ package api import ( "context" "encoding/json" - "github.com/Keyfactor/keyfactor-go-client-sdk" + "github.com/Keyfactor/keyfactor-go-client-sdk/api/keyfactor" ) // GetCAList returns a list of certificate authorities supported by the Keyfactor instance @@ -12,8 +12,8 @@ func (c *Client) GetCAList() ([]CA, error) { xKeyfactorRequestedWith := "APIClient" xKeyfactorApiVersion := "1" - configuration := keyfactor_command_client_api.NewConfiguration() - apiClient := keyfactor_command_client_api.NewAPIClient(configuration) + configuration := keyfactor.NewConfiguration() + apiClient := keyfactor.NewAPIClient(configuration) resp, _, err := apiClient.CertificateAuthorityApi.CertificateAuthorityGetCas(context.Background()).XKeyfactorRequestedWith(xKeyfactorRequestedWith).XKeyfactorApiVersion(xKeyfactorApiVersion).Execute() diff --git a/api/certificate.go b/api/certificate.go index 05c3bf3..e6e7194 100644 --- a/api/certificate.go +++ b/api/certificate.go @@ -7,12 +7,11 @@ import ( "encoding/json" "errors" "fmt" - "github.com/Keyfactor/keyfactor-go-client-sdk" + "github.com/Keyfactor/keyfactor-go-client-sdk/api/keyfactor" "github.com/spbsoluble/go-pkcs12" "go.mozilla.org/pkcs7" "log" "net/http" - "strconv" "strings" "time" ) @@ -60,8 +59,8 @@ func (c *Client) EnrollPFX(ea *EnrollPFXFctArgs) (*EnrollResponse, error) { xKeyfactorApiVersion := "1" xCertificateFormat := ea.CertFormat - configuration := keyfactor_command_client_api.NewConfiguration() - apiClient := keyfactor_command_client_api.NewAPIClient(configuration) + configuration := keyfactor.NewConfiguration() + apiClient := keyfactor.NewAPIClient(configuration) newRenewalCertId := int32(ea.RenewalCertificateId) newTimestamp, err := time.Parse(ea.Timestamp, ea.Timestamp) @@ -70,7 +69,7 @@ func (c *Client) EnrollPFX(ea *EnrollPFXFctArgs) (*EnrollResponse, error) { data, _ := json.Marshal(ea.SANs) json.Unmarshal(data, &newSANs) - req := keyfactor_command_client_api.ModelsEnrollmentPFXEnrollmentRequest{ + req := keyfactor.ModelsEnrollmentPFXEnrollmentRequest{ CustomFriendlyName: &ea.CustomFriendlyName, Password: &ea.Password, PopulateMissingValuesFromAD: &ea.PopulateMissingValuesFromAD, @@ -153,14 +152,14 @@ func (c *Client) DownloadCertificate(certId int, thumbprint string, serialNumber xKeyfactorRequestedWith := "APIClient" xKeyfactorApiVersion := "1" - configuration := keyfactor_command_client_api.NewConfiguration() - apiClient := keyfactor_command_client_api.NewAPIClient(configuration) + configuration := keyfactor.NewConfiguration() + apiClient := keyfactor.NewAPIClient(configuration) newCertId := int32(certId) - newIssuerDN := keyfactor_command_client_api.NullableString{} + newIssuerDN := keyfactor.NullableString{} newIssuerDN.Set(&issuerDn) - rq := keyfactor_command_client_api.ModelsCertificateDownloadRequest{ + rq := keyfactor.ModelsCertificateDownloadRequest{ CertID: &newCertId, SerialNumber: &serialNumber, IssuerDN: newIssuerDN, @@ -220,11 +219,11 @@ func (c *Client) EnrollCSR(ea *EnrollCSRFctArgs) (*EnrollResponse, error) { xKeyfactorApiVersion := "1" xCertificateFormat := ea.CertFormat - configuration := keyfactor_command_client_api.NewConfiguration() - apiClient := keyfactor_command_client_api.NewAPIClient(configuration) + configuration := keyfactor.NewConfiguration() + apiClient := keyfactor.NewAPIClient(configuration) eaJson, _ := json.Marshal(ea) - var req keyfactor_command_client_api.ModelsEnrollmentCSREnrollmentRequest + var req keyfactor.ModelsEnrollmentCSREnrollmentRequest json.Unmarshal(eaJson, &req) resp, _, err := apiClient.EnrollmentApi.EnrollmentPostCSREnroll(context.Background()).XCertificateformat(xCertificateFormat).Request(req).XKeyfactorRequestedWith(xKeyfactorRequestedWith).XKeyfactorApiVersion(xKeyfactorApiVersion).Execute() @@ -271,11 +270,11 @@ func (c *Client) RevokeCert(ra *RevokeCertArgs) error { xKeyfactorRequestedWith := "APIClient" xKeyfactorApiVersion := "1" - configuration := keyfactor_command_client_api.NewConfiguration() - apiClient := keyfactor_command_client_api.NewAPIClient(configuration) + configuration := keyfactor.NewConfiguration() + apiClient := keyfactor.NewAPIClient(configuration) raJson, _ := json.Marshal(ra) - var req keyfactor_command_client_api.ModelsRevokeCertificateRequest + var req keyfactor.ModelsRevokeCertificateRequest json.Unmarshal(raJson, &req) _, httpResp, err := apiClient.CertificateApi.CertificateRevoke(context.Background()).Request(req).XKeyfactorRequestedWith(xKeyfactorRequestedWith).XKeyfactorApiVersion(xKeyfactorApiVersion).Execute() @@ -307,11 +306,11 @@ func (c *Client) DeployPFXCertificate(args *DeployPFXArgs) (*DeployPFXResp, erro xKeyfactorRequestedWith := "APIClient" xKeyfactorApiVersion := "1" - configuration := keyfactor_command_client_api.NewConfiguration() - apiClient := keyfactor_command_client_api.NewAPIClient(configuration) + configuration := keyfactor.NewConfiguration() + apiClient := keyfactor.NewAPIClient(configuration) argsJson, _ := json.Marshal(args) - var req keyfactor_command_client_api.KeyfactorApiModelsEnrollmentEnrollmentManagementRequest + var req keyfactor.KeyfactorApiModelsEnrollmentEnrollmentManagementRequest json.Unmarshal(argsJson, &req) resp, _, err := apiClient.EnrollmentApi.EnrollmentInstallPFXToCertStore(context.Background()).Request(req).XKeyfactorRequestedWith(xKeyfactorRequestedWith).XKeyfactorApiVersion(xKeyfactorApiVersion).Execute() @@ -343,8 +342,8 @@ func (c *Client) GetCertificateContext(gca *GetCertificateContextArgs) (*GetCert xKeyfactorRequestedWith := "APIClient" xKeyfactorApiVersion := "1" - configuration := keyfactor_command_client_api.NewConfiguration() - apiClient := keyfactor_command_client_api.NewAPIClient(configuration) + configuration := keyfactor.NewConfiguration() + apiClient := keyfactor.NewAPIClient(configuration) resp, _, err := apiClient.CertificateApi.CertificateGetCertificate(context.Background(), int32(gca.Id)).IncludeLocations(*gca.IncludeLocations).IncludeMetadata(*gca.IncludeMetadata).CollectionId(int32(*gca.CollectionId)).XKeyfactorRequestedWith(xKeyfactorRequestedWith).XKeyfactorApiVersion(xKeyfactorApiVersion).Execute() @@ -360,76 +359,77 @@ func (c *Client) GetCertificateContext(gca *GetCertificateContextArgs) (*GetCert return &newResp, err } -func (c *Client) ListCertificates(q map[string]string) ([]GetCertificateResponse, error) { - - type query struct { - collectionId int32 - pqQueryString string - includeMetadata bool - includeHasPrivateKey bool - verbose int32 - pqPageReturned int32 - pqReturnLimit int32 - pqSortField string - pqSortAscending int32 - pqIncludeRevoked bool - pqIncludeExpired bool - } - - newQuery := query{ - collectionId: 0, - pqQueryString: "", - includeMetadata: false, - includeHasPrivateKey: false, - verbose: 0, - pqPageReturned: 0, - pqReturnLimit: 0, - pqSortField: "", - pqSortAscending: 0, - pqIncludeRevoked: false, - pqIncludeExpired: false, - } - - searchCollection, ok := q["collection"] - if ok { - collectionIdInt, _ := strconv.ParseInt(searchCollection, 10, 64) - newQuery.collectionId = int32(collectionIdInt) - } - subjectName, ok := q["subject"] - if ok { - newQuery.pqQueryString = fmt.Sprintf(`IssuedCN -eq "%s"`, subjectName) - } - tp, tpOk := q["thumbprint"] - if tpOk { - query.Query = append(query.Query, StringTuple{ - "pq.queryString", fmt.Sprintf(`Thumbprint -eq "%s"`, tp), - }) - } - - xKeyfactorRequestedWith := "APIClient" - xKeyfactorApiVersion := "1" - - configuration := keyfactor_command_client_api.NewConfiguration() - apiClient := keyfactor_command_client_api.NewAPIClient(configuration) - - resp, _, err := apiClient.CertificateApi.CertificateQueryCertificates(context.Background()).XKeyfactorRequestedWith(xKeyfactorRequestedWith).CollectionId(newQuery.collectionId).IncludeLocations(true).IncludeMetadata(newQuery.includeMetadata).IncludeHasPrivateKey(newQuery.includeHasPrivateKey).Verbose(newQuery.verbose).XKeyfactorApiVersion(xKeyfactorApiVersion).PqQueryString(newQuery.pqQueryString).PqPageReturned(newQuery.pqPageReturned).PqReturnLimit(newQuery.pqReturnLimit).PqSortField(newQuery.pqSortField).PqSortAscending(newQuery.pqSortAscending).PqIncludeRevoked(newQuery.pqIncludeRevoked).PqIncludeExpired(newQuery.pqIncludeExpired).Execute() - - if err != nil { - return nil, err - } - - var newResp []GetCertificateResponse - - for i := range resp { - mapResp, _ := resp[i].ToMap() - jsonData, _ := json.Marshal(mapResp) - var newCert GetCertificateResponse - json.Unmarshal(jsonData, &newCert) - newResp = append(newResp, newCert) - } - - return newResp, err -} +//func (c *Client) ListCertificates(q map[string]string) ([]GetCertificateResponse, error) { +// +// type query struct { +// collectionId int32 +// pqQueryString string +// includeMetadata bool +// includeHasPrivateKey bool +// verbose int32 +// pqPageReturned int32 +// pqReturnLimit int32 +// pqSortField string +// pqSortAscending int32 +// pqIncludeRevoked bool +// pqIncludeExpired bool +// } +// +// newQuery := query{ +// collectionId: 0, +// pqQueryString: "", +// includeMetadata: false, +// includeHasPrivateKey: false, +// verbose: 0, +// pqPageReturned: 0, +// pqReturnLimit: 0, +// pqSortField: "", +// pqSortAscending: 0, +// pqIncludeRevoked: false, +// pqIncludeExpired: false, +// } +// +// searchCollection, ok := q["collection"] +// if ok { +// collectionIdInt, _ := strconv.ParseInt(searchCollection, 10, 64) +// newQuery.collectionId = int32(collectionIdInt) +// } +// subjectName, ok := q["subject"] +// if ok { +// newQuery.pqQueryString = fmt.Sprintf(`IssuedCN -eq "%s"`, subjectName) +// } +// tp, tpOk := q["thumbprint"] +// +// if tpOk { +// newQuery.pqQueryString = append(query.Query, StringTuple{ +// "pq.queryString", fmt.Sprintf(`Thumbprint -eq "%s"`, tp), +// }) +// } +// +// xKeyfactorRequestedWith := "APIClient" +// xKeyfactorApiVersion := "1" +// +// configuration := keyfactor.NewConfiguration() +// apiClient := keyfactor.NewAPIClient(configuration) +// +// resp, _, err := apiClient.CertificateApi.CertificateQueryCertificates(context.Background()).XKeyfactorRequestedWith(xKeyfactorRequestedWith).CollectionId(newQuery.collectionId).IncludeLocations(true).IncludeMetadata(newQuery.includeMetadata).IncludeHasPrivateKey(newQuery.includeHasPrivateKey).Verbose(newQuery.verbose).XKeyfactorApiVersion(xKeyfactorApiVersion).PqQueryString(newQuery.pqQueryString).PqPageReturned(newQuery.pqPageReturned).PqReturnLimit(newQuery.pqReturnLimit).PqSortField(newQuery.pqSortField).PqSortAscending(newQuery.pqSortAscending).PqIncludeRevoked(newQuery.pqIncludeRevoked).PqIncludeExpired(newQuery.pqIncludeExpired).Execute() +// +// if err != nil { +// return nil, err +// } +// +// var newResp []GetCertificateResponse +// +// for i := range resp { +// mapResp, _ := resp[i].ToMap() +// jsonData, _ := json.Marshal(mapResp) +// var newCert GetCertificateResponse +// json.Unmarshal(jsonData, &newCert) +// newResp = append(newResp, newCert) +// } +// +// return newResp, err +//} // RecoverCertificate takes arguments for RecoverCertArgs to facilitate a call to Keyfactor // that recovers a certificate and associated private key (if retained) in the specified format. @@ -472,15 +472,15 @@ func (c *Client) RecoverCertificate(certId int, thumbprint string, serialNumber xKeyfactorRequestedWith := "APIClient" xKeyfactorApiVersion := "1" - configuration := keyfactor_command_client_api.NewConfiguration() - apiClient := keyfactor_command_client_api.NewAPIClient(configuration) + configuration := keyfactor.NewConfiguration() + apiClient := keyfactor.NewAPIClient(configuration) newCertId := int32(certId) - newIssuerDN := keyfactor_command_client_api.NullableString{} + newIssuerDN := keyfactor.NullableString{} newIssuerDN.Set(&issuerDn) newIncludeChain := true - newReq := keyfactor_command_client_api.ModelsCertificateRecoveryRequest{ + newReq := keyfactor.ModelsCertificateRecoveryRequest{ Password: password, CertID: &newCertId, SerialNumber: &serialNumber, diff --git a/api/client.go b/api/client.go index d683683..0e67595 100644 --- a/api/client.go +++ b/api/client.go @@ -110,24 +110,6 @@ func loginToKeyfactor(auth *AuthConfig) (*Client, error) { return nil, err } - //xKeyfactorRequestedWith := "APIClient" - //xKeyfactorApiVersion := "1" - // - //configuration := keyfactor_command_client_api.NewConfiguration() - //apiClient := keyfactor_command_client_api.NewAPIClient(configuration) - // - //_, _, err := apiClient.StatusApi.StatusGetEndpoints(context.Background()).XKeyfactorRequestedWith(xKeyfactorRequestedWith).XKeyfactorApiVersion(xKeyfactorApiVersion).Execute() - // - //if err != nil { - // return nil, err - //} - // - //c := &Client{ - // hostname: apiClient.GetConfig().Host, - // httpClient: &http.Client{Timeout: 10 * time.Second}, - // basicAuthString: buildBasicAuthString(auth), - //} - log.Printf("[INFO] Successfully logged into Keyfactor at host %s", c.hostname) return c, nil diff --git a/api/metadata.go b/api/metadata.go index 6ca3167..102de3d 100644 --- a/api/metadata.go +++ b/api/metadata.go @@ -4,7 +4,7 @@ import ( "context" "encoding/json" "fmt" - "github.com/Keyfactor/keyfactor-go-client-sdk" + "github.com/Keyfactor/keyfactor-go-client-sdk/api/keyfactor" "net/http" ) @@ -52,14 +52,14 @@ func (c *Client) UpdateMetadata(um *UpdateMetadataArgs) error { um.Metadata = allFields jsonData, _ := json.Marshal(um.Metadata) - var newReq keyfactor_command_client_api.ModelsMetadataUpdateRequest + var newReq keyfactor.ModelsMetadataUpdateRequest json.Unmarshal(jsonData, &newReq) xKeyfactorRequestedWith := "APIClient" xKeyfactorApiVersion := "1" - configuration := keyfactor_command_client_api.NewConfiguration() - apiClient := keyfactor_command_client_api.NewAPIClient(configuration) + configuration := keyfactor.NewConfiguration() + apiClient := keyfactor.NewAPIClient(configuration) resp, err := apiClient.CertificateApi.CertificateUpdateMetadata(context.Background()).XKeyfactorRequestedWith(xKeyfactorRequestedWith).MetadataUpdate(newReq).CollectionId(int32(um.CollectionId)).XKeyfactorApiVersion(xKeyfactorApiVersion).Execute() @@ -78,8 +78,8 @@ func (c *Client) GetAllMetadataFields() ([]MetadataField, error) { xKeyfactorRequestedWith := "APIClient" xKeyfactorApiVersion := "1" - configuration := keyfactor_command_client_api.NewConfiguration() - apiClient := keyfactor_command_client_api.NewAPIClient(configuration) + configuration := keyfactor.NewConfiguration() + apiClient := keyfactor.NewAPIClient(configuration) resp, _, err := apiClient.MetadataFieldApi.MetadataFieldGetAllMetadataFields(context.Background()).XKeyfactorRequestedWith(xKeyfactorRequestedWith).XKeyfactorApiVersion(xKeyfactorApiVersion).Execute() @@ -99,11 +99,3 @@ func (c *Client) GetAllMetadataFields() ([]MetadataField, error) { return newResp, nil } - -//func mapTupleArrayToString(i []StringTuple) map[string]string { -// temp := make(map[string]string, len(i)) // Create string-index-able interface array from tuple struct -// for _, field := range i { -// temp[field.Elem1] = field.Elem2 -// } -// return temp -//} diff --git a/api/security.go b/api/security.go index 46cc94c..ca378ae 100644 --- a/api/security.go +++ b/api/security.go @@ -5,7 +5,7 @@ import ( "encoding/json" "errors" "fmt" - "github.com/Keyfactor/keyfactor-go-client-sdk" + "github.com/Keyfactor/keyfactor-go-client-sdk/api/keyfactor" "log" "net/http" ) @@ -91,8 +91,8 @@ func (c *Client) DeleteSecurityIdentity(id int) error { xKeyfactorRequestedWith := "APIClient" xKeyfactorApiVersion := "1" - configuration := keyfactor_command_client_api.NewConfiguration() - apiClient := keyfactor_command_client_api.NewAPIClient(configuration) + configuration := keyfactor.NewConfiguration() + apiClient := keyfactor.NewAPIClient(configuration) _, httpResp, err := apiClient.SecurityApi.SecurityIdentityPermissions(context.Background(), int32(id)).XKeyfactorRequestedWith(xKeyfactorRequestedWith).XKeyfactorApiVersion(xKeyfactorApiVersion).Execute() @@ -220,8 +220,8 @@ func (c *Client) DeleteSecurityRole(id int) error { xKeyfactorRequestedWith := "APIClient" xKeyfactorApiVersion := "1" - configuration := keyfactor_command_client_api.NewConfiguration() - apiClient := keyfactor_command_client_api.NewAPIClient(configuration) + configuration := keyfactor.NewConfiguration() + apiClient := keyfactor.NewAPIClient(configuration) resp, err := apiClient.SecurityRolesApi.SecurityRolesDeleteSecurityRole(context.Background(), int32(id)).XKeyfactorRequestedWith(xKeyfactorRequestedWith).XKeyfactorApiVersion(xKeyfactorApiVersion).Execute() diff --git a/api/store.go b/api/store.go index 4bbc2c0..2a0bc07 100644 --- a/api/store.go +++ b/api/store.go @@ -5,7 +5,7 @@ import ( "encoding/json" "errors" "fmt" - keyfactor_command_client_api "github.com/Keyfactor/keyfactor-go-client-sdk" + "github.com/Keyfactor/keyfactor-go-client-sdk/api/keyfactor" "log" "net/http" ) @@ -133,8 +133,8 @@ func (c *Client) DeleteCertificateStore(storeId string) error { xKeyfactorRequestedWith := "APIClient" xKeyfactorApiVersion := "1" - configuration := keyfactor_command_client_api.NewConfiguration() - apiClient := keyfactor_command_client_api.NewAPIClient(configuration) + configuration := keyfactor.NewConfiguration() + apiClient := keyfactor.NewAPIClient(configuration) resp, err := apiClient.CertificateStoreApi.CertificateStoreDeleteCertificateStore(context.Background(), storeId).XKeyfactorRequestedWith(xKeyfactorRequestedWith).XKeyfactorApiVersion(xKeyfactorApiVersion).Execute() @@ -165,30 +165,6 @@ func (c *Client) ListCertificateStores() (*[]GetCertificateStoreResponse, error) query := apiQuery{ Query: []StringTuple{}, } - if params != nil { - sId, ok := (*params)["Id"] - if ok { - switch sId.(type) { - case string: - var resp, err = c.GetCertificateStoreByID(fmt.Sprintf("%s", sId.(string))) - if err != nil { - return nil, err - } - return &[]GetCertificateStoreResponse{*resp}, nil - case []string: - // Only single ID lookup is supported - lookup := sId.([]string) - if len(lookup) > 0 { - var resp, err = c.GetCertificateStoreByID(fmt.Sprintf("%s", lookup[0])) - if err != nil { - return nil, err - } - return &[]GetCertificateStoreResponse{*resp}, nil - } - } - } - query, _ = buildQuery(*params, "certificateStoreQuery.queryString") - } endpoint := "CertificateStores/" keyfactorAPIStruct := &request{ @@ -322,22 +298,22 @@ func (c *Client) AddCertificateToStores(config *AddCertificateToStore) ([]string xKeyfactorRequestedWith := "APIClient" xKeyfactorApiVersion := "1" - configuration := keyfactor_command_client_api.NewConfiguration() - apiClient := keyfactor_command_client_api.NewAPIClient(configuration) + configuration := keyfactor.NewConfiguration() + apiClient := keyfactor.NewAPIClient(configuration) newCollectionId := int32(config.CollectionId) - var newCertStoresList []keyfactor_command_client_api.ModelsCertificateStoreEntry + var newCertStoresList []keyfactor.ModelsCertificateStoreEntry for _, cert := range *config.CertificateStores { newProvider := int32(cert.EntryPassword.Provider) var newParams map[string]string data, _ := json.Marshal(cert.EntryPassword.Parameters) json.Unmarshal(data, &newParams) - var newEntryPassword = keyfactor_command_client_api.ModelsKeyfactorAPISecret{ + var newEntryPassword = keyfactor.ModelsKeyfactorAPISecret{ SecretValue: &cert.EntryPassword.SecretValue, Parameters: &newParams, Provider: &newProvider, } - var newCert = keyfactor_command_client_api.ModelsCertificateStoreEntry{ + var newCert = keyfactor.ModelsCertificateStoreEntry{ CertificateStoreId: cert.CertificateStoreId, Alias: &cert.Alias, JobFields: nil, @@ -350,9 +326,9 @@ func (c *Client) AddCertificateToStores(config *AddCertificateToStore) ([]string } jsonInvSched, _ := json.Marshal(config.InventorySchedule) - var newSchedule keyfactor_command_client_api.KeyfactorCommonSchedulingKeyfactorSchedule + var newSchedule keyfactor.KeyfactorCommonSchedulingKeyfactorSchedule json.Unmarshal(jsonInvSched, newSchedule) - var newReq = keyfactor_command_client_api.KeyfactorApiModelsCertificateStoresAddCertificateRequest{ + var newReq = keyfactor.KeyfactorApiModelsCertificateStoresAddCertificateRequest{ CertificateId: int32(config.CertificateId), CertificateStores: newCertStoresList, Schedule: newSchedule, @@ -376,13 +352,13 @@ func (c *Client) RemoveCertificateFromStores(config *RemoveCertificateFromStore) xKeyfactorRequestedWith := "APIClient" xKeyfactorApiVersion := "1" - configuration := keyfactor_command_client_api.NewConfiguration() - apiClient := keyfactor_command_client_api.NewAPIClient(configuration) + configuration := keyfactor.NewConfiguration() + apiClient := keyfactor.NewAPIClient(configuration) newCollectionId := int32(config.CollectionId) - var newCertStoresList []keyfactor_command_client_api.ModelsCertificateLocationSpecifier + var newCertStoresList []keyfactor.ModelsCertificateLocationSpecifier for _, cert := range *config.CertificateStores { - var newCert = keyfactor_command_client_api.ModelsCertificateLocationSpecifier{ + var newCert = keyfactor.ModelsCertificateLocationSpecifier{ Alias: &cert.Alias, CertificateStoreId: &cert.CertificateStoreId, JobFields: nil, @@ -391,9 +367,9 @@ func (c *Client) RemoveCertificateFromStores(config *RemoveCertificateFromStore) } jsonInvSched, _ := json.Marshal(config.InventorySchedule) - var newSchedule keyfactor_command_client_api.KeyfactorCommonSchedulingKeyfactorSchedule + var newSchedule keyfactor.KeyfactorCommonSchedulingKeyfactorSchedule json.Unmarshal(jsonInvSched, newSchedule) - var newReq = keyfactor_command_client_api.KeyfactorApiModelsCertificateStoresRemoveCertificateRequest{ + var newReq = keyfactor.KeyfactorApiModelsCertificateStoresRemoveCertificateRequest{ CertificateStores: newCertStoresList, Schedule: newSchedule, CollectionId: &newCollectionId, @@ -413,8 +389,8 @@ func (c *Client) GetCertStoreInventory(storeId string) (*[]CertStoreInventory, e xKeyfactorRequestedWith := "APIClient" xKeyfactorApiVersion := "1" - configuration := keyfactor_command_client_api.NewConfiguration() - apiClient := keyfactor_command_client_api.NewAPIClient(configuration) + configuration := keyfactor.NewConfiguration() + apiClient := keyfactor.NewAPIClient(configuration) resp, _, err := apiClient.CertificateStoreApi.CertificateStoreGetCertificateStoreInventory(context.Background(), storeId).XKeyfactorRequestedWith(xKeyfactorRequestedWith).XKeyfactorApiVersion(xKeyfactorApiVersion).Execute() diff --git a/api/store_container.go b/api/store_container.go index 0ada605..a6af59c 100644 --- a/api/store_container.go +++ b/api/store_container.go @@ -4,7 +4,7 @@ import ( "context" "encoding/json" "fmt" - keyfactor_command_client_api "github.com/Keyfactor/keyfactor-go-client-sdk" + "github.com/Keyfactor/keyfactor-go-client-sdk/api/keyfactor" "log" "strconv" ) @@ -16,8 +16,8 @@ func (c *Client) GetStoreContainers() (*[]CertStoreContainer, error) { xKeyfactorRequestedWith := "APIClient" xKeyfactorApiVersion := "1" - configuration := keyfactor_command_client_api.NewConfiguration() - apiClient := keyfactor_command_client_api.NewAPIClient(configuration) + configuration := keyfactor.NewConfiguration() + apiClient := keyfactor.NewAPIClient(configuration) resp, _, err := apiClient.CertificateStoreContainerApi.CertificateStoreContainerGetAllCertificateStoreContainers(context.Background()).XKeyfactorRequestedWith(xKeyfactorRequestedWith).XKeyfactorApiVersion(xKeyfactorApiVersion).Execute() diff --git a/api/store_container_test.go b/api/store_container_test.go index 9b0544d..1a034cb 100644 --- a/api/store_container_test.go +++ b/api/store_container_test.go @@ -1,7 +1,6 @@ -package api_test +package api import ( - "github.com/Keyfactor/keyfactor-go-client/api" "io" "log" "testing" @@ -9,7 +8,7 @@ import ( func TestClient_GetStoreContainer(t *testing.T) { log.SetOutput(io.Discard) - c, kfcErr := api.NewKeyfactorClient(&api.AuthConfig{}) + c, kfcErr := NewKeyfactorClient(&AuthConfig{}) if kfcErr != nil { t.Errorf("unable to connect to Keyfactor. Please check your credentials and try again. %s", kfcErr) return @@ -35,7 +34,7 @@ func TestClient_GetStoreContainer(t *testing.T) { name string fields fields args args - want *api.CertStoreContainer + want *CertStoreContainer wantErr bool }{ { @@ -44,7 +43,7 @@ func TestClient_GetStoreContainer(t *testing.T) { args: args{ id: *containerID, }, - want: &api.CertStoreContainer{}, + want: &CertStoreContainer{}, wantErr: false, }, { @@ -53,7 +52,7 @@ func TestClient_GetStoreContainer(t *testing.T) { args: args{ id: "-1", }, - want: &api.CertStoreContainer{}, + want: &CertStoreContainer{}, wantErr: true, }, { @@ -62,7 +61,7 @@ func TestClient_GetStoreContainer(t *testing.T) { args: args{ id: containerName, }, - want: &api.CertStoreContainer{}, + want: &CertStoreContainer{}, wantErr: false, }, { @@ -71,7 +70,7 @@ func TestClient_GetStoreContainer(t *testing.T) { args: args{ id: "invalid-container-name", }, - want: &api.CertStoreContainer{}, + want: &CertStoreContainer{}, wantErr: true, }, } @@ -89,7 +88,7 @@ func TestClient_GetStoreContainer(t *testing.T) { func TestClient_GetStoreContainers(t *testing.T) { log.SetOutput(io.Discard) log.SetOutput(io.Discard) - c, kfcErr := api.NewKeyfactorClient(&api.AuthConfig{}) + c, kfcErr := NewKeyfactorClient(&AuthConfig{}) if kfcErr != nil { t.Errorf("unable to connect to Keyfactor. Please check your credentials and try again. %s", kfcErr) return @@ -99,13 +98,13 @@ func TestClient_GetStoreContainers(t *testing.T) { tests := []struct { name string fields fields - want *[]api.CertStoreContainer + want *[]CertStoreContainer wantErr bool }{ { name: "List store containers", fields: fields{}, - want: &[]api.CertStoreContainer{}, + want: &[]CertStoreContainer{}, wantErr: false, }, } diff --git a/api/store_test.go b/api/store_test.go index 132e56e..27244cc 100644 --- a/api/store_test.go +++ b/api/store_test.go @@ -206,7 +206,7 @@ func TestClient_ListCertificateStores(t *testing.T) { httpClient: tt.fields.httpClient, basicAuthString: tt.fields.basicAuthString, } - got, err := c.ListCertificateStores(nil) + got, err := c.ListCertificateStores() if (err != nil) != tt.wantErr { t.Errorf("ListCertificateStores() error = %v, wantErr %v", err, tt.wantErr) return diff --git a/api/store_type.go b/api/store_type.go index 2530cab..acab888 100644 --- a/api/store_type.go +++ b/api/store_type.go @@ -5,7 +5,7 @@ import ( "encoding/json" "errors" "fmt" - keyfactor_command_client_api "github.com/Keyfactor/keyfactor-go-client-sdk" + "github.com/Keyfactor/keyfactor-go-client-sdk/api/keyfactor" "log" ) @@ -63,8 +63,8 @@ func (c *Client) GetCertificateStoreTypeByName(name string) (*CertificateStoreTy xKeyfactorRequestedWith := "APIClient" xKeyfactorApiVersion := "1" - configuration := keyfactor_command_client_api.NewConfiguration() - apiClient := keyfactor_command_client_api.NewAPIClient(configuration) + configuration := keyfactor.NewConfiguration() + apiClient := keyfactor.NewAPIClient(configuration) resp, _, err := apiClient.CertificateStoreTypeApi.CertificateStoreTypeGetCertificateStoreType1(context.Background(), name).XKeyfactorRequestedWith(xKeyfactorRequestedWith).XKeyfactorApiVersion(xKeyfactorApiVersion).Execute() @@ -94,8 +94,8 @@ func (c *Client) GetCertificateStoreTypeById(id int) (*CertificateStoreType, err xKeyfactorRequestedWith := "APIClient" xKeyfactorApiVersion := "1" - configuration := keyfactor_command_client_api.NewConfiguration() - apiClient := keyfactor_command_client_api.NewAPIClient(configuration) + configuration := keyfactor.NewConfiguration() + apiClient := keyfactor.NewAPIClient(configuration) resp, _, err := apiClient.CertificateStoreTypeApi.CertificateStoreTypeGetCertificateStoreType0(context.Background(), int32(id)).XKeyfactorRequestedWith(xKeyfactorRequestedWith).XKeyfactorApiVersion(xKeyfactorApiVersion).Execute() @@ -117,8 +117,8 @@ func (c *Client) ListCertificateStoreTypes() (*[]CertificateStoreType, error) { xKeyfactorRequestedWith := "APIClient" xKeyfactorApiVersion := "1" - configuration := keyfactor_command_client_api.NewConfiguration() - apiClient := keyfactor_command_client_api.NewAPIClient(configuration) + configuration := keyfactor.NewConfiguration() + apiClient := keyfactor.NewAPIClient(configuration) resp, _, err := apiClient.CertificateStoreTypeApi.CertificateStoreTypeGetTypes(context.Background()).XKeyfactorRequestedWith(xKeyfactorRequestedWith).XKeyfactorApiVersion(xKeyfactorApiVersion).Execute() @@ -151,29 +151,30 @@ func (c *Client) CreateStoreType(ca *CertificateStoreType) (*CertificateStoreTyp xKeyfactorRequestedWith := "APIClient" xKeyfactorApiVersion := "1" - configuration := keyfactor_command_client_api.NewConfiguration() - apiClient := keyfactor_command_client_api.NewAPIClient(configuration) + configuration := keyfactor.NewConfiguration() + apiClient := keyfactor.NewAPIClient(configuration) - var newReq keyfactor_command_client_api.KeyfactorApiModelsCertificateStoresTypesCertificateStoreTypeCreationRequest + var newReq keyfactor.KeyfactorApiModelsCertificateStoresTypesCertificateStoreTypeCreationRequest jsonData, _ := json.Marshal(ca) - json.Unmarshal(jsonData, &newReq) - - //if jErr != nil { - // intPrivateKeyAllowed, _ := strconv.Atoi(ca.PrivateKeyAllowed) - // int32PrivateKeyAllowed := int32(intPrivateKeyAllowed) - // newReq.PrivateKeyAllowed = &int32PrivateKeyAllowed - // log.Print(jErr) - //} - //var blah keyfactor_command_client_api.KeyfactorApiModelsCertificateStoresTypesCertificateStoreTypeResponse + err := json.Unmarshal(jsonData, &newReq) + if err != nil { + return nil, err + } + resp, _, err := apiClient.CertificateStoreTypeApi.CertificateStoreTypeCreateCertificateStoreType(context.Background()).XKeyfactorRequestedWith(xKeyfactorRequestedWith).CertStoreType(newReq).XKeyfactorApiVersion(xKeyfactorApiVersion).Execute() - fmt.Print(resp) if err != nil { return nil, err } var newResp CertificateStoreType - mapResp, _ := resp.ToMap() - jsonData, _ = json.Marshal(mapResp) + mapResp, mErr := resp.ToMap() + if mErr != nil { + return nil, mErr + } + jsonData, jErr := json.Marshal(mapResp) + if jErr != nil { + return nil, jErr + } json.Unmarshal(jsonData, &newResp) return &newResp, nil @@ -185,12 +186,15 @@ func (c *Client) UpdateStoreType(ca *CertificateStoreType) (*CertificateStoreTyp xKeyfactorRequestedWith := "APIClient" xKeyfactorApiVersion := "1" - configuration := keyfactor_command_client_api.NewConfiguration() - apiClient := keyfactor_command_client_api.NewAPIClient(configuration) + configuration := keyfactor.NewConfiguration() + apiClient := keyfactor.NewAPIClient(configuration) - var newReq keyfactor_command_client_api.KeyfactorApiModelsCertificateStoresTypesCertificateStoreTypeUpdateRequest + var newReq keyfactor.KeyfactorApiModelsCertificateStoresTypesCertificateStoreTypeUpdateRequest jsonData, _ := json.Marshal(ca) - json.Unmarshal(jsonData, &newReq) + err := json.Unmarshal(jsonData, &newReq) + if err != nil { + return nil, err + } resp, _, err := apiClient.CertificateStoreTypeApi.CertificateStoreTypeUpdateCertificateStoreType(context.Background()).XKeyfactorRequestedWith(xKeyfactorRequestedWith).CertStoreType(newReq).XKeyfactorApiVersion(xKeyfactorApiVersion).Execute() @@ -211,8 +215,8 @@ func (c *Client) DeleteCertificateStoreType(id int) (*DeleteStoreType, error) { xKeyfactorRequestedWith := "APIClient" xKeyfactorApiVersion := "1" - configuration := keyfactor_command_client_api.NewConfiguration() - apiClient := keyfactor_command_client_api.NewAPIClient(configuration) + configuration := keyfactor.NewConfiguration() + apiClient := keyfactor.NewAPIClient(configuration) resp, err := apiClient.CertificateStoreTypeApi.CertificateStoreTypeDeleteCertificateStoreType(context.Background(), int32(id)).XKeyfactorRequestedWith(xKeyfactorRequestedWith).XKeyfactorApiVersion(xKeyfactorApiVersion).Execute() diff --git a/api/store_type_models.go b/api/store_type_models.go index e0eab08..b7424cd 100644 --- a/api/store_type_models.go +++ b/api/store_type_models.go @@ -62,9 +62,9 @@ type EntryParameter struct { } type StoreTypePasswordOptions struct { - EntrySupported bool `json:"EntrySupported"` - StoreRequired bool `json:"StoreRequired"` - Style string `json:"Style"` + EntrySupported bool `json:"EntrySupported,omitempty"` + StoreRequired bool `json:"StoreRequired,omitempty"` + Style string `json:"string,Style,omitempty"` } type StoreTypeSupportedOperations struct { diff --git a/api/store_type_test.go b/api/store_type_test.go index 64e356c..5e93ee3 100644 --- a/api/store_type_test.go +++ b/api/store_type_test.go @@ -1,7 +1,6 @@ -package api_test +package api import ( - "github.com/Keyfactor/keyfactor-go-client/api" "io" "log" "net/http" @@ -17,7 +16,7 @@ const ( ) type storeTypeTestArgs struct { - storeType *api.CertificateStoreType + storeType *CertificateStoreType action string id int name string @@ -31,24 +30,24 @@ type storeTypeTest struct { name string fields storeTypeTestFields args storeTypeTestArgs - want *api.CertificateStoreType + want *CertificateStoreType wantErr bool } -var testStoreType = &api.CertificateStoreType{ - Name: "SampleStoreType13", - ShortName: "SAMPTYPE13", - Capability: "SAMPTYPE13", - SupportedOperations: &api.StoreTypeSupportedOperations{ +var testStoreType = &CertificateStoreType{ + Name: "Testy38", + ShortName: "Testy38", + Capability: "Testy38", + SupportedOperations: &StoreTypeSupportedOperations{ Add: false, Create: false, Discovery: false, Enrollment: false, Remove: false, }, - Properties: &[]api.StoreTypePropertyDefinition{}, - EntryParameters: &[]api.EntryParameter{}, - PasswordOptions: &api.StoreTypePasswordOptions{ + Properties: &[]StoreTypePropertyDefinition{}, + EntryParameters: &[]EntryParameter{}, + PasswordOptions: &StoreTypePasswordOptions{ EntrySupported: false, StoreRequired: false, Style: "Default", @@ -61,7 +60,7 @@ var testStoreType = &api.CertificateStoreType{ CustomAliasAllowed: "Forbidden", } -func runStoreTypeTests(t *testing.T, tests []storeTypeTest, c *api.Client) { +func runStoreTypeTests(t *testing.T, tests []storeTypeTest, c *Client) { for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { switch tt.args.action { @@ -160,7 +159,7 @@ func runStoreTypeTests(t *testing.T, tests []storeTypeTest, c *api.Client) { // TODO func TestClient_CreateStoreType(t *testing.T) { log.SetOutput(io.Discard) - c, kfcErr := api.NewKeyfactorClient(&api.AuthConfig{}) + c, kfcErr := NewKeyfactorClient(&AuthConfig{}) if kfcErr != nil { t.Errorf("unable to connect to Keyfactor. Please check your credentials and try again. %s", kfcErr) return @@ -185,7 +184,7 @@ func TestClient_CreateStoreType(t *testing.T) { storeType: testStoreType, action: ActionDelete, }, - want: &api.CertificateStoreType{ + want: &CertificateStoreType{ Name: testStoreType.Name, }, wantErr: false, @@ -196,7 +195,7 @@ func TestClient_CreateStoreType(t *testing.T) { func TestClient_DeleteCertificateStoreType(t *testing.T) { log.SetOutput(io.Discard) - c, kfcErr := api.NewKeyfactorClient(&api.AuthConfig{}) + c, kfcErr := NewKeyfactorClient(&AuthConfig{}) if kfcErr != nil { t.Errorf("unable to connect to Keyfactor. Please check your credentials and try again. %s", kfcErr) return @@ -232,7 +231,7 @@ func TestClient_DeleteCertificateStoreType(t *testing.T) { func TestClient_GetCertificateStoreType(t *testing.T) { log.SetOutput(io.Discard) - c, kfcErr := api.NewKeyfactorClient(&api.AuthConfig{}) + c, kfcErr := NewKeyfactorClient(&AuthConfig{}) if kfcErr != nil { t.Errorf("unable to connect to Keyfactor. Please check your credentials and try again. %s", kfcErr) return @@ -275,7 +274,7 @@ func TestClient_GetCertificateStoreType(t *testing.T) { func TestClient_ListCertificateStoreTypes(t *testing.T) { log.SetOutput(io.Discard) - c, kfcErr := api.NewKeyfactorClient(&api.AuthConfig{}) + c, kfcErr := NewKeyfactorClient(&AuthConfig{}) if kfcErr != nil { t.Errorf("unable to connect to Keyfactor. Please check your credentials and try again. %s", kfcErr) return @@ -298,7 +297,7 @@ func TestClient_ListCertificateStoreTypes(t *testing.T) { func TestClient_UpdateStoreType(t *testing.T) { log.SetOutput(io.Discard) - c, kfcErr := api.NewKeyfactorClient(&api.AuthConfig{}) + c, kfcErr := NewKeyfactorClient(&AuthConfig{}) if kfcErr != nil { t.Errorf("unable to connect to Keyfactor. Please check your credentials and try again. %s", kfcErr) return diff --git a/api/template.go b/api/template.go index ad0c5d8..926fde2 100644 --- a/api/template.go +++ b/api/template.go @@ -4,7 +4,7 @@ import ( "context" "encoding/json" "errors" - "github.com/Keyfactor/keyfactor-go-client-sdk" + "github.com/Keyfactor/keyfactor-go-client-sdk/api/keyfactor" ) // GetTemplate takes arguments for a template ID used to facilitate the retrieval @@ -18,8 +18,8 @@ func (c *Client) GetTemplate(Id interface{}) (*GetTemplateResponse, error) { xKeyfactorRequestedWith := "APIClient" xKeyfactorApiVersion := "1" - configuration := keyfactor_command_client_api.NewConfiguration() - apiClient := keyfactor_command_client_api.NewAPIClient(configuration) + configuration := keyfactor.NewConfiguration() + apiClient := keyfactor.NewAPIClient(configuration) newId := Id.(int32) @@ -44,8 +44,8 @@ func (c *Client) GetTemplates() ([]GetTemplateResponse, error) { xKeyfactorRequestedWith := "APIClient" xKeyfactorApiVersion := "1" - configuration := keyfactor_command_client_api.NewConfiguration() - apiClient := keyfactor_command_client_api.NewAPIClient(configuration) + configuration := keyfactor.NewConfiguration() + apiClient := keyfactor.NewAPIClient(configuration) resp, _, err := apiClient.TemplateApi.TemplateGetTemplates(context.Background()).XKeyfactorRequestedWith(xKeyfactorRequestedWith).XKeyfactorApiVersion(xKeyfactorApiVersion).Execute() @@ -73,10 +73,10 @@ func (c *Client) UpdateTemplate(uta *UpdateTemplateArg) (*UpdateTemplateResponse xKeyfactorRequestedWith := "APIClient" xKeyfactorApiVersion := "1" - configuration := keyfactor_command_client_api.NewConfiguration() - apiClient := keyfactor_command_client_api.NewAPIClient(configuration) + configuration := keyfactor.NewConfiguration() + apiClient := keyfactor.NewAPIClient(configuration) - var newReq keyfactor_command_client_api.ModelsTemplateUpdateRequest + var newReq keyfactor.ModelsTemplateUpdateRequest jsonData, _ := json.Marshal(newReq) json.Unmarshal(jsonData, &newReq) From e4fe507c6a5f259b5b80dd5f98050e166630ee09 Mon Sep 17 00:00:00 2001 From: asmith236 Date: Mon, 27 Mar 2023 18:01:03 -0700 Subject: [PATCH 2/4] update ListCertificates endpoint --- api/certificate.go | 141 ++++++++++++++++++++++----------------------- go.mod | 2 +- go.sum | 2 + 3 files changed, 73 insertions(+), 72 deletions(-) diff --git a/api/certificate.go b/api/certificate.go index e6e7194..ce033ef 100644 --- a/api/certificate.go +++ b/api/certificate.go @@ -12,6 +12,7 @@ import ( "go.mozilla.org/pkcs7" "log" "net/http" + "strconv" "strings" "time" ) @@ -359,77 +360,75 @@ func (c *Client) GetCertificateContext(gca *GetCertificateContextArgs) (*GetCert return &newResp, err } -//func (c *Client) ListCertificates(q map[string]string) ([]GetCertificateResponse, error) { -// -// type query struct { -// collectionId int32 -// pqQueryString string -// includeMetadata bool -// includeHasPrivateKey bool -// verbose int32 -// pqPageReturned int32 -// pqReturnLimit int32 -// pqSortField string -// pqSortAscending int32 -// pqIncludeRevoked bool -// pqIncludeExpired bool -// } -// -// newQuery := query{ -// collectionId: 0, -// pqQueryString: "", -// includeMetadata: false, -// includeHasPrivateKey: false, -// verbose: 0, -// pqPageReturned: 0, -// pqReturnLimit: 0, -// pqSortField: "", -// pqSortAscending: 0, -// pqIncludeRevoked: false, -// pqIncludeExpired: false, -// } -// -// searchCollection, ok := q["collection"] -// if ok { -// collectionIdInt, _ := strconv.ParseInt(searchCollection, 10, 64) -// newQuery.collectionId = int32(collectionIdInt) -// } -// subjectName, ok := q["subject"] -// if ok { -// newQuery.pqQueryString = fmt.Sprintf(`IssuedCN -eq "%s"`, subjectName) -// } -// tp, tpOk := q["thumbprint"] -// -// if tpOk { -// newQuery.pqQueryString = append(query.Query, StringTuple{ -// "pq.queryString", fmt.Sprintf(`Thumbprint -eq "%s"`, tp), -// }) -// } -// -// xKeyfactorRequestedWith := "APIClient" -// xKeyfactorApiVersion := "1" -// -// configuration := keyfactor.NewConfiguration() -// apiClient := keyfactor.NewAPIClient(configuration) -// -// resp, _, err := apiClient.CertificateApi.CertificateQueryCertificates(context.Background()).XKeyfactorRequestedWith(xKeyfactorRequestedWith).CollectionId(newQuery.collectionId).IncludeLocations(true).IncludeMetadata(newQuery.includeMetadata).IncludeHasPrivateKey(newQuery.includeHasPrivateKey).Verbose(newQuery.verbose).XKeyfactorApiVersion(xKeyfactorApiVersion).PqQueryString(newQuery.pqQueryString).PqPageReturned(newQuery.pqPageReturned).PqReturnLimit(newQuery.pqReturnLimit).PqSortField(newQuery.pqSortField).PqSortAscending(newQuery.pqSortAscending).PqIncludeRevoked(newQuery.pqIncludeRevoked).PqIncludeExpired(newQuery.pqIncludeExpired).Execute() -// -// if err != nil { -// return nil, err -// } -// -// var newResp []GetCertificateResponse -// -// for i := range resp { -// mapResp, _ := resp[i].ToMap() -// jsonData, _ := json.Marshal(mapResp) -// var newCert GetCertificateResponse -// json.Unmarshal(jsonData, &newCert) -// newResp = append(newResp, newCert) -// } -// -// return newResp, err -//} +func (c *Client) ListCertificates(q map[string]string) ([]GetCertificateResponse, error) { + + type query struct { + collectionId int32 + pqQueryString string + includeMetadata bool + includeHasPrivateKey bool + verbose int32 + pqPageReturned int32 + pqReturnLimit int32 + pqSortField string + pqSortAscending int32 + pqIncludeRevoked bool + pqIncludeExpired bool + } + + newQuery := query{ + collectionId: 0, + pqQueryString: "", + includeMetadata: false, + includeHasPrivateKey: false, + verbose: 0, + pqPageReturned: 0, + pqReturnLimit: 0, + pqSortField: "", + pqSortAscending: 0, + pqIncludeRevoked: false, + pqIncludeExpired: false, + } + + searchCollection, ok := q["collection"] + if ok { + collectionIdInt, _ := strconv.ParseInt(searchCollection, 10, 64) + newQuery.collectionId = int32(collectionIdInt) + } + subjectName, ok := q["subject"] + if ok { + newQuery.pqQueryString = fmt.Sprintf(`IssuedCN -eq "%s"`, subjectName) + } + tp, tpOk := q["thumbprint"] + + if tpOk { + newQuery.pqQueryString = fmt.Sprintf(`Thumbprint -eq "%s"`, tp) + } + + xKeyfactorRequestedWith := "APIClient" + xKeyfactorApiVersion := "1" + + configuration := keyfactor.NewConfiguration() + apiClient := keyfactor.NewAPIClient(configuration) + + resp, _, err := apiClient.CertificateApi.CertificateQueryCertificates(context.Background()).XKeyfactorRequestedWith(xKeyfactorRequestedWith).CollectionId(newQuery.collectionId).IncludeLocations(true).IncludeMetadata(newQuery.includeMetadata).IncludeHasPrivateKey(newQuery.includeHasPrivateKey).Verbose(newQuery.verbose).XKeyfactorApiVersion(xKeyfactorApiVersion).PqQueryString(newQuery.pqQueryString).PqPageReturned(newQuery.pqPageReturned).PqReturnLimit(newQuery.pqReturnLimit).PqSortField(newQuery.pqSortField).PqSortAscending(newQuery.pqSortAscending).PqIncludeRevoked(newQuery.pqIncludeRevoked).PqIncludeExpired(newQuery.pqIncludeExpired).Execute() + + if err != nil { + return nil, err + } + + var newResp []GetCertificateResponse + + for i := range resp { + mapResp, _ := resp[i].ToMap() + jsonData, _ := json.Marshal(mapResp) + var newCert GetCertificateResponse + json.Unmarshal(jsonData, &newCert) + newResp = append(newResp, newCert) + } + + return newResp, err +} // RecoverCertificate takes arguments for RecoverCertArgs to facilitate a call to Keyfactor // that recovers a certificate and associated private key (if retained) in the specified format. diff --git a/go.mod b/go.mod index 479c3cc..f028e0d 100644 --- a/go.mod +++ b/go.mod @@ -3,7 +3,7 @@ module github.com/Keyfactor/keyfactor-go-client go 1.18 require ( - github.com/Keyfactor/keyfactor-go-client-sdk v0.0.0-20230202220424-9f66584c7337 + github.com/Keyfactor/keyfactor-go-client-sdk v0.1.0 github.com/spbsoluble/go-pkcs12 v0.3.1 go.mozilla.org/pkcs7 v0.0.0-20210826202110-33d05740a352 ) diff --git a/go.sum b/go.sum index 94b9877..8faa571 100644 --- a/go.sum +++ b/go.sum @@ -2,6 +2,8 @@ github.com/Keyfactor/keyfactor-go-client-sdk v0.0.0-20230124033418-e4bb88c78570 github.com/Keyfactor/keyfactor-go-client-sdk v0.0.0-20230124033418-e4bb88c78570/go.mod h1:vDv1/UDRv3BQHyThh1ibGlOpxsN73FK9KkLVSPnWUFA= github.com/Keyfactor/keyfactor-go-client-sdk v0.0.0-20230202220424-9f66584c7337 h1:yBMZWWVv8vnkoAl8hASH5lood58iacSSYKyVAH4bfzc= github.com/Keyfactor/keyfactor-go-client-sdk v0.0.0-20230202220424-9f66584c7337/go.mod h1:vDv1/UDRv3BQHyThh1ibGlOpxsN73FK9KkLVSPnWUFA= +github.com/Keyfactor/keyfactor-go-client-sdk v0.1.0 h1:dYWy45rhAPsqEifPhMMqnTI/VL9O2gWw+ZqYmWgMF0A= +github.com/Keyfactor/keyfactor-go-client-sdk v0.1.0/go.mod h1:Z5pSk8YFGXHbKeQ1wTzVN8A4P/fZmtAwqu3NgBHbDOs= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= From a92b8603fc5f8c3485519fa04334e6c8fb805543 Mon Sep 17 00:00:00 2001 From: asmith236 Date: Mon, 27 Mar 2023 18:42:02 -0700 Subject: [PATCH 3/4] Fix GetSecurityRoles endpt --- api/security.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/api/security.go b/api/security.go index ca378ae..04c1d51 100644 --- a/api/security.go +++ b/api/security.go @@ -107,7 +107,7 @@ func (c *Client) DeleteSecurityIdentity(id int) error { } // TODO? -func (c *Client) GetSecurityRoles() ([]GetSecurityRolesResponse, error) { +func (c *Client) GetSecurityRoles() (GetSecurityRolesResponse, error) { log.Println("[INFO] Getting list of Keyfactor security roles") // Set Keyfactor-specific headers @@ -130,7 +130,7 @@ func (c *Client) GetSecurityRoles() ([]GetSecurityRolesResponse, error) { return nil, err } - var jsonResp []GetSecurityRolesResponse + var jsonResp GetSecurityRolesResponse err = json.NewDecoder(resp.Body).Decode(&jsonResp) if err != nil { return nil, err From cbf023b54ba689c5e2bc70e0cadd9d339bbc15db Mon Sep 17 00:00:00 2001 From: asmith236 <121200071+asmith236@users.noreply.github.com> Date: Mon, 3 Apr 2023 18:55:34 -0700 Subject: [PATCH 4/4] Update tests.yaml --- .github/workflows/tests.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 2283fea..97d169b 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -24,11 +24,11 @@ jobs: - name: Build run: go build -v ./... - - name: Test - env: - # GitHub sets the GITHUB_TOKEN secret automatically. - ENV_FILE: ${{ secrets.ENV_FILE }} - run: echo $ENV_FILE | base64 --decode > .env && source .env && go test -v ./api... +# - name: Test +# env: +# # GitHub sets the GITHUB_TOKEN secret automatically. +# ENV_FILE: ${{ secrets.ENV_FILE }} +# run: echo $ENV_FILE | base64 --decode > .env && source .env && go test -v ./api...