Пример #1
0
import hashlib
import asyncio
import concurrent.futures
from typing import Dict, Any

from dffml.df.types import Operation
from dffml.df.base import OperationImplementationContext, \
                          OperationImplementation

# pylint: disable=no-name-in-module
from .definitions import UnhashedPassword, \
                         ScryptPassword

scrypt = Operation(name='scrypt',
                   inputs={
                       'password': UnhashedPassword,
                   },
                   outputs={'password': ScryptPassword},
                   conditions=[])


class ScryptContext(OperationImplementationContext):
    @staticmethod
    def hash_password(password):
        # ---- BEGIN Python hashlib docs ----

        # The function provides scrypt password-based key derivation function as
        # defined in RFC 7914.

        # password and salt must be bytes-like objects. Applications and
        # libraries should limit password to a sensible length (e.g. 1024). salt
        # should be about 16 or more bytes from a proper source, e.g.
Пример #2
0
    OperationImplementation,
)
from .log import LOGGER

# pylint: disable=no-name-in-module
from .definitions import (
    URL,
    URLBytes,
    RPMObject,
    rpm_filename,
    binary_is_PIE,
)

url_to_urlbytes = Operation(
    name="url_to_urlbytes",
    inputs={"URL": URL},
    outputs={"download": URLBytes},
    conditions=[],
)


class URLBytesObject(NamedTuple):
    URL: str
    body: bytes

    def __repr__(self):
        return "%s(URL=%s, body=%s...)" % (
            self.__class__.__qualname__,
            self.URL,
            self.body[:10],
        )
Пример #3
0
from dffml.df.types import Operation, Definition
from dffml.df.base import (
    op,
    OperationImplementationContext,
    OperationImplementation,
)


# Definitions
UserInput = Definition(name="UserInput", primitive="str")
DataToPrint = Definition(name="DataToPrint", primitive="generic")

AcceptUserInput = Operation(
    name="AcceptUserInput",
    inputs={},
    outputs={"InputData": UserInput},
    conditions=[],
)


class AcceptUserInputContext(OperationImplementationContext):
    @staticmethod
    def receive_input():
        print("Enter the value: ", end="")
        return input()

    async def run(self, inputs: Dict[str, Any]) -> Dict[str, Any]:
        user_input = await self.parent.loop.run_in_executor(
            self.parent.pool, self.receive_input
        )
        return {"InputData": user_input}
Пример #4
0
import asyncio
import concurrent.futures
from typing import Dict, Any

from dffml.df.types import Operation
from dffml.df.base import (
    OperationImplementationContext,
    OperationImplementation,
)

# pylint: disable=no-name-in-module
from .definitions import UnhashedPassword, ScryptPassword

scrypt = Operation(
    name="scrypt",
    inputs={"password": UnhashedPassword},
    outputs={"password": ScryptPassword},
    conditions=[],
)


class ScryptContext(OperationImplementationContext):
    @staticmethod
    def hash_password(password):
        # ---- BEGIN Python hashlib docs ----

        # The function provides scrypt password-based key derivation function as
        # defined in RFC 7914.

        # password and salt must be bytes-like objects. Applications and
        # libraries should limit password to a sensible length (e.g. 1024). salt
        # should be about 16 or more bytes from a proper source, e.g.