Documentation
¶
Index ¶
- Constants
- Variables
- func FromBulkErrors(err error) ([]error, bool)
- func IsValidNanoTdf(reader io.ReadSeeker) (bool, error)
- func IsValidTdf(reader io.ReadSeeker) (bool, error)
- func NewCertExchangeTokenSource(info oauth.CertExchangeInfo, credentials oauth.ClientCredentials, ...) (auth.AccessTokenSource, error)
- func SanitizePlatformEndpoint(e string) (string, error)
- func SizeOfAuthTagForCipher(cipherType CipherMode) (int, error)
- func ValidateHealthyPlatformConnection(platformEndpoint string, dialOptions []grpc.DialOption) error
- type AppliesToState
- type Assertion
- type AssertionConfig
- type AssertionKey
- type AssertionKeyAlg
- type AssertionType
- type AssertionVerificationKeys
- type AttributeNameFQN
- type AttributeValueFQN
- type Binding
- type BindingMethod
- type BulkDecryptOption
- type BulkDecryptRequest
- type BulkErrors
- type BulkTDF
- type CertExchangeTokenSource
- type CipherMode
- type EncryptedMetadata
- type EncryptionInformation
- type ErrAssertionFailure
- type Error
- type IDPAccessTokenSource
- type IDPTokenExchangeTokenSource
- type IntegrityAlgorithm
- type IntegrityInformation
- type KASClient
- type KASInfo
- type KeyAccess
- type Manifest
- type Method
- type NanoTDFConfig
- type NanoTDFDecryptHandler
- type NanoTDFHeader
- type NanoTDFOption
- type OAuthAccessTokenSource
- type Option
- func WithClientCredentials(clientID, clientSecret string, scopes []string) Option
- func WithConnectionValidation() Option
- func WithCustomAuthorizationConnection(conn *grpc.ClientConn) Optiondeprecated
- func WithCustomCoreConnection(conn *grpc.ClientConn) Option
- func WithCustomEntityResolutionConnection(conn *grpc.ClientConn) Option
- func WithCustomPolicyConnection(conn *grpc.ClientConn) Optiondeprecated
- func WithCustomWellknownConnection(conn *grpc.ClientConn) Option
- func WithExtraDialOptions(dialOptions ...grpc.DialOption) Option
- func WithIPC() Option
- func WithInsecurePlaintextConn() Option
- func WithInsecureSkipVerifyConn() Option
- func WithNoKIDInKAO() Option
- func WithNoKIDInNano() Option
- func WithOAuthAccessTokenSource(t oauth2.TokenSource) Option
- func WithPlatformConfiguration(platformConfiguration PlatformConfiguration) Option
- func WithSessionEncryptionRSA(key *rsa.PrivateKey) Option
- func WithSessionSignerRSA(key *rsa.PrivateKey) Option
- func WithStoreCollectionHeaders() Option
- func WithTLSCredentials(tls *tls.Config, audience []string) Option
- func WithTokenEndpoint(tokenEndpoint string) Option
- func WithTokenExchange(subjectToken string, audience []string) Option
- type Payload
- type PlatformConfiguration
- type PolicyBinding
- type PolicyBody
- type PolicyObject
- type Reader
- func (r *Reader) DataAttributes() ([]string, error)
- func (r *Reader) Init(ctx context.Context) error
- func (r *Reader) Manifest() Manifest
- func (r *Reader) Policy() (PolicyObject, error)
- func (r *Reader) Read(p []byte) (int, error)
- func (r *Reader) ReadAt(buf []byte, offset int64) (int, error)
- func (r *Reader) UnencryptedMetadata() ([]byte, error)
- func (r *Reader) UnsafePayloadKeyRetrieval() ([]byte, error)
- func (r *Reader) WriteTo(writer io.Writer) (int64, error)
- type ResourceLocator
- type RootSignature
- type SDK
- func (s SDK) BulkDecrypt(ctx context.Context, opts ...BulkDecryptOption) error
- func (s SDK) Close() error
- func (s SDK) Conn() *grpc.ClientConn
- func (s SDK) CreateNanoTDF(writer io.Writer, reader io.Reader, config NanoTDFConfig) (uint32, error)
- func (s SDK) CreateTDF(writer io.Writer, reader io.ReadSeeker, opts ...TDFOption) (*TDFObject, error)
- func (s SDK) CreateTDFContext(ctx context.Context, writer io.Writer, reader io.ReadSeeker, opts ...TDFOption) (*TDFObject, error)
- func (s SDK) LoadTDF(reader io.ReadSeeker, opts ...TDFReaderOption) (*Reader, error)
- func (s SDK) NewNanoTDFConfig() (*NanoTDFConfig, error)
- func (s SDK) ReadNanoTDF(writer io.Writer, reader io.ReadSeeker) (int, error)
- func (s SDK) ReadNanoTDFContext(ctx context.Context, writer io.Writer, reader io.ReadSeeker) (int, error)
- func (s *SDK) StoreKASKeys(url string, keys *policy.KasPublicKeySet) error
- type SchemaValidationIntensity
- type Scope
- type Segment
- type Statement
- type TDFConfig
- type TDFFormat
- type TDFObject
- type TDFOption
- func WithAssertions(assertionList ...AssertionConfig) TDFOption
- func WithAutoconfigure(enable bool) TDFOption
- func WithDataAttributeValues(attributes ...*policy.Value) TDFOption
- func WithDataAttributes(attributes ...string) TDFOption
- func WithKasInformation(kasInfoList ...KASInfo) TDFOption
- func WithMetaData(metaData string) TDFOption
- func WithMimeType(mimeType string) TDFOption
- func WithSegmentSize(size int64) TDFOption
- func WithWrappingKeyAlg(keyType ocrypto.KeyType) TDFOption
- type TDFReaderConfig
- type TDFReaderOption
- type TdfType
Constants ¶
const ( // Failure while connecting to a service. // Check your configuration and/or retry. ErrGrpcDialFailed = Error("failed to dial grpc endpoint") ErrShutdownFailed = Error("failed to shutdown sdk") ErrPlatformUnreachable = Error("platform unreachable or not responding") ErrPlatformConfigFailed = Error("failed to retrieve platform configuration") ErrPlatformEndpointMalformed = Error("platform endpoint is malformed") ErrPlatformIssuerNotFound = Error("issuer not found in well-known idp configuration") ErrPlatformAuthzEndpointNotFound = Error("authorization_endpoint not found in well-known idp configuration") ErrPlatformTokenEndpointNotFound = Error("token_endpoint not found in well-known idp configuration") ErrPlatformPublicClientIDNotFound = Error("public_client_id not found in well-known idp configuration") ErrAccessTokenInvalid = Error("access token is invalid") )
const ( DefaultRSAKeySize = 2048 ECKeySize256 = 256 ECKeySize384 = 384 ECKeySize521 = 521 )
const ( JSONFormat = iota XMLFormat )
const ( HS256 = iota GMAC )
const ( // The latest version of TDF Spec currently targeted by the SDK. // By default, new files will conform to this version of the spec // and, where possible, older versions will still be readable. TDFSpecVersion = "4.3.0" // The three-part semantic version number of this SDK Version = "0.3.27" // x-release-please-version )
const (
ErrNanoTDFHeaderRead = Error("nanoTDF read error")
)
Variables ¶
var ( // Exposed tamper detection errors, Catch all possible tamper errors with errors.Is(ErrTampered) ErrTampered = errors.New("tamper detected") ErrRootSigValidation = fmt.Errorf("[%w] tdf: failed integrity check on root signature", ErrTampered) ErrSegSizeMismatch = fmt.Errorf("[%w] tdf: mismatch encrypted segment size in manifest", ErrTampered) ErrSegSigValidation = fmt.Errorf("[%w] tdf: failed integrity check on segment hash", ErrTampered) ErrTDFPayloadReadFail = fmt.Errorf("[%w] tdf: fail to read payload from tdf", ErrTampered) ErrTDFPayloadInvalidOffset = fmt.Errorf("[%w] sdk.Reader.ReadAt: negative offset", ErrTampered) ErrRewrapBadRequest = fmt.Errorf("[%w] tdf: rewrap request 400", ErrTampered) ErrRootSignatureFailure = fmt.Errorf("[%w] tdf: issue verifying root signature", ErrTampered) )
var ErrInvalid = errors.New("invalid type")
var ErrInvalidPerSchema = errors.New("manifest was not valid")
Indicates JSON Schema validation failed for the manifest or header of the TDF file. Some invalid manifests are still usable, so this file may still be usable.
Functions ¶
func FromBulkErrors ¶ added in v0.3.26
FromBulkErrors Returns List of Decrypt Failures and true if is decryption failures
func IsValidNanoTdf ¶ added in v0.3.5
func IsValidNanoTdf(reader io.ReadSeeker) (bool, error)
IsValidNanoTdf detects whether, or not the reader is a valid Nano TDF. Reader is reset after the check.
func IsValidTdf ¶ added in v0.3.5
func IsValidTdf(reader io.ReadSeeker) (bool, error)
Detects whether, or not the reader is a valid TDF. It first checks if it can "open" it Then attempts to extract a manifest, then finally it validates the manifest using the json schema If any of the checks fail, it will return false.
Something to keep in mind is that if we make updates to the schema, such as making certain fields 'required', older TDF versions will fail despite being valid. So each time we release an update to the TDF spec, we'll need to include the respective schema in the schema directory, then update this code to validate against all previously known schema versions.
func NewCertExchangeTokenSource ¶ added in v0.2.1
func NewCertExchangeTokenSource(info oauth.CertExchangeInfo, credentials oauth.ClientCredentials, idpTokenEndpoint string, dpop *ocrypto.RsaKeyPair) (auth.AccessTokenSource, error)
func SanitizePlatformEndpoint ¶ added in v0.2.7
func SizeOfAuthTagForCipher ¶ added in v0.2.4
func SizeOfAuthTagForCipher(cipherType CipherMode) (int, error)
SizeOfAuthTagForCipher - Return the size in bytes of auth tag to be used for aes gcm encryption
func ValidateHealthyPlatformConnection ¶ added in v0.3.27
func ValidateHealthyPlatformConnection(platformEndpoint string, dialOptions []grpc.DialOption) error
Test connectability to the platform and validate a healthy status
Types ¶
type AppliesToState ¶ added in v0.3.5
type AppliesToState string
AppliesToState indicates whether the assertion applies to encrypted or unencrypted data.
const ( Encrypted AppliesToState = "encrypted" Unencrypted AppliesToState = "unencrypted" )
func (AppliesToState) String ¶ added in v0.3.5
func (ats AppliesToState) String() string
String returns the string representation of the applies to state.
type Assertion ¶
type Assertion struct { ID string `json:"id"` Type AssertionType `json:"type"` Scope Scope `json:"scope"` AppliesToState AppliesToState `json:"appliesToState,omitempty"` Statement Statement `json:"statement"` Binding Binding `json:"binding,omitempty"` }
type AssertionConfig ¶ added in v0.3.5
type AssertionConfig struct { ID string `validate:"required"` Type AssertionType `validate:"required"` Scope Scope `validate:"required"` AppliesToState AppliesToState `validate:"required"` Statement Statement SigningKey AssertionKey }
AssertionConfig is a shadow of Assertion with the addition of the signing key. It is used on creation
type AssertionKey ¶ added in v0.3.5
type AssertionKey struct { // Algorithm of the key. Alg AssertionKeyAlg // Key value. Key interface{} }
AssertionKey represents a key for assertions.
func (AssertionKey) Algorithm ¶ added in v0.3.5
func (k AssertionKey) Algorithm() AssertionKeyAlg
Algorithm returns the algorithm of the key.
func (AssertionKey) IsEmpty ¶ added in v0.3.5
func (k AssertionKey) IsEmpty() bool
IsEmpty returns true if the key and the algorithm are empty.
type AssertionKeyAlg ¶ added in v0.3.5
type AssertionKeyAlg string
AssertionKeyAlg represents the algorithm of an assertion key.
const ( AssertionKeyAlgRS256 AssertionKeyAlg = "RS256" AssertionKeyAlgHS256 AssertionKeyAlg = "HS256" )
func (AssertionKeyAlg) String ¶ added in v0.3.5
func (a AssertionKeyAlg) String() string
String returns the string representation of the algorithm.
type AssertionType ¶ added in v0.3.5
type AssertionType string
AssertionType represents the type of the assertion.
const ( HandlingAssertion AssertionType = "handling" BaseAssertion AssertionType = "other" )
func (AssertionType) String ¶ added in v0.3.5
func (at AssertionType) String() string
String returns the string representation of the assertion type.
type AssertionVerificationKeys ¶ added in v0.3.5
type AssertionVerificationKeys struct { // Default key to use if the key for the assertion ID is not found. DefaultKey AssertionKey // Map of assertion ID to key. Keys map[string]AssertionKey }
AssertionVerificationKeys represents the verification keys for assertions.
func (AssertionVerificationKeys) Get ¶ added in v0.3.5
func (k AssertionVerificationKeys) Get(assertionID string) (AssertionKey, error)
Returns the key for the given assertion ID or the default key if the key is not found. If the default key is not set, it returns error.
func (AssertionVerificationKeys) IsEmpty ¶ added in v0.3.5
func (k AssertionVerificationKeys) IsEmpty() bool
IsEmpty returns true if the default key and the keys map are empty.
type AttributeNameFQN ¶ added in v0.3.9
type AttributeNameFQN struct {
// contains filtered or unexported fields
}
AttributeNameFQN is a utility type to represent an FQN for an attribute.
func NewAttributeNameFQN ¶ added in v0.3.9
func NewAttributeNameFQN(u string) (AttributeNameFQN, error)
func (AttributeNameFQN) Authority ¶ added in v0.3.9
func (a AttributeNameFQN) Authority() string
func (AttributeNameFQN) Name ¶ added in v0.3.9
func (a AttributeNameFQN) Name() string
func (AttributeNameFQN) Prefix ¶ added in v0.3.9
func (a AttributeNameFQN) Prefix() string
func (AttributeNameFQN) Select ¶ added in v0.3.9
func (a AttributeNameFQN) Select(v string) AttributeValueFQN
func (AttributeNameFQN) String ¶ added in v0.3.9
func (a AttributeNameFQN) String() string
type AttributeValueFQN ¶ added in v0.3.9
type AttributeValueFQN struct {
// contains filtered or unexported fields
}
AttributeValueFQN is a utility type to represent an FQN for an attribute value.
func NewAttributeValueFQN ¶ added in v0.3.9
func NewAttributeValueFQN(u string) (AttributeValueFQN, error)
func (AttributeValueFQN) Authority ¶ added in v0.3.9
func (a AttributeValueFQN) Authority() string
func (AttributeValueFQN) Name ¶ added in v0.3.9
func (a AttributeValueFQN) Name() string
func (AttributeValueFQN) Prefix ¶ added in v0.3.9
func (a AttributeValueFQN) Prefix() AttributeNameFQN
func (AttributeValueFQN) String ¶ added in v0.3.9
func (a AttributeValueFQN) String() string
func (AttributeValueFQN) Value ¶ added in v0.3.9
func (a AttributeValueFQN) Value() string
type Binding ¶ added in v0.3.5
type Binding struct { // Method used to bind the assertion. (e.g. jws) Method string `json:"method,omitempty"` // Signature of the assertion. Signature string `json:"signature,omitempty"` }
Binding enforces cryptographic integrity of the assertion. So the can't be modified or copied to another tdf.
type BindingMethod ¶ added in v0.3.5
type BindingMethod string
BindingMethod represents the method used to bind the assertion.
const (
JWS BindingMethod = "jws"
)
func (BindingMethod) String ¶ added in v0.3.5
func (bm BindingMethod) String() string
String returns the string representation of the binding method.
type BulkDecryptOption ¶ added in v0.3.26
type BulkDecryptOption func(request *BulkDecryptRequest)
func WithTDFType ¶ added in v0.3.26
func WithTDFType(tdfType TdfType) BulkDecryptOption
WithTDFType Type of TDFs to be decrypted
func WithTDFs ¶ added in v0.3.26
func WithTDFs(tdfs ...*BulkTDF) BulkDecryptOption
WithTDFs Adds Lists of TDFs to be decrypted
type BulkDecryptRequest ¶ added in v0.3.26
type BulkErrors ¶ added in v0.3.26
type BulkErrors []error
BulkErrors List of Errors that Failed during Bulk Decryption
func (BulkErrors) Error ¶ added in v0.3.26
func (b BulkErrors) Error() string
func (BulkErrors) Unwrap ¶ added in v0.3.26
func (b BulkErrors) Unwrap() []error
type BulkTDF ¶ added in v0.3.26
type BulkTDF struct { Reader io.ReadSeeker Writer io.Writer Error error }
BulkTDF: Reader is TDF Content. Writer writes encrypted data. Error is the error that occurs if decrypting fails.
type CertExchangeTokenSource ¶ added in v0.2.1
type CertExchangeTokenSource struct { auth.AccessTokenSource IdpEndpoint string // contains filtered or unexported fields }
func (*CertExchangeTokenSource) AccessToken ¶ added in v0.2.1
func (c *CertExchangeTokenSource) AccessToken(ctx context.Context, _ *http.Client) (auth.AccessToken, error)
type CipherMode ¶ added in v0.2.4
type CipherMode int
type EncryptedMetadata ¶
type EncryptionInformation ¶
type EncryptionInformation struct { KeyAccessType string `json:"type"` Policy string `json:"policy"` KeyAccessObjs []KeyAccess `json:"keyAccess"` Method Method `json:"method"` IntegrityInformation `json:"integrityInformation"` }
type ErrAssertionFailure ¶ added in v0.3.16
type ErrAssertionFailure struct {
ID string
}
Custom error struct for Assertion errors
func (ErrAssertionFailure) Error ¶ added in v0.3.16
func (e ErrAssertionFailure) Error() string
func (ErrAssertionFailure) Unwrap ¶ added in v0.3.16
func (e ErrAssertionFailure) Unwrap() error
type IDPAccessTokenSource ¶
type IDPAccessTokenSource struct {
// contains filtered or unexported fields
}
IDPAccessTokenSource credentials that allow us to connect to an IDP and obtain an access token that is bound to a DPoP key
func NewIDPAccessTokenSource ¶
func NewIDPAccessTokenSource( credentials oauth.ClientCredentials, idpTokenEndpoint string, scopes []string, key *ocrypto.RsaKeyPair) (*IDPAccessTokenSource, error)
func (*IDPAccessTokenSource) AccessToken ¶
func (t *IDPAccessTokenSource) AccessToken(ctx context.Context, client *http.Client) (auth.AccessToken, error)
AccessToken use a pointer receiver so that the token state is shared
type IDPTokenExchangeTokenSource ¶
type IDPTokenExchangeTokenSource struct { IDPAccessTokenSource oauth.TokenExchangeInfo }
func NewIDPTokenExchangeTokenSource ¶
func NewIDPTokenExchangeTokenSource(exchangeInfo oauth.TokenExchangeInfo, credentials oauth.ClientCredentials, idpTokenEndpoint string, scopes []string, key *ocrypto.RsaKeyPair) (*IDPTokenExchangeTokenSource, error)
func (*IDPTokenExchangeTokenSource) AccessToken ¶
func (i *IDPTokenExchangeTokenSource) AccessToken(ctx context.Context, client *http.Client) (auth.AccessToken, error)
type IntegrityAlgorithm ¶
type IntegrityAlgorithm = int
type IntegrityInformation ¶
type IntegrityInformation struct { RootSignature `json:"rootSignature"` SegmentHashAlgorithm string `json:"segmentHashAlg"` DefaultSegmentSize int64 `json:"segmentSizeDefault"` DefaultEncryptedSegSize int64 `json:"encryptedSegmentSizeDefault"` Segments []Segment `json:"segments"` }
type KASInfo ¶
type KASInfo struct { // URL of the KAS server URL string // Public key can be empty. // If it is empty, the public key will be fetched from the KAS server. PublicKey string // Key identifier associated with the given key, if present. KID string // The algorithm associated with this key Algorithm string // If this KAS should be used as the default for 'encrypt' calls Default bool }
KASInfo contains Key Access Server information.
type KeyAccess ¶
type KeyAccess struct { KeyType string `json:"type"` KasURL string `json:"url"` Protocol string `json:"protocol"` WrappedKey string `json:"wrappedKey"` PolicyBinding interface{} `json:"policyBinding"` EncryptedMetadata string `json:"encryptedMetadata,omitempty"` KID string `json:"kid,omitempty"` SplitID string `json:"sid,omitempty"` SchemaVersion string `json:"schemaVersion,omitempty"` EphemeralPublicKey string `json:"ephemeralPublicKey,omitempty"` }
type Manifest ¶
type Manifest struct { EncryptionInformation `json:"encryptionInformation"` Payload `json:"payload"` Assertions []Assertion `json:"assertions,omitempty"` TDFVersion string `json:"schemaVersion,omitempty"` }
type NanoTDFConfig ¶ added in v0.2.4
type NanoTDFConfig struct {
// contains filtered or unexported fields
}
func (*NanoTDFConfig) EnableCollection ¶ added in v0.3.21
func (config *NanoTDFConfig) EnableCollection()
EnableCollection Experimental: Enables Collection in NanoTDFConfig. Reuse NanoTDFConfig to add nTDFs to a Collection.
func (*NanoTDFConfig) EnableECDSAPolicyBinding ¶ added in v0.2.5
func (config *NanoTDFConfig) EnableECDSAPolicyBinding()
EnableECDSAPolicyBinding enable ecdsa policy binding
func (*NanoTDFConfig) SetAttributes ¶ added in v0.2.4
func (config *NanoTDFConfig) SetAttributes(attributes []string) error
SetAttributes - set the attributes to be used for this nanoTDF
func (*NanoTDFConfig) SetKasURL ¶ added in v0.2.4
func (config *NanoTDFConfig) SetKasURL(url string) error
SetKasURL - set the URL of the KAS endpoint to be used for this nanoTDF
type NanoTDFDecryptHandler ¶ added in v0.3.26
type NanoTDFDecryptHandler struct {
// contains filtered or unexported fields
}
func (*NanoTDFDecryptHandler) CreateRewrapRequest ¶ added in v0.3.26
func (n *NanoTDFDecryptHandler) CreateRewrapRequest(_ context.Context) (map[string]*kas.UnsignedRewrapRequest_WithPolicyRequest, error)
type NanoTDFHeader ¶ added in v0.2.4
type NanoTDFHeader struct { EphemeralKey []byte EncryptedPolicyBody []byte // contains filtered or unexported fields }
func NewNanoTDFHeaderFromReader ¶ added in v0.2.4
func NewNanoTDFHeaderFromReader(reader io.Reader) (NanoTDFHeader, uint32, error)
func (*NanoTDFHeader) ECCurve ¶ added in v0.2.5
func (header *NanoTDFHeader) ECCurve() (elliptic.Curve, error)
func (*NanoTDFHeader) GetCipher ¶ added in v0.2.4
func (header *NanoTDFHeader) GetCipher() CipherMode
GetCipher -- get the cipher from the nano tdf header
func (*NanoTDFHeader) GetKasURL ¶ added in v0.3.12
func (header *NanoTDFHeader) GetKasURL() ResourceLocator
func (*NanoTDFHeader) IsEcdsaBindingEnabled ¶ added in v0.2.5
func (header *NanoTDFHeader) IsEcdsaBindingEnabled() bool
func (*NanoTDFHeader) VerifyPolicyBinding ¶ added in v0.2.5
func (header *NanoTDFHeader) VerifyPolicyBinding() (bool, error)
type NanoTDFOption ¶ added in v0.2.4
type NanoTDFOption func(*NanoTDFConfig) error
func WithECDSAPolicyBinding ¶ added in v0.2.5
func WithECDSAPolicyBinding() NanoTDFOption
WithECDSAPolicyBinding enable ecdsa policy binding
func WithNanoDataAttributes ¶ added in v0.2.4
func WithNanoDataAttributes(attributes ...string) NanoTDFOption
WithNanoDataAttributes appends the given data attributes to the bound policy
type OAuthAccessTokenSource ¶ added in v0.3.9
type OAuthAccessTokenSource struct {
// contains filtered or unexported fields
}
OAuthAccessTokenSource allow connecting to an IDP and obtain a DPoP bound access token
func NewOAuthAccessTokenSource ¶ added in v0.3.9
func NewOAuthAccessTokenSource( source oauth2.TokenSource, scopes []string, key *ocrypto.RsaKeyPair, ) (*OAuthAccessTokenSource, error)
func (*OAuthAccessTokenSource) AccessToken ¶ added in v0.3.9
func (t *OAuthAccessTokenSource) AccessToken(_ context.Context, _ *http.Client) (auth.AccessToken, error)
AccessToken use a pointer receiver so that the token state is shared
type Option ¶
type Option func(*config)
func WithClientCredentials ¶
WithClientCredentials returns an Option that sets up authentication with client credentials.
func WithConnectionValidation ¶ added in v0.3.27
func WithConnectionValidation() Option
WithConnectionValidation will validate connection to a healthy, running platform
func WithCustomAuthorizationConnection
deprecated
func WithCustomAuthorizationConnection(conn *grpc.ClientConn) Option
Deprecated: Use WithCustomCoreConnection instead
func WithCustomCoreConnection ¶ added in v0.3.7
func WithCustomCoreConnection(conn *grpc.ClientConn) Option
WithCoreConnection returns an Option that sets up a connection to the core platform
func WithCustomEntityResolutionConnection ¶ added in v0.2.3
func WithCustomEntityResolutionConnection(conn *grpc.ClientConn) Option
func WithCustomPolicyConnection
deprecated
func WithCustomPolicyConnection(conn *grpc.ClientConn) Option
Deprecated: Use WithCustomCoreConnection instead
func WithCustomWellknownConnection ¶ added in v0.2.5
func WithCustomWellknownConnection(conn *grpc.ClientConn) Option
func WithExtraDialOptions ¶
func WithExtraDialOptions(dialOptions ...grpc.DialOption) Option
func WithIPC ¶ added in v0.2.7
func WithIPC() Option
WithIPC returns an Option that indicates the SDK should use IPC for communication this will allow the platform endpoint to be an empty string
func WithInsecurePlaintextConn ¶ added in v0.2.1
func WithInsecurePlaintextConn() Option
WithInsecurePlaintextConn returns an Option that sets up HTTP connection sent in the clear.
func WithInsecureSkipVerifyConn ¶ added in v0.2.1
func WithInsecureSkipVerifyConn() Option
WithInsecureSkipVerifyConn returns an Option that sets up HTTPS connection without verification.
func WithNoKIDInKAO ¶ added in v0.2.8
func WithNoKIDInKAO() Option
WithNoKIDInKAO disables storing the KID in the KAO. This allows generating TDF files that are compatible with legacy file formats (no KID).
func WithNoKIDInNano ¶ added in v0.3.12
func WithNoKIDInNano() Option
WithNoKIDInNano disables storing the KID in the KAS ResourceLocator. This allows generating NanoTDF files that are compatible with legacy file formats (no KID).
func WithOAuthAccessTokenSource ¶ added in v0.3.9
func WithOAuthAccessTokenSource(t oauth2.TokenSource) Option
WithOAuthAccessTokenSource directs the SDK to use a standard OAuth2 token source for authentication
func WithPlatformConfiguration ¶ added in v0.2.5
func WithPlatformConfiguration(platformConfiguration PlatformConfiguration) Option
WithPlatformConfiguration allows you to override the remote platform configuration Use this option with caution, as it may lead to unexpected behavior
func WithSessionEncryptionRSA ¶ added in v0.2.4
func WithSessionEncryptionRSA(key *rsa.PrivateKey) Option
The session key pair is used to encrypt responses from KAS for a given session and can be reused across an entire session. Please use with caution.
func WithSessionSignerRSA ¶ added in v0.2.4
func WithSessionSignerRSA(key *rsa.PrivateKey) Option
The DPoP key pair is used to implement sender constrained tokens from the identity provider, and should be associated with the lifetime of a session for a given identity. Please use with caution.
func WithStoreCollectionHeaders ¶ added in v0.3.21
func WithStoreCollectionHeaders() Option
WithStoreCollectionHeaders Experimental: returns an Option that sets up storing dataset keys for nTDFs
func WithTLSCredentials ¶ added in v0.2.1
func WithTokenEndpoint ¶
WithTokenEndpoint When we implement service discovery using a .well-known endpoint this option may become deprecated Deprecated: SDK will discover the token endpoint from the platform configuration
func WithTokenExchange ¶
WithTokenExchange specifies that the SDK should obtain its access token by exchanging the given token for a new one
type PlatformConfiguration ¶ added in v0.2.5
type PlatformConfiguration map[string]interface{}
func (PlatformConfiguration) AuthzEndpoint ¶ added in v0.3.8
func (c PlatformConfiguration) AuthzEndpoint() (string, error)
func (PlatformConfiguration) Issuer ¶ added in v0.3.8
func (c PlatformConfiguration) Issuer() (string, error)
func (PlatformConfiguration) PublicClientID ¶ added in v0.3.8
func (c PlatformConfiguration) PublicClientID() (string, error)
func (PlatformConfiguration) TokenEndpoint ¶ added in v0.3.8
func (c PlatformConfiguration) TokenEndpoint() (string, error)
type PolicyBinding ¶ added in v0.3.3
type PolicyBody ¶
type PolicyBody struct {
// contains filtered or unexported fields
}
type PolicyObject ¶
type Reader ¶
type Reader struct {
// contains filtered or unexported fields
}
Loads and reads ZTDF files
func (*Reader) DataAttributes ¶
DataAttributes return the data attributes present in tdf.
func (*Reader) Init ¶ added in v0.2.11
Do any network based operations required. This allows making the requests cancellable
func (*Reader) Policy ¶
func (r *Reader) Policy() (PolicyObject, error)
Policy returns a copy of the policy object in manifest, if it is valid. Otherwise, returns an error.
func (*Reader) Read ¶
Read reads up to len(p) bytes into p. It returns the number of bytes read (0 <= n <= len(p)) and any error encountered. It returns an io.EOF error when the stream ends.
func (*Reader) ReadAt ¶
ReadAt reads len(p) bytes into p starting at offset off in the underlying input source. It returns the number of bytes read (0 <= n <= len(p)) and any error encountered. It returns an io.EOF error when the stream ends. NOTE: For larger tdf sizes use sdk.GetTDFPayload for better performance
func (*Reader) UnencryptedMetadata ¶
UnencryptedMetadata return decrypted metadata in manifest.
func (*Reader) UnsafePayloadKeyRetrieval ¶ added in v0.3.5
*WARNING:* Using this function is unsafe since KAS will no longer be able to prevent access to the key.
Retrieve the payload key, either from performing an buildKey or from a previous buildKey, and write it to a user buffer.
OUTPUTS:
- []byte - Byte array containing the DEK.
- error - If an error occurred while processing
type ResourceLocator ¶ added in v0.2.4
type ResourceLocator struct {
// contains filtered or unexported fields
}
ResourceLocator - structure to contain a protocol + body comprising an URL
func NewResourceLocator ¶ added in v0.2.4
func NewResourceLocator(url string) (*ResourceLocator, error)
func NewResourceLocatorFromReader ¶ added in v0.2.4
func NewResourceLocatorFromReader(reader io.Reader) (*ResourceLocator, error)
func (ResourceLocator) GetIdentifier ¶ added in v0.3.12
func (rl ResourceLocator) GetIdentifier() (string, error)
GetIdentifier - identifier is returned if the correct protocol enum is set else error padding is removed unlike rl.identifier direct access
func (ResourceLocator) GetURL ¶ added in v0.3.12
func (rl ResourceLocator) GetURL() (string, error)
GetURL - Retrieve a fully qualified protocol+body URL string from a ResourceLocator struct
type RootSignature ¶
type SDK ¶
type SDK struct { Namespaces namespaces.NamespaceServiceClient Attributes attributes.AttributesServiceClient ResourceMapping resourcemapping.ResourceMappingServiceClient SubjectMapping subjectmapping.SubjectMappingServiceClient KeyAccessServerRegistry kasregistry.KeyAccessServerRegistryServiceClient Unsafe unsafe.UnsafeServiceClient Authorization authorization.AuthorizationServiceClient EntityResoution entityresolution.EntityResolutionServiceClient // contains filtered or unexported fields }
func (SDK) BulkDecrypt ¶ added in v0.3.26
func (s SDK) BulkDecrypt(ctx context.Context, opts ...BulkDecryptOption) error
BulkDecrypt Decrypts a list of BulkTDF and if a partial failure of TDFs unable to be decrypted, BulkErrors would be returned.
func (SDK) CreateNanoTDF ¶ added in v0.2.4
func (s SDK) CreateNanoTDF(writer io.Writer, reader io.Reader, config NanoTDFConfig) (uint32, error)
CreateNanoTDF - reads plain text from the given reader and saves it to the writer, subject to the given options
func (SDK) CreateTDFContext ¶ added in v0.3.0
func (s SDK) CreateTDFContext(ctx context.Context, writer io.Writer, reader io.ReadSeeker, opts ...TDFOption) (*TDFObject, error)
CreateTDFContext reads plain text from the given reader and saves it to the writer, subject to the given options
func (SDK) LoadTDF ¶
func (s SDK) LoadTDF(reader io.ReadSeeker, opts ...TDFReaderOption) (*Reader, error)
LoadTDF loads the tdf and prepare for reading the payload from TDF
func (SDK) NewNanoTDFConfig ¶ added in v0.2.4
func (s SDK) NewNanoTDFConfig() (*NanoTDFConfig, error)
NewNanoTDFConfig - Create a new instance of a nanoTDF config
func (SDK) ReadNanoTDF ¶ added in v0.2.4
ReadNanoTDF - read the nano tdf and return the decrypted data from it
func (SDK) ReadNanoTDFContext ¶ added in v0.2.11
func (s SDK) ReadNanoTDFContext(ctx context.Context, writer io.Writer, reader io.ReadSeeker) (int, error)
ReadNanoTDFContext - allows cancelling the reader
func (*SDK) StoreKASKeys ¶ added in v0.3.14
func (s *SDK) StoreKASKeys(url string, keys *policy.KasPublicKeySet) error
StoreKASKeys caches the given values as the public keys associated with the KAS at the given URL, replacing any existing keys that are cached for that URL with the same algorithm and URL. Only one key per url and algorithm is stored in the cache, so only store the most recent known key per url & algorithm pair.
type SchemaValidationIntensity ¶ added in v0.3.27
type SchemaValidationIntensity int
Schema Validation where 0 = none (skip), 1 = lax (allowing novel entries, 'falsy' values for unkowns), 2 = strict (rejecting novel entries, strict match to manifest schema)
const ( Skip SchemaValidationIntensity = iota Lax Strict )
type Scope ¶ added in v0.3.5
type Scope string
Scope represents the object which the assertion applies to.
type Statement ¶ added in v0.3.5
type Statement struct { // Format describes the payload encoding format. (e.g. json) Format string `json:"format,omitempty" validate:"required"` // Schema describes the schema of the payload. (e.g. tdf) Schema string `json:"schema,omitempty" validate:"required"` // Value is the payload of the assertion. Value string `json:"value,omitempty" validate:"required"` }
Statement includes information applying to the scope of the assertion. It could contain rights, handling instructions, or general metadata.
func (*Statement) UnmarshalJSON ¶ added in v0.3.27
type TDFConfig ¶
type TDFConfig struct {
// contains filtered or unexported fields
}
TDFConfig Internal config struct for building TDF options.
type TDFOption ¶
func WithAssertions ¶ added in v0.3.5
func WithAssertions(assertionList ...AssertionConfig) TDFOption
WithAssertions returns an Option that add assertions to TDF.
func WithAutoconfigure ¶ added in v0.3.0
WithAutoconfigure toggles inferring KAS info for encrypt from data attributes. This will use the Attributes service to look up key access grants. These are KAS URLs associated with attributes. Defaults to enabled.
func WithDataAttributeValues ¶ added in v0.3.0
WithDataAttributeValues appends the given data attributes to the bound policy. Unlike `WithDataAttributes`, this will not trigger an attribute definition lookup during autoconfigure. That is, to use autoconfigure in an 'offline' context, you must first store the relevant attribute information locally and load it to the `CreateTDF` method with this option.
func WithDataAttributes ¶
WithDataAttributes appends the given data attributes to the bound policy
func WithKasInformation ¶
WithKasInformation adds all the kas urls and their corresponding public keys that is required to create and read the tdf. For writing TDFs, this is optional, but adding it can bypass key lookup.
During creation, if the public key is set, the kas will not be contacted for the latest key. Please make sure to set the KID if the PublicKey is set to include a KID in any key wrappers.
func WithMetaData ¶
WithMetaData returns an Option that add metadata to TDF.
func WithMimeType ¶ added in v0.2.3
func WithSegmentSize ¶
WithSegmentSize returns an Option that set the default segment size within the TDF. Any excessively large or small values will be replaced with a supported value.
func WithWrappingKeyAlg ¶ added in v0.3.27
type TDFReaderConfig ¶ added in v0.3.5
type TDFReaderConfig struct {
// contains filtered or unexported fields
}
type TDFReaderOption ¶ added in v0.3.5
type TDFReaderOption func(*TDFReaderConfig) error
func WithAssertionVerificationKeys ¶ added in v0.3.5
func WithAssertionVerificationKeys(keys AssertionVerificationKeys) TDFReaderOption
func WithDisableAssertionVerification ¶ added in v0.3.17
func WithDisableAssertionVerification(disable bool) TDFReaderOption
func WithSchemaValidation ¶ added in v0.3.27
func WithSchemaValidation(intensity SchemaValidationIntensity) TDFReaderOption
func WithSessionKeyType ¶ added in v0.3.27
func WithSessionKeyType(keyType ocrypto.KeyType) TDFReaderOption
type TdfType ¶ added in v0.3.5
type TdfType string
func GetTdfType ¶ added in v0.3.5
func GetTdfType(reader io.ReadSeeker) TdfType
GetTdfType returns the type of TDF based on the reader. Reader is reset after the check.
Source Files
¶
- assertion.go
- bulk.go
- granter.go
- idp_access_token_source.go
- idp_cert_exchange.go
- idp_oauth_access_token_source.go
- idp_token_exchange_token_source.go
- kas_client.go
- manifest.go
- nanotdf.go
- nanotdf_config.go
- nanotdf_policy.go
- options.go
- platformconfig.go
- resource_locator.go
- sdk.go
- tdf.go
- tdf_config.go
- tdferrors.go
- version.go