angelos.lib.policy.portfolio

Policy classes for document portfolios.

class angelos.lib.policy.portfolio.DocSet(documents: Set[Union[angelos.document.entities.Person, angelos.document.entities.Ministry, angelos.document.entities.Church, angelos.document.entities.PrivateKeys, angelos.document.entities.Keys, angelos.document.profiles.PersonProfile, angelos.document.profiles.MinistryProfile, angelos.document.profiles.ChurchProfile, angelos.document.domain.Domain, angelos.document.domain.Node, angelos.document.domain.Network, angelos.document.statements.Verified, angelos.document.statements.Trusted, angelos.document.statements.Revoked, angelos.document.messages.Note, angelos.document.messages.Instant, angelos.document.messages.Mail, angelos.document.messages.Share, angelos.document.messages.Report, angelos.document.envelope.Envelope]])

Bases: object

Class for sets of documents

get_issuer(issuer: uuid.UUID) → Set[Union[angelos.document.entities.Person, angelos.document.entities.Ministry, angelos.document.entities.Church, angelos.document.entities.PrivateKeys, angelos.document.entities.Keys, angelos.document.profiles.PersonProfile, angelos.document.profiles.MinistryProfile, angelos.document.profiles.ChurchProfile, angelos.document.domain.Domain, angelos.document.domain.Node, angelos.document.domain.Network, angelos.document.statements.Verified, angelos.document.statements.Trusted, angelos.document.statements.Revoked, angelos.document.messages.Note, angelos.document.messages.Instant, angelos.document.messages.Mail, angelos.document.messages.Share, angelos.document.messages.Report, angelos.document.envelope.Envelope]]

Get all documents of issuer and subtract from set.

get_owner(owner: uuid.UUID) → Set[Union[angelos.document.entities.Person, angelos.document.entities.Ministry, angelos.document.entities.Church, angelos.document.entities.PrivateKeys, angelos.document.entities.Keys, angelos.document.profiles.PersonProfile, angelos.document.profiles.MinistryProfile, angelos.document.profiles.ChurchProfile, angelos.document.domain.Domain, angelos.document.domain.Node, angelos.document.domain.Network, angelos.document.statements.Verified, angelos.document.statements.Trusted, angelos.document.statements.Revoked, angelos.document.messages.Note, angelos.document.messages.Instant, angelos.document.messages.Mail, angelos.document.messages.Share, angelos.document.messages.Report, angelos.document.envelope.Envelope]]

Get all documents of owner and subtract from set.

issuers() → Set[uuid.UUID]

Unique set of all the issuers.

class angelos.lib.policy.portfolio.PField

Bases: object

Definition of portfolio fields.

DOMAIN = 'domain'
ENTITY = 'entity'
ISSUER_REVOKED = 'issuer.revoked'
ISSUER_TRUSTED = 'issuer.trusted'
ISSUER_VERIFIED = 'issuer.verified'
KEYS = 'keys'
NET = 'network'
NODE = 'node'
NODES = 'nodes'
OWNER_REVOKED = 'owner.revoked'
OWNER_TRUSTED = 'owner.trusted'
OWNER_VERIFIED = 'owner.verified'
PRIVKEYS = 'privkeys'
PROFILE = 'profile'
class angelos.lib.policy.portfolio.PGroup

Bases: object

Definitions of different sets of documents for different purposes.

ALL = ('entity', 'profile', 'privkeys', 'keys', 'domain', 'node', 'nodes', 'network', 'issuer.verified', 'issuer.trusted', 'issuer.revoked', 'owner.verified', 'owner.trusted', 'owner.revoked')
CLIENT = ('entity', 'privkeys', 'keys', 'domain', 'nodes')
CLIENT_AUTH = ('entity', 'keys', 'network', 'owner.verified', 'owner.trusted')
ISSUER = ('issuer.verified', 'issuer.trusted', 'issuer.revoked')
OWNER = ('owner.verified', 'owner.trusted', 'owner.revoked')
SERVER = ('entity', 'privkeys', 'keys', 'domain', 'nodes', 'network')
SHARE_MAX_COMMUNITY = ('entity', 'profile', 'keys', 'network', 'owner.verified', 'owner.trusted')
SHARE_MAX_USER = ('entity', 'profile', 'keys', 'owner.verified', 'owner.trusted')
SHARE_MED_COMMUNITY = ('entity', 'profile', 'keys', 'network')
SHARE_MED_USER = ('entity', 'profile', 'keys')
SHARE_MIN_COMMUNITY = ('entity', 'keys', 'network')
SHARE_MIN_USER = ('entity', 'keys')
SIGNER = ('entity', 'privkeys', 'keys')
VERIFIER = ('entity', 'keys')
VERIFIER_REVOKED = ('entity', 'keys', 'issuer.revoked')
class angelos.lib.policy.portfolio.Portfolio

