pkg/vault/kv/api.go (34 lines of code) (raw):

// Licensed to Elasticsearch B.V. under one or more contributor // license agreements. See the NOTICE file distributed with // this work for additional information regarding copyright // ownership. Elasticsearch B.V. licenses this file to you 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 kv import ( "context" "errors" ) var ( // ErrPathNotFound is raised when given secret path doesn't exists. ErrPathNotFound = errors.New("path not found") // ErrNoData is raised when gievn secret path doesn't contains data. ErrNoData = errors.New("no data") // ErrCustomMetadataDisabled is raised when trying to write a custom // metadata with globally disabled feature. ErrCustomMetadataDisabled = errors.New("custom metadata is disabled") ) // VaultMetadataDataKey represents the secret data key used to store // metadata. var VaultMetadataDataKey = "www.vaultproject.io/kv/metadata" const ( // CustomMetadataKeyLimit defines the key count limit for custom metadata. CustomMetadataKeyLimit = 64 // CustomMetadataKeySizeLimit defines the key size limit in bytes for // custom metadata. CustomMetadataKeySizeLimit = 128 // CustomMetadataValueSizeLimit defines the value size limit in bytes for // custom metadata. CustomMetadataValueSizeLimit = 512 ) // SecretData is a secret body type SecretData map[string]interface{} // SecretMetadata is secret data attached metadata type SecretMetadata map[string]interface{} // SecretLister repesents secret key listing feature contract. type SecretLister interface { List(ctx context.Context, path string) ([]string, error) } // SecretReader represents secret reader feature contract. type SecretReader interface { Read(ctx context.Context, path string) (SecretData, SecretMetadata, error) ReadVersion(ctx context.Context, path string, version uint32) (SecretData, SecretMetadata, error) } // SecretWriter represents secret writer feature contract. type SecretWriter interface { Write(ctx context.Context, path string, secrets SecretData) error WriteWithMeta(ctx context.Context, path string, secrets SecretData, meta SecretMetadata) error } // Service declares vault service contract. type Service interface { SecretLister SecretReader SecretWriter }