summaryrefslogtreecommitdiffstats
path: root/src/orchestrator/internal/auth/auth.go
diff options
context:
space:
mode:
authorRitu Sood <ritu.sood@intel.com>2020-01-31 23:29:51 -0800
committerSrivahni Chivukula <srivahni.chivukula@intel.com>2020-02-14 03:54:11 -0800
commita75d489bbf87712371d67dce0753577bdacce0c3 (patch)
treedee646769aa432c814abd86645af612e714640be /src/orchestrator/internal/auth/auth.go
parentc06be6458e9985bd7ac0b25fab03d9c8605f6c4a (diff)
Restructure code and create module library
Restructures and moves code to make it aligned with the current design. https://wiki.onap.org/display/DW/Multi+Cluster+Application+Scheduler examples/example_module.go shows how to import and use modules from this package. Patch#2 Updated example Issue-ID: MULTICLOUD-871 Signed-off-by: Ritu Sood <ritu.sood@intel.com> Change-Id: Ia1e9802a946a07dcca8f79f0e2250933ab3efa66
Diffstat (limited to 'src/orchestrator/internal/auth/auth.go')
-rw-r--r--src/orchestrator/internal/auth/auth.go107
1 files changed, 0 insertions, 107 deletions
diff --git a/src/orchestrator/internal/auth/auth.go b/src/orchestrator/internal/auth/auth.go
deleted file mode 100644
index 3da8f2af..00000000
--- a/src/orchestrator/internal/auth/auth.go
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
- * Copyright 2018 Intel Corporation, Inc
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package auth
-
-import (
- "crypto/tls"
- "crypto/x509"
- "encoding/base64"
- "encoding/pem"
- "io/ioutil"
- "log"
-
- pkgerrors "github.com/pkg/errors"
-)
-
-// GetTLSConfig initializes a tlsConfig using the CA's certificate
-// This config is then used to enable the server for mutual TLS
-func GetTLSConfig(caCertFile string, certFile string, keyFile string) (*tls.Config, error) {
-
- // Initialize tlsConfig once
- caCert, err := ioutil.ReadFile(caCertFile)
-
- if err != nil {
- return nil, pkgerrors.Wrap(err, "Read CA Cert file")
- }
-
- caCertPool := x509.NewCertPool()
- caCertPool.AppendCertsFromPEM(caCert)
-
- tlsConfig := &tls.Config{
- // Change to RequireAndVerify once we have mandatory certs
- ClientAuth: tls.VerifyClientCertIfGiven,
- ClientCAs: caCertPool,
- MinVersion: tls.VersionTLS12,
- }
-
- certPEMBlk, err := readPEMBlock(certFile)
- if err != nil {
- return nil, pkgerrors.Wrap(err, "Read Cert File")
- }
-
- keyPEMBlk, err := readPEMBlock(keyFile)
- if err != nil {
- return nil, pkgerrors.Wrap(err, "Read Key File")
- }
-
- tlsConfig.Certificates = make([]tls.Certificate, 1)
- tlsConfig.Certificates[0], err = tls.X509KeyPair(certPEMBlk, keyPEMBlk)
- if err != nil {
- return nil, pkgerrors.Wrap(err, "Load x509 cert and key")
- }
-
- tlsConfig.BuildNameToCertificate()
- return tlsConfig, nil
-}
-
-func readPEMBlock(filename string) ([]byte, error) {
-
- pemData, err := ioutil.ReadFile(filename)
- if err != nil {
- return nil, pkgerrors.Wrap(err, "Read PEM File")
- }
-
- pemBlock, rest := pem.Decode(pemData)
- if len(rest) > 0 {
- log.Println("Pemfile has extra data")
- }
-
- if x509.IsEncryptedPEMBlock(pemBlock) {
- password, err := ioutil.ReadFile(filename + ".pass")
- if err != nil {
- return nil, pkgerrors.Wrap(err, "Read Password File")
- }
-
- pByte, err := base64.StdEncoding.DecodeString(string(password))
- if err != nil {
- return nil, pkgerrors.Wrap(err, "Decode PEM Password")
- }
-
- pemData, err = x509.DecryptPEMBlock(pemBlock, pByte)
- if err != nil {
- return nil, pkgerrors.Wrap(err, "Decrypt PEM Data")
- }
- var newPEMBlock pem.Block
- newPEMBlock.Type = pemBlock.Type
- newPEMBlock.Bytes = pemData
- // Converting back to PEM from DER data you get from
- // DecryptPEMBlock
- pemData = pem.EncodeToMemory(&newPEMBlock)
- }
-
- return pemData, nil
-}