2 * ============LICENSE_START=======================================================
3 * oom-certservice-k8s-external-provider
4 * ================================================================================
5 * Copyright (C) 2020 Nokia. All rights reserved.
6 * ================================================================================
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
18 * ============LICENSE_END=========================================================
21 package certserviceclient
35 type CertServiceClient interface {
36 GetCertificates(csr []byte, key []byte) (*CertificatesResponse, error)
40 type CertServiceClientImpl struct {
42 certificationUrl string
46 type HTTPClient interface {
47 Do(req *http.Request) (*http.Response, error)
50 type CertificatesResponse struct {
51 CertificateChain []string `json:"certificateChain"`
52 TrustedCertificates []string `json:"trustedCertificates"`
55 type ResponseException struct {
56 ErrorMessage string `json:"errorMessage"`
59 func (client *CertServiceClientImpl) CheckHealth() error {
60 request, err := http.NewRequest("GET", client.healthUrl, nil)
65 response, err := client.httpClient.Do(request)
70 if response.StatusCode != http.StatusOK {
71 return fmt.Errorf("health check retured status code [%d]", response.StatusCode)
77 func (client *CertServiceClientImpl) GetCertificates(csr []byte, key []byte) (*CertificatesResponse, error) {
79 request, err := http.NewRequest("GET", client.certificationUrl, nil)
84 request.Header.Add(CsrHeaderName, base64.StdEncoding.EncodeToString(csr))
85 request.Header.Add(PkHeaderName, base64.StdEncoding.EncodeToString(key))
86 response, err := client.httpClient.Do(request)
91 if response.StatusCode != http.StatusOK {
92 var responseException ResponseException
93 err = json.NewDecoder(response.Body).Decode(&responseException)
94 return nil, fmt.Errorf("CertService API returned status code [%d] and message [%s]",
95 response.StatusCode, responseException.ErrorMessage)
98 var certificatesResponse CertificatesResponse
99 err = json.NewDecoder(response.Body).Decode(&certificatesResponse)
104 return &certificatesResponse, err