Bases: angelos.lib.policy.types.PortfolioABC

Document portfolio.

A portfolio class holds a set of documents that belongs to an entity. This way it is easy to handle documents related to entities and execute policies and operations that are related.

apply_rules()
from_sets(issuer: Set[Union[angelos.document.entities.Person, angelos.document.entities.Ministry, angelos.document.entities.Church, angelos.document.entities.PrivateKeys, angelos.document.entities.Keys, angelos.document.profiles.PersonProfile, angelos.document.profiles.MinistryProfile, angelos.document.profiles.ChurchProfile, angelos.document.domain.Domain, angelos.document.domain.Node, angelos.document.domain.Network, angelos.document.statements.Verified, angelos.document.statements.Trusted, angelos.document.statements.Revoked, angelos.document.messages.Note, angelos.document.messages.Instant, angelos.document.messages.Mail, angelos.document.messages.Share, angelos.document.messages.Report, angelos.document.envelope.Envelope]] = {}, owner: Set[Union[angelos.document.entities.Person, angelos.document.entities.Ministry, angelos.document.entities.Church, angelos.document.entities.PrivateKeys, angelos.document.entities.Keys, angelos.document.profiles.PersonProfile, angelos.document.profiles.MinistryProfile, angelos.document.profiles.ChurchProfile, angelos.document.domain.Domain, angelos.document.domain.Node, angelos.document.domain.Network, angelos.document.statements.Verified, angelos.document.statements.Trusted, angelos.document.statements.Revoked, angelos.document.messages.Note, angelos.document.messages.Instant, angelos.document.messages.Mail, angelos.document.messages.Share, angelos.document.messages.Report, angelos.document.envelope.Envelope]] = {}) → bool

Import documents to portfolio from two sets of docs.

Return True if all documents where imported else False.

to_sets()

Export documents of portfolio as two sets of docs

class angelos.lib.policy.portfolio.PortfolioPolicy

Bases: object

Portfolio load configurations.

static deserialize(data: bytes) → Union[angelos.document.entities.Person, angelos.document.entities.Ministry, angelos.document.entities.Church, angelos.document.entities.PrivateKeys, angelos.document.entities.Keys, angelos.document.profiles.PersonProfile, angelos.document.profiles.MinistryProfile, angelos.document.profiles.ChurchProfile, angelos.document.domain.Domain, angelos.document.domain.Node, angelos.document.domain.Network, angelos.document.statements.Verified, angelos.document.statements.Trusted, angelos.document.statements.Revoked, angelos.document.messages.Note, angelos.document.messages.Instant, angelos.document.messages.Mail, angelos.document.messages.Share, angelos.document.messages.Report, angelos.document.envelope.Envelope]

Restore document from stream of bytes.

static doc2fileident(document: Union[angelos.document.entities.Person, angelos.document.entities.Ministry, angelos.document.entities.Church, angelos.document.entities.PrivateKeys, angelos.document.entities.Keys, angelos.document.profiles.PersonProfile, angelos.document.profiles.MinistryProfile, angelos.document.profiles.ChurchProfile, angelos.document.domain.Domain, angelos.document.domain.Node, angelos.document.domain.Network, angelos.document.statements.Verified, angelos.document.statements.Trusted, angelos.document.statements.Revoked, angelos.document.messages.Note, angelos.document.messages.Instant, angelos.document.messages.Mail, angelos.document.messages.Share, angelos.document.messages.Report, angelos.document.envelope.Envelope]) → pathlib.PurePosixPath

Translate document into file identifier.

