mirror of https://github.com/nucypher/nucypher.git
More comprehensive granting example script for the docs; Include policy rate.
parent
bdf8c6a7e1
commit
1232e9856f
|
@ -222,8 +222,10 @@ Alice can grant access to Bob using his public keys:
|
||||||
from umbral.keys import UmbralPublicKey
|
from umbral.keys import UmbralPublicKey
|
||||||
from nucypher.characters.lawful import Bob
|
from nucypher.characters.lawful import Bob
|
||||||
from datetime import timedelta
|
from datetime import timedelta
|
||||||
|
from web3 import Web3
|
||||||
import maya
|
import maya
|
||||||
|
|
||||||
|
|
||||||
# Deserialize bob's public keys from the application side-channel
|
# Deserialize bob's public keys from the application side-channel
|
||||||
verifying_key = UmbralPublicKey.from_hex(verifying_key_as_hex),
|
verifying_key = UmbralPublicKey.from_hex(verifying_key_as_hex),
|
||||||
encrypting_key = UmbralPublicKey.from_hex(encryption_key_as_hex)
|
encrypting_key = UmbralPublicKey.from_hex(encryption_key_as_hex)
|
||||||
|
@ -236,6 +238,7 @@ Alice can grant access to Bob using his public keys:
|
||||||
label=b'my-secret-stuff', # Send to Bob via side channel
|
label=b'my-secret-stuff', # Send to Bob via side channel
|
||||||
m=2, # Threshold shares for access
|
m=2, # Threshold shares for access
|
||||||
n=3, # Total nodes with shares
|
n=3, # Total nodes with shares
|
||||||
|
rate=Web3.toWei(50, 'gwei'), # 50 Gwei is the minimum rate (per node per period)
|
||||||
expiration= maya.now() + timedelta(days=5) # Five days from now
|
expiration= maya.now() + timedelta(days=5) # Five days from now
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -243,6 +246,54 @@ Alice can grant access to Bob using his public keys:
|
||||||
policy_encrypting_key = policy.public_key
|
policy_encrypting_key = policy.public_key
|
||||||
|
|
||||||
|
|
||||||
|
Putting it all together, here's an example starter script for granting access using a
|
||||||
|
software wallet and an existing keyring:
|
||||||
|
|
||||||
|
.. code-block:: python
|
||||||
|
|
||||||
|
from nucypher.blockchain.eth.signers import Signer
|
||||||
|
from nucypher.config.keyring import NucypherKeyring
|
||||||
|
from nucypher.characters.lawful import Alice, Bob
|
||||||
|
from umbral.keys import UmbralPublicKey
|
||||||
|
from datetime import timedelta
|
||||||
|
from web3 import Web3
|
||||||
|
import maya
|
||||||
|
|
||||||
|
|
||||||
|
# Restore Existing NuCypher Keyring
|
||||||
|
keyring = NucypherKeyring(account='0xdeadbeef')
|
||||||
|
keyring.unlock('KEYRING PASSWORD')
|
||||||
|
|
||||||
|
# Ethereum Software Wallet
|
||||||
|
wallet = Signer.from_signer_uri("keystore:///home/user/.ethereum/keystore/UTC--2021...')
|
||||||
|
wallet.unlock_account('0xdeadbeef', 'SOFTWARE WALLET PASSWORD')
|
||||||
|
|
||||||
|
# Make Alice
|
||||||
|
alice = Alice(
|
||||||
|
domain='lynx', # testnet
|
||||||
|
keyring=keyring,
|
||||||
|
provider_uri='GOERLI RPC ENDPOINT',
|
||||||
|
signer=wallet,
|
||||||
|
)
|
||||||
|
|
||||||
|
# From Public Key Side Channel
|
||||||
|
verifying_key = UmbralPublicKey.from_hex('0278ad02da8083aea357a8ed675dcc0b6e9c78557c506ea10b102b4b282c006b12')
|
||||||
|
encrypting_key = UmbralPublicKey.from_hex('03ec6b4e1f2b7d06ac544dde86730f9a4047e80a0a4d3c1566e88afe4bb449bdd9')
|
||||||
|
|
||||||
|
# Make Stranger-Bob
|
||||||
|
bob = Bob.from_public_keys(verifying_key=verifying_key, encrypting_key=encrypting_key)
|
||||||
|
|
||||||
|
# Grant Bob Access
|
||||||
|
policy = alice.grant(
|
||||||
|
bob,
|
||||||
|
label=b'my-secret-stuff', # Send to Bob via side channel
|
||||||
|
m=2, # Threshold shares for access
|
||||||
|
n=3, # Total nodes with shares
|
||||||
|
rate=Web3.toWei(50, 'gwei'), # 50 Gwei is the minimum rate (per node per period)
|
||||||
|
expiration= maya.now() + timedelta(days=5) # Five days from now
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
Enrico: Encrypt a Secret
|
Enrico: Encrypt a Secret
|
||||||
------------------------
|
------------------------
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
Expands example granting script for Alice using the python API.
|
Loading…
Reference in New Issue