77 lines
1.9 KiB
Go
77 lines
1.9 KiB
Go
package oci
|
|
|
|
import (
|
|
"crypto/rsa"
|
|
"errors"
|
|
"fmt"
|
|
|
|
"github.com/oracle/oci-go-sdk/common"
|
|
)
|
|
|
|
// rawConfigurationProvider allows a user to simply construct a configuration
|
|
// provider from raw values. It errors on access when those values are empty.
|
|
type rawConfigurationProvider struct {
|
|
tenancy string
|
|
user string
|
|
region string
|
|
fingerprint string
|
|
privateKey string
|
|
privateKeyPassphrase *string
|
|
}
|
|
|
|
// NewRawConfigurationProvider will create a rawConfigurationProvider.
|
|
func NewRawConfigurationProvider(tenancy, user, region, fingerprint, privateKey string, privateKeyPassphrase *string) common.ConfigurationProvider {
|
|
return rawConfigurationProvider{tenancy, user, region, fingerprint, privateKey, privateKeyPassphrase}
|
|
}
|
|
|
|
func (p rawConfigurationProvider) PrivateRSAKey() (key *rsa.PrivateKey, err error) {
|
|
return common.PrivateKeyFromBytes([]byte(p.privateKey), p.privateKeyPassphrase)
|
|
}
|
|
|
|
func (p rawConfigurationProvider) KeyID() (keyID string, err error) {
|
|
tenancy, err := p.TenancyOCID()
|
|
if err != nil {
|
|
return
|
|
}
|
|
|
|
user, err := p.UserOCID()
|
|
if err != nil {
|
|
return
|
|
}
|
|
|
|
fingerprint, err := p.KeyFingerprint()
|
|
if err != nil {
|
|
return
|
|
}
|
|
|
|
return fmt.Sprintf("%s/%s/%s", tenancy, user, fingerprint), nil
|
|
}
|
|
|
|
func (p rawConfigurationProvider) TenancyOCID() (string, error) {
|
|
if p.tenancy == "" {
|
|
return "", errors.New("no tenancy provided")
|
|
}
|
|
return p.tenancy, nil
|
|
}
|
|
|
|
func (p rawConfigurationProvider) UserOCID() (string, error) {
|
|
if p.user == "" {
|
|
return "", errors.New("no user provided")
|
|
}
|
|
return p.user, nil
|
|
}
|
|
|
|
func (p rawConfigurationProvider) KeyFingerprint() (string, error) {
|
|
if p.fingerprint == "" {
|
|
return "", errors.New("no fingerprint provided")
|
|
}
|
|
return p.fingerprint, nil
|
|
}
|
|
|
|
func (p rawConfigurationProvider) Region() (string, error) {
|
|
if p.region == "" {
|
|
return "", errors.New("no region provided")
|
|
}
|
|
return p.region, nil
|
|
}
|