Пример #1
0
    def __init__(self,
                 workspace,
                 project=None,
                 services=None,
                 functions=None,
                 dst_path=None,
                 generate_pd=True,
                 version="1.0"):

        # Assign parameters
        coloredlogs.install(level=workspace.log_level)
        self._version = version
        self._package_descriptor = None
        self._workspace = workspace
        self._project = project
        self._services = services
        self._functions = functions

        # Create a son-access client
        self._access = AccessClient(self._workspace,
                                    log_level=self._workspace.log_level)

        # Create a validator
        self._validator = Validator(workspace=workspace)
        self._validator.configure(syntax=True, integrity=False, topology=False)

        # Create a schema validator
        self._schema_validator = SchemaValidator(workspace)

        # Keep track of VNF packaging referenced in NS
        self._ns_vnf_registry = {}

        # location to write the package
        self._dst_path = dst_path if dst_path else '.'

        # temporary working directory
        self._workdir = '.package-' + str(time.time())

        # Specifies THE service template of this package
        self._entry_service_template = None

        # Keep a list of repositories and
        # catalogue servers that this package depend on.
        # This will be included in the Package Resolver Section
        self._package_resolvers = []

        # Keep a list of external artifact
        # dependencies that this package depends up on
        # This will be included in the Artifact Dependencies Section
        self._artifact_dependencies = []

        # States if this package is self-contained,
        # i.e. if contains all its relevant artifacts
        self._sealed = True

        # Clear and create package specific folder
        if generate_pd:
            self.init_package_skeleton()
            self.build_package()
Пример #2
0
def signature():
    from son.access.access import AccessClient
    from son.workspace.workspace import Workspace
    from Crypto.PublicKey import RSA
    from Crypto.Hash import SHA256

    ws = Workspace('~/workspace/ws1')
    ac = AccessClient(ws)
    key = RSA.generate(2048)

    # package_path = 'son/access/samples/sonata-demo.son'
    package_path = '../samples/sonata-demo.son'
    with open(package_path, 'rb') as fhandle:
        package_content = fhandle.read()

    package_hash = SHA256.new(package_content).digest()
    signature = ac.sign_package(package_path,
                                private_key=key.exportKey().decode('utf-8'))
    public_key = key.publickey()
    print(public_key.verify(package_hash, (int(signature), )))
Пример #3
0
from son.access.access import AccessClient
from son.workspace.workspace import Workspace
from Crypto.PublicKey import RSA
from Crypto.Hash import SHA256

ws = Workspace('~/workspace/ws1')
ac = AccessClient(ws)
key = RSA.generate(2048)

package_path = 'son/access/samples/sonata-demo.son'
with open(package_path, 'rb') as fhandle:
    package_content = fhandle.read()

package_hash = SHA256.new(package_content).digest()
signature = ac.sign_package(package_path,
                            private_key=key.exportKey().decode('utf-8'))
public_key = key.publickey()
print(public_key.verify(package_hash, (int(signature), )))