import { SecureDelegation } from './SecureDelegation'; /** * Holds information for user-based access control and encryption of entities. */ export declare class SecurityMetadata { constructor(json: JSON | any); /** * This maps the hex-encoded sha256 hash of a key created by the client using a certain [ExchangeData.accessControlSecret] to the * [SecureDelegation] for the corresponding delegate-delegator pair. This hash is used by the server to perform access control for * anonymous data owners (see [DataOwnerAuthenticationDetails]) and in some cases also by the sdks to quickly find the appropriate * exchange key needed for the decryption of the content of the corresponding [SecureDelegation]. * * Note that it is also possible for a secure delegation in this map to have no entry for secretId, encryptionKey or owningEntityId. * This could happen in situations where a user should have access only to the unencrypted content of an entity. */ secureDelegations?: { [hash: string]: SecureDelegation; }; /** * Holds aliases for secure delegation keys that apply to this entity: `a -> b` means that anyone with key `a` has access to the * secure delegation in `secureDelegations['b']`. * * This map is useful in cases when it is not possible to know for certain if the delegate of a new secure delegation will be able * to produce the access control key we are planning to use. For example the access control key may be produced by a combination of * access control secret and secret foreign key of the entity: what happens if the entity has multiple secret foreign keys? The * delegate may have access to only one of them but not all, so if we chose an unlucky secret foreign key in the creation of the * access control key the delegate will never be able to access the entity. This field allows to essentially create an access control * key and corresponding secure delegation key for each secret foreign key without having to replicate the actual secure delegation. */ keysEquivalences?: { [hash: string]: string; }; }