本文整理汇总了Python中sawtooth_signing.CryptoFactory类的典型用法代码示例。如果您正苦于以下问题:Python CryptoFactory类的具体用法?Python CryptoFactory怎么用?Python CryptoFactory使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了CryptoFactory类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Python代码示例。
示例1: __init__
def __init__(self, delegate, args):
super(IntKeyWorkload, self).__init__(delegate, args)
self._auth_info = args.auth_info
self._urls = []
self._pending_batches = {}
self._lock = threading.Lock()
self._delegate = delegate
self._deps = {}
context = create_context('secp256k1')
crypto_factory = CryptoFactory(context=context)
if args.key_file is not None:
try:
with open(args.key_file, 'r') as infile:
signing_key = infile.read().strip()
private_key = Secp256k1PrivateKey.from_hex(signing_key)
self._signer = crypto_factory.new_signer(
private_key=private_key)
except ParseError as pe:
raise IntKeyCliException(str(pe))
except IOError as ioe:
raise IntKeyCliException(str(ioe))
else:
self._signer = crypto_factory.new_signer(
context.new_random_private_key())
开发者ID:cianx,项目名称:sawtooth-core,代码行数:25,代码来源:intkey_workload.py
示例2: _read_signer
def _read_signer(key_filename):
"""Reads the given file as a hex key.
Args:
key_filename: The filename where the key is stored. If None,
defaults to the default key for the current user.
Returns:
Signer: the signer
Raises:
CliException: If unable to read the file.
"""
filename = key_filename
if filename is None:
filename = os.path.join(os.path.expanduser('~'),
'.sawtooth',
'keys',
getpass.getuser() + '.priv')
try:
with open(filename, 'r') as key_file:
signing_key = key_file.read().strip()
except IOError as e:
raise CliException('Unable to read key file: {}'.format(str(e)))
try:
private_key = Secp256k1PrivateKey.from_hex(signing_key)
except ParseError as e:
raise CliException('Unable to read key in file: {}'.format(str(e)))
context = create_context('secp256k1')
crypto_factory = CryptoFactory(context)
return crypto_factory.new_signer(private_key)
开发者ID:jjason,项目名称:sawtooth-core,代码行数:34,代码来源:sawset.py
示例3: do_populate
def do_populate(batches, keys):
context = create_context('secp256k1')
private_key = context.new_random_private_key()
crypto_factory = CryptoFactory(context)
signer = crypto_factory.new_signer(private_key)
total_txn_count = 0
txns = []
for i in range(0, len(keys)):
name = list(keys)[i]
txn = create_intkey_transaction(
verb='set',
name=name,
value=random.randint(9000, 100000),
deps=[],
signer=signer)
total_txn_count += 1
txns.append(txn)
# Establish the signature of the txn associated with the word
# so we can create good dependencies later
keys[name] = txn.header_signature
batch = create_batch(
transactions=txns,
signer=signer)
batches.append(batch)
开发者ID:Whiteblock,项目名称:sawtooth-core,代码行数:27,代码来源:create_batch.py
示例4: setUp
def setUp(self):
self.dir = tempfile.mkdtemp()
self.block_db = NativeLmdbDatabase(
os.path.join(self.dir, 'block.lmdb'),
BlockStore.create_index_configuration())
self.block_store = BlockStore(self.block_db)
self.block_manager = BlockManager()
self.block_manager.add_commit_store(self.block_store)
self.gossip = MockGossip()
self.completer = Completer(
block_manager=self.block_manager,
transaction_committed=self.block_store.has_transaction,
get_committed_batch_by_id=self.block_store.get_batch,
get_committed_batch_by_txn_id=(
self.block_store.get_batch_by_transaction
),
get_chain_head=lambda: self.block_store.chain_head,
gossip=self.gossip)
self.completer.set_on_block_received(self._on_block_received)
self.completer.set_on_batch_received(self._on_batch_received)
self._has_block_value = True
context = create_context('secp256k1')
private_key = context.new_random_private_key()
crypto_factory = CryptoFactory(context)
self.signer = crypto_factory.new_signer(private_key)
self.blocks = []
self.batches = []
开发者ID:cianx,项目名称:sawtooth-core,代码行数:29,代码来源:test.py
示例5: setUp
def setUp(self):
context = create_context('secp256k1')
crypto_factory = CryptoFactory(context)
private_key = context.new_random_private_key()
self.signer = crypto_factory.new_signer(private_key)
self._identity_view_factory = MockIdentityViewFactory()
self.permissions = {}
self._identity_cache = IdentityCache(
self._identity_view_factory)
self.permission_verifier = \
PermissionVerifier(
permissions=self.permissions,
current_root_func=self._current_root_func,
identity_cache=self._identity_cache)
开发者ID:jjason,项目名称:sawtooth-core,代码行数:14,代码来源:tests.py
示例6: __init__
def __init__(self, with_genesis=True):
self.block_sender = MockBlockSender()
self.batch_sender = MockBatchSender()
self.dir = tempfile.mkdtemp()
self.block_db = NativeLmdbDatabase(
os.path.join(self.dir, 'block.lmdb'),
BlockStore.create_index_configuration())
self.block_store = BlockStore(self.block_db)
self.block_cache = BlockCache(self.block_store)
self.state_db = NativeLmdbDatabase(
os.path.join(self.dir, "merkle.lmdb"),
MerkleDatabase.create_index_configuration())
self.state_view_factory = NativeStateViewFactory(self.state_db)
self.block_manager = BlockManager()
self.block_manager.add_commit_store(self.block_store)
context = create_context('secp256k1')
private_key = context.new_random_private_key()
crypto_factory = CryptoFactory(context)
self.signer = crypto_factory.new_signer(private_key)
identity_private_key = context.new_random_private_key()
self.identity_signer = crypto_factory.new_signer(identity_private_key)
chain_head = None
if with_genesis:
self.genesis_block = self.generate_genesis_block()
chain_head = self.genesis_block
self.block_manager.put([chain_head.block])
self.block_manager.persist(
chain_head.block.header_signature,
"commit_store")
self.block_publisher = BlockPublisher(
block_manager=self.block_manager,
transaction_executor=MockTransactionExecutor(),
transaction_committed=self.block_store.has_transaction,
batch_committed=self.block_store.has_batch,
state_view_factory=self.state_view_factory,
block_sender=self.block_sender,
batch_sender=self.block_sender,
chain_head=chain_head.block,
identity_signer=self.identity_signer,
data_dir=None,
config_dir=None,
permission_verifier=MockPermissionVerifier(),
batch_observers=[])
开发者ID:cianx,项目名称:sawtooth-core,代码行数:48,代码来源:block_tree_manager.py
示例7: __init__
def __init__(self, base_url, keyfile, wait=None):
"""
Member variables:
_base_url
_private_key
_public_key
_transaction_family
_family_version
_wait
"""
self._base_url = base_url
try:
with open(keyfile) as fd:
private_key_str = fd.read().strip()
except OSError as err:
raise IOError("Failed to read keys: {}.".format(str(err)))
try:
private_key = Secp256k1PrivateKey.from_hex(private_key_str)
except ParseError as e:
raise BattleshipException(
'Unable to load private key: {}'.format(str(e)))
self._signer = CryptoFactory(
create_context('secp256k1')).new_signer(private_key)
self._transaction_family = "battleship"
self._family_version = "1.0"
self._wait = wait
开发者ID:dcmiddle,项目名称:sawtooth-core,代码行数:30,代码来源:battleship_client.py
示例8: setUp
def setUp(self):
self.block_store = BlockStore(DictDatabase(
indexes=BlockStore.create_index_configuration()))
self.gossip = MockGossip()
self.completer = Completer(self.block_store, self.gossip)
self.completer._on_block_received = self._on_block_received
self.completer._on_batch_received = self._on_batch_received
self.completer._has_block = self._has_block
self._has_block_value = True
context = create_context('secp256k1')
private_key = context.new_random_private_key()
crypto_factory = CryptoFactory(context)
self.signer = crypto_factory.new_signer(private_key)
self.blocks = []
self.batches = []
开发者ID:Whiteblock,项目名称:sawtooth-core,代码行数:17,代码来源:test.py
示例9: __init__
def __init__(self, with_genesis=True):
self.block_sender = MockBlockSender()
self.batch_sender = MockBatchSender()
self.block_store = BlockStore(DictDatabase(
indexes=BlockStore.create_index_configuration()))
self.block_cache = BlockCache(self.block_store)
self.state_db = {}
# add the mock reference to the consensus
consensus_setting_addr = SettingsView.setting_address(
'sawtooth.consensus.algorithm')
self.state_db[consensus_setting_addr] = _setting_entry(
'sawtooth.consensus.algorithm', 'test_journal.mock_consensus')
self.state_view_factory = MockStateViewFactory(self.state_db)
context = create_context('secp256k1')
private_key = context.new_random_private_key()
crypto_factory = CryptoFactory(context)
self.signer = crypto_factory.new_signer(private_key)
identity_private_key = context.new_random_private_key()
self.identity_signer = crypto_factory.new_signer(identity_private_key)
chain_head = None
if with_genesis:
self.genesis_block = self.generate_genesis_block()
self.set_chain_head(self.genesis_block)
chain_head = self.genesis_block
self.block_publisher = BlockPublisher(
transaction_executor=MockTransactionExecutor(),
block_cache=self.block_cache,
state_view_factory=self.state_view_factory,
settings_cache=SettingsCache(
SettingsViewFactory(self.state_view_factory),
),
block_sender=self.block_sender,
batch_sender=self.block_sender,
squash_handler=None,
chain_head=chain_head,
identity_signer=self.identity_signer,
data_dir=None,
config_dir=None,
permission_verifier=MockPermissionVerifier(),
check_publish_block_frequency=0.1,
batch_observers=[])
开发者ID:jjason,项目名称:sawtooth-core,代码行数:45,代码来源:block_tree_manager.py
示例10: create_account
async def create_account(request):
"""Creates a new Account and corresponding authorization token"""
required_fields = ['email', 'password']
common.validate_fields(required_fields, request.json)
private_key = request.app.config.CONTEXT.new_random_private_key()
signer = CryptoFactory(request.app.config.CONTEXT).new_signer(private_key)
public_key = signer.get_public_key().as_hex()
auth_entry = _create_auth_dict(
request, public_key, private_key.as_hex())
await auth_query.create_auth_entry(request.app.config.DB_CONN, auth_entry)
account = _create_account_dict(request.json, public_key)
batches, batch_id = transaction_creation.create_account(
txn_key=signer,
batch_key=request.app.config.SIGNER,
label=account.get('label'),
description=account.get('description'))
await messaging.send(
request.app.config.VAL_CONN,
request.app.config.TIMEOUT,
batches)
try:
await messaging.check_batch_status(
request.app.config.VAL_CONN, batch_id)
except (ApiBadRequest, ApiInternalError) as err:
await auth_query.remove_auth_entry(
request.app.config.DB_CONN, request.json.get('email'))
raise err
token = common.generate_auth_token(
request.app.config.SECRET_KEY,
account.get('email'),
public_key)
return response.json(
{
'authorization': token,
'account': account
})
开发者ID:delventhalz,项目名称:sawtooth-mktplace,代码行数:44,代码来源:accounts.py
示例11: do_generate
def do_generate(args, batches, keys):
context = create_context('secp256k1')
private_key = context.new_random_private_key()
crypto_factory = CryptoFactory(context)
signer = crypto_factory.new_signer(private_key)
start = time.time()
total_txn_count = 0
for i in range(0, args.count):
txns = []
for _ in range(0, random.randint(1, args.max_batch_size)):
name = random.choice(list(keys))
txn = create_intkey_transaction(
verb=random.choice(['inc', 'dec']),
name=name,
value=random.randint(1, 10),
deps=[keys[name]],
signer=signer)
total_txn_count += 1
txns.append(txn)
batch = create_batch(
transactions=txns,
signer=signer)
batches.append(batch)
if i % 100 == 0 and i != 0:
stop = time.time()
txn_count = 0
for batch in batches[-100:]:
txn_count += len(batch.transactions)
fmt = 'batches {}, batch/sec: {:.2f}, txns: {}, txns/sec: {:.2f}'
print(fmt.format(
str(i),
100 / (stop - start),
str(total_txn_count),
txn_count / (stop - start)))
start = stop
开发者ID:Whiteblock,项目名称:sawtooth-core,代码行数:41,代码来源:create_batch.py
示例12: test_authorization_challenge_submit_bad_signature
def test_authorization_challenge_submit_bad_signature(self):
"""
Test the AuthorizationChallengeSubmitHandler returns an
AuthorizationViolation and closes the connection if the signature
is not verified.
"""
context = create_context('secp256k1')
private_key = context.new_random_private_key()
crypto_factory = CryptoFactory(context)
signer = crypto_factory.new_signer(private_key)
payload = os.urandom(10)
signature = signer.sign(payload)
auth_challenge_submit = AuthorizationChallengeSubmit(
public_key="other",
signature=signature,
roles=[RoleType.Value("NETWORK")])
roles = {"network": AuthorizationType.TRUST}
network = MockNetwork(
roles,
connection_status={
"connection_id": ConnectionStatus.AUTH_CHALLENGE_REQUEST
})
permission_verifer = MockPermissionVerifier()
gossip = MockGossip()
handler = AuthorizationChallengeSubmitHandler(
network, permission_verifer, gossip, {"connection_id": payload})
handler_status = handler.handle(
"connection_id",
auth_challenge_submit.SerializeToString())
self.assertEqual(handler_status.status, HandlerStatus.RETURN_AND_CLOSE)
self.assertEqual(
handler_status.message_type,
validator_pb2.Message.AUTHORIZATION_VIOLATION)
开发者ID:jjason,项目名称:sawtooth-core,代码行数:38,代码来源:test.py
示例13: load_identity_signer
def load_identity_signer(key_dir, key_name):
"""Loads a private key from the key directory, based on a validator's
identity.
Args:
key_dir (str): The path to the key directory.
key_name (str): The name of the key to load.
Returns:
Signer: the cryptographic signer for the key
"""
key_path = os.path.join(key_dir, '{}.priv'.format(key_name))
if not os.path.exists(key_path):
raise LocalConfigurationError(
"No such signing key file: {}".format(key_path))
if not os.access(key_path, os.R_OK):
raise LocalConfigurationError(
"Key file is not readable: {}".format(key_path))
LOGGER.info('Loading signing key: %s', key_path)
try:
with open(key_path, 'r') as key_file:
private_key_str = key_file.read().strip()
except IOError as e:
raise LocalConfigurationError(
"Could not load key file: {}".format(str(e)))
try:
private_key = Secp256k1PrivateKey.from_hex(private_key_str)
except signing.ParseError as e:
raise LocalConfigurationError(
"Invalid key in file {}: {}".format(key_path, str(e)))
context = signing.create_context('secp256k1')
crypto_factory = CryptoFactory(context)
return crypto_factory.new_signer(private_key)
开发者ID:Whiteblock,项目名称:sawtooth-core,代码行数:37,代码来源:keys.py
示例14: create_chain
def create_chain(num=10):
context = create_context('secp256k1')
private_key = context.new_random_private_key()
crypto_factory = CryptoFactory(context)
signer = crypto_factory.new_signer(private_key)
counter = 1
previous_block_id = "0000000000000000"
blocks = []
while counter <= num:
current_block_id = uuid4().hex
txns = [
t[0]
for t in [
create_transaction(
payload=uuid4().hex.encode(), signer=signer)
for _ in range(20)
]
]
txn_ids = [t.header_signature for t in txns]
batch = create_batch(
transactions=txns,
signer=signer)
blk_w = create_block(
counter,
previous_block_id,
current_block_id,
batches=[batch])
blocks.append((current_block_id, blk_w, txn_ids))
counter += 1
previous_block_id = current_block_id
return blocks
开发者ID:Whiteblock,项目名称:sawtooth-core,代码行数:36,代码来源:tests.py
示例15: __init__
def __init__(self, url, keyfile=None):
self.url = url
if keyfile is not None:
try:
with open(keyfile) as fd:
private_key_str = fd.read().strip()
fd.close()
except OSError as err:
raise IntkeyClientException(
'Failed to read private key: {}'.format(str(err)))
try:
private_key = Secp256k1PrivateKey.from_hex(private_key_str)
except ParseError as e:
raise IntkeyClientException(
'Unable to load private key: {}'.format(str(e)))
self._signer = CryptoFactory(
create_context('secp256k1')).new_signer(private_key)
开发者ID:cianx,项目名称:sawtooth-core,代码行数:20,代码来源:intkey_client.py
示例16: __init__
def __init__(self, file_name):
"""
Args:
file_name (str): The yaml filename and path.
scheduler (scheduler.Scheduler): Any Scheduler implementaion
context_manager (context_manager.ContextManager): The context
manager holding state for this scheduler.
"""
self._context = create_context('secp256k1')
self._crypto_factory = CryptoFactory(self._context)
self._yaml_file_name = file_name
self._counter = itertools.count(0)
self._referenced_txns_in_other_batches = {}
self._batch_id_by_txn_id = {}
self._txn_execution = {}
self._batch_results = {}
self._batches = []
self._create_batches()
开发者ID:Whiteblock,项目名称:sawtooth-core,代码行数:21,代码来源:yaml_scheduler_tester.py
示例17: __init__
def __init__(self, name, rest_endpoint):
"""
Args:
name (str): An identifier for this Transactor
rest_endpoint (str): The rest api that this Transactor will
communicate with.
"""
self.name = name
self._rest_endpoint = rest_endpoint \
if rest_endpoint.startswith("http://") \
else "http://{}".format(rest_endpoint)
with open('/root/.sawtooth/keys/{}.priv'.format(name)) as priv_file:
private_key = Secp256k1PrivateKey.from_hex(
priv_file.read().strip('\n'))
self._signer = CryptoFactory(create_context('secp256k1')) \
.new_signer(private_key)
self._factories = {}
self._client = RestClient(url=self._rest_endpoint)
self._add_transaction_family_factory(Families.INTKEY)
self._add_transaction_family_factory(Families.XO)
开发者ID:Whiteblock,项目名称:sawtooth-core,代码行数:22,代码来源:test_transactor_permissioning.py
示例18: __init__
def __init__(self, base_url, keyfile=None):
self._base_url = base_url
if keyfile is None:
self._signer = None
return
try:
with open(keyfile) as fd:
private_key_str = fd.read().strip()
except OSError as err:
raise XoException(
'Failed to read private key {}: {}'.format(
keyfile, str(err)))
try:
private_key = Secp256k1PrivateKey.from_hex(private_key_str)
except ParseError as e:
raise XoException(
'Unable to load private key: {}'.format(str(e)))
self._signer = CryptoFactory(create_context('secp256k1')) \
.new_signer(private_key)
开发者ID:Whiteblock,项目名称:sawtooth-core,代码行数:24,代码来源:xo_client.py
示例19: setUp
def setUp(self):
self._temp_dir = tempfile.mkdtemp()
context = create_context('secp256k1')
private_key = context.new_random_private_key()
crypto_factory = CryptoFactory(context)
self._signer = crypto_factory.new_signer(private_key)
开发者ID:Whiteblock,项目名称:sawtooth-core,代码行数:6,代码来源:tests.py
示例20: SchedulerTester
class SchedulerTester(object):
""" The canonical form of the yaml is:
- <------------------------------------------ batch start
state_hash: string. Optional. No default.
- <----------------------------------------- transaction start
inputs: list of string. Required.
- ....
outputs: list of string. Required.
- ....
addresses_to_set: list of dict. Optional.
- string <address>: Optional bytes <value>
addresses_to_delete: list of str. Optional
- string <address>
valid: boolean. Optional. Defaults to True
dependencies: list of string. Optional. Defaults to empty list.
- ..... string. No default. If a dependency is the same
string as a 'name' for another txn, that
txn's signature will be used for the
actual Transaction's dependency. If the
string is not an 'name' of another txn, if
it is longer than 20 characters it will be
used as if is is the actual
Transaction.header_signature for the
dependency. If not, it will be
disregarded.
name: string. Optional. No default.
"""
def __init__(self, file_name):
"""
Args:
file_name (str): The yaml filename and path.
scheduler (scheduler.Scheduler): Any Scheduler implementaion
context_manager (context_manager.ContextManager): The context
manager holding state for this scheduler.
"""
self._context = create_context('secp256k1')
self._crypto_factory = CryptoFactory(self._context)
self._yaml_file_name = file_name
self._counter = itertools.count(0)
self._referenced_txns_in_other_batches = {}
self._batch_id_by_txn_id = {}
self._txn_execution = {}
self._batch_results = {}
self._batches = []
self._create_batches()
@property
def batch_results(self):
"""The batch results calculated from the yaml file.
Returns:
(dict): Computed from the yaml file, a dictionary with
batch signature keys and BatchExecutionResult values.
"""
return self._batch_results
def run_scheduler(self,
scheduler,
context_manager,
validation_state_hash=None,
txns_executed_fifo=True):
"""Add all the batches to the scheduler in order and then run through
the txns in the scheduler, calling next_transaction() after each
transaction_execution_result is set.
Args:
scheduler (scheduler.Scheduler): Any implementation of the
Scheduler abstract base class.
context_manager (context_manager.ContextManager): The context
manager is needed to store state based on the yaml file.
validation_state_hash (str): Used in cases where the yaml
represents a single block of valid batches, and the
state hash is not in the yaml file. This state hash is added
to the last batch in the scheduler.
Returns batch_results (list of tuples): A list of tuples of
batch signature, BatchExecutionResult pairs.
"""
for i, batch in enumerate(self._batches):
if i == len(self._batches) - 1 and \
validation_state_hash is not None:
s_h = validation_state_hash
else:
s_h = self._batch_results[batch.header_signature].state_hash
scheduler.add_batch(batch=batch, state_hash=s_h)
scheduler.finalize()
txns_to_process = deque()
txn_context_by_txn_id = self._compute_transaction_execution_context()
transactions_to_assert_state = {}
while not scheduler.complete(block=False):
stop = False
while not stop:
#.........这里部分代码省略.........
开发者ID:Whiteblock,项目名称:sawtooth-core,代码行数:101,代码来源:yaml_scheduler_tester.py
注:本文中的sawtooth_signing.CryptoFactory类示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论