static exports(portfolio: angelos.lib.policy.portfolio.Portfolio) → bytes

Export portfolio of documents to bytes.

static factory(assembly: dict)angelos.lib.policy.portfolio.Portfolio

Assemble a portfolio from dictionary.

static imports(data: bytes)angelos.lib.policy.portfolio.Portfolio

Import portfolio of documents from bytes.

static is_importable(portfolio: angelos.lib.policy.portfolio.Portfolio, field: unicode, doc: Union[angelos.document.entities.Person, angelos.document.entities.Ministry, angelos.document.entities.Church, angelos.document.entities.PrivateKeys, angelos.document.entities.Keys, angelos.document.profiles.PersonProfile, angelos.document.profiles.MinistryProfile, angelos.document.profiles.ChurchProfile, angelos.document.domain.Domain, angelos.document.domain.Node, angelos.document.domain.Network, angelos.document.statements.Verified, angelos.document.statements.Trusted, angelos.document.statements.Revoked, angelos.document.messages.Note, angelos.document.messages.Instant, angelos.document.messages.Mail, angelos.document.messages.Share, angelos.document.messages.Report, angelos.document.envelope.Envelope])

Test if a document is importable.

In order to be importable the document has to be non-existent in the portfolio.

Parameters
  • portfolio

  • field

  • doc

Returns:

static is_updatable(portfolio: angelos.lib.policy.portfolio.Portfolio, field: unicode, doc: Union[angelos.document.entities.Person, angelos.document.entities.Ministry, angelos.document.entities.Church, angelos.document.entities.PrivateKeys, angelos.document.entities.Keys, angelos.document.profiles.PersonProfile, angelos.document.profiles.MinistryProfile, angelos.document.profiles.ChurchProfile, angelos.document.domain.Domain, angelos.document.domain.Node, angelos.document.domain.Network, angelos.document.statements.Verified, angelos.document.statements.Trusted, angelos.document.statements.Revoked, angelos.document.messages.Note, angelos.document.messages.Instant, angelos.document.messages.Mail, angelos.document.messages.Share, angelos.document.messages.Report, angelos.document.envelope.Envelope])

Test if a document is updatable.

In order to be importable the document has to be existent in the portfolio but newer.

Parameters
  • portfolio

  • field

  • doc

Returns:

static path2fileident(filename: unicode) → unicode

Translate document into file identifier.

static serialize(document: Union[angelos.document.entities.Person, angelos.document.entities.Ministry, angelos.document.entities.Church, angelos.document.entities.PrivateKeys, angelos.document.entities.Keys, angelos.document.profiles.PersonProfile, angelos.document.profiles.MinistryProfile, angelos.document.profiles.ChurchProfile, angelos.document.domain.Domain, angelos.document.domain.Node, angelos.document.domain.Network, angelos.document.statements.Verified, angelos.document.statements.Trusted, angelos.document.statements.Revoked, angelos.document.messages.Note, angelos.document.messages.Instant, angelos.document.messages.Mail, angelos.document.messages.Share, angelos.document.messages.Report, angelos.document.envelope.Envelope]) → bytes

“Serialize document into streams of bytes.

static validate(portfolio: angelos.lib.policy.portfolio.Portfolio, config: Tuple[str]) → bool

Validate each document from the portfolio in the documents list.

static validate_belonging(portfolio: angelos.lib.policy.portfolio.Portfolio) → bool

Validates that all elements belong to entity.

static validate_verify(portfolio: angelos.lib.policy.portfolio.Portfolio) → bool

Verify cryptographically the documents.

Validate issuership of all except “owner” docs.

class angelos.lib.policy.portfolio.PrivatePortfolio

Bases: angelos.lib.policy.portfolio.Portfolio, angelos.lib.policy.types.PrivatePortfolioABC

Adds private keys to Document portfolio.

apply_rules()
classmethod factory(issuer: set, owner: set)angelos.lib.policy.portfolio.PrivatePortfolio
to_portfolio()angelos.lib.policy.portfolio.Portfolio

Get portfolio of private.

class angelos.lib.policy.portfolio.Statements(*args)

Bases: object

Statement portfolio

Portfolio of Statement documents.

to_set() → set