Exemple #1
0
 def __init__(self,
              name: str,
              basedirpath: str,
              client: Client = None,
              wallet: Wallet = None,
              port: int = None):
     super().__init__(name, basedirpath, client, port)
     self._wallet = wallet or Wallet(name)
     obs = self._wallet.handleIncomingReply
     if not self.client.hasObserver(obs):
         self.client.registerObserver(obs)
     self._wallet.pendSyncRequests()
     prepared = self._wallet.preparePending()
     self.client.submitReqs(*prepared)
     self.loop = asyncio.get_event_loop()
     self.msgHandlers = {
         ERROR: self._handleError,
         AVAIL_CLAIM_LIST: self._handleAcceptInviteResponse,
         CLAIMS: self._handleReqClaimResponse,
         ACCEPT_INVITE: self._acceptInvite,
         REQUEST_CLAIM_ATTRS: self._returnClaimAttrs,
         REQUEST_CLAIM: self._reqClaim,
         CLAIM_ATTRS: self._handleClaimAttrs,
         EVENT: self._eventHandler
     }
Exemple #2
0
def runAgent(agentClass,
             name,
             wallet=None,
             basedirpath=None,
             port=None,
             startRunning=True,
             bootstrap=False):
    config = getConfig()

    if not wallet:
        wallet = Wallet(name)
    if not basedirpath:
        basedirpath = config.baseDir
    if not port:
        _, port = genHa()

    _, clientPort = genHa()
    client = Client(randomString(6),
                    ha=("0.0.0.0", clientPort),
                    basedirpath=basedirpath)

    agent = agentClass(basedirpath=basedirpath,
                       client=client,
                       wallet=wallet,
                       port=port)
    if startRunning:
        if bootstrap:
            agent.bootstrap()
        with Looper(debug=True) as looper:
            looper.add(agent)
            logger.debug("Running {} now (port: {})".format(name, port))
            looper.run()
    else:
        return agent
Exemple #3
0
def clientFromSigner(signer, looper, nodeSet, tdir):
    wallet = Wallet(signer.identifier)
    wallet.addIdentifier(signer)
    s = genTestClient(nodeSet, tmpdir=tdir, identifier=signer.identifier)
    looper.add(s)
    looper.run(s.ensureConnectedToNodes())
    return s
Exemple #4
0
def createAgent(agentClass,
                name,
                wallet=None,
                basedirpath=None,
                port=None,
                loop=None,
                clientClass=Client):
    config = getConfig()

    if not wallet:
        wallet = Wallet(name)
    if not basedirpath:
        basedirpath = config.baseDir
    if not port:
        _, port = genHa()

    _, clientPort = genHa()
    client = clientClass(randomString(6),
                         ha=("0.0.0.0", clientPort),
                         basedirpath=basedirpath)

    return agentClass(basedirpath=basedirpath,
                      client=client,
                      wallet=wallet,
                      port=port,
                      loop=loop)
Exemple #5
0
def addRole(looper, creatorClient, creatorWallet, name, useDid=True,
            addVerkey=True, role=None):
    wallet = Wallet(name)
    signer = DidSigner() if useDid else SimpleSigner()
    idr, _ = wallet.addIdentifier(signer=signer)
    verkey = wallet.getVerkey(idr) if addVerkey else None
    createNym(looper, idr, creatorClient, creatorWallet, verkey=verkey,
              role=role)
    return wallet
Exemple #6
0
def nonSponsor(looper, nodeSet, tdir):
    sseed = b'this is a secret sponsor seed...'
    signer = SimpleSigner(seed=sseed)
    c, _ = genTestClient(nodeSet, tmpdir=tdir, usePoolLedger=True)
    w = Wallet(c.name)
    w.addIdentifier(signer=signer)
    c.registerObserver(w.handleIncomingReply)
    looper.add(c)
    looper.run(c.ensureConnectedToNodes())
    return c, w
Exemple #7
0
def anotherSponsor(genned, steward, stewardWallet, tdir, looper):
    sseed = b'this is 1 secret sponsor seed...'
    signer = SimpleSigner(seed=sseed)
    c, _ = genTestClient(genned, tmpdir=tdir)
    w = Wallet(c.name)
    w.addSigner(signer=signer)
    c.registerObserver(w.handleIncomingReply)
    looper.add(c)
    looper.run(c.ensureConnectedToNodes())
    createNym(looper, signer.verstr, steward, stewardWallet, SPONSOR)
    return c, w
Exemple #8
0
def testNonSponsoredNymCanDoGetNym(nodeSet, addedSponsor, sponsorWallet, tdir,
                                   looper):
    signer = SimpleSigner()
    someClient, _ = genTestClient(nodeSet, tmpdir=tdir, usePoolLedger=True)
    wallet = Wallet(someClient.name)
    wallet.addIdentifier(signer=signer)
    someClient.registerObserver(wallet.handleIncomingReply)
    looper.add(someClient)
    looper.run(someClient.ensureConnectedToNodes())
    needle = sponsorWallet.defaultId
    makeGetNymRequest(someClient, wallet, needle)
    looper.run(eventually(someClient.hasNym, needle, retryWait=1, timeout=5))
Exemple #9
0
def anotherSponsor(nodeSet, steward, stewardWallet, tdir, looper):
    sseed = b'this is 1 secret sponsor seed...'
    signer = SimpleSigner(seed=sseed)
    c, _ = genTestClient(nodeSet, tmpdir=tdir, usePoolLedger=True)
    w = Wallet(c.name)
    w.addIdentifier(signer=signer)
    c.registerObserver(w.handleIncomingReply)
    looper.add(c)
    looper.run(c.ensureConnectedToNodes())
    createNym(looper, signer.identifier, steward, stewardWallet,
              role=SPONSOR, verkey=signer.verkey)
    return c, w
Exemple #10
0
 def __init__(self,
              name: str,
              basedirpath: str,
              client: Client = None,
              wallet: Wallet = None,
              port: int = None,
              loop=None,
              attrRepo=None):
     Agent.__init__(self, name, basedirpath, client, port, loop=loop)
     self._wallet = wallet or Wallet(name)
     self._attrRepo = attrRepo or AttributeRepoInMemory()
     Walleted.__init__(self)
     if self.client:
         self._initIssuerProverVerifier()
Exemple #11
0
def testCredDefSecretKey(tdir, staticPrimes):
    GVT = issuer.AttribDef('gvt', [
        issuer.AttribType('name', encode=True),
        issuer.AttribType('age', encode=False),
        issuer.AttribType('sex', encode=True)
    ])
    sprimes = staticPrimes["prime1"]
    # sk = CredDefSecretKey(*sprimes)
    sk = CredDefSecretKey(*sprimes)
    cd = cred_def.CredDef(322324, GVT.attribNames())

    wallet = Wallet("testWallet")
    # cdsk = CredDefSk(name, version, serializedSk)
    wallet.addCredDefSk(str(sk))
    stored = wallet.getCredDefSk(CredDefKey(name, version))
    assert serializedSk == stored.secretKey
Exemple #12
0
def runAlice(name=None,
             wallet=None,
             basedirpath=None,
             port=None,
             startRunning=True):
    # TODO: Copied code from `runFaber`, need to refactor
    name = name or 'Alice Jones'
    wallet = wallet or Wallet(name)
    config = getConfig()
    basedirpath = basedirpath or os.path.expanduser(config.baseDir)
    if not port:
        _, port = genHa()
    _, clientPort = genHa()
    client = Client(randomString(6),
                    ha=("0.0.0.0", clientPort),
                    basedirpath=basedirpath)

    def listClaims(msg):
        body, frm = msg
        """
        body = {
            "type": <some type>,
            "identifier": <id>,
            "nonce": <nonce>,
            "signature" : <sig>
        }
        """
        # TODO: Need to do nonce verification here
        data = json.loads(body)
        print(data)
        # wallet.knownIds[data['identifier']] =
        # TODO: Send claims

    handlers = {AVAIL_CLAIM_LIST: listClaims}

    alice = AliceAgent(name,
                       basedirpath=basedirpath,
                       client=client,
                       port=port,
                       handlers=handlers)
    if startRunning:
        with Looper(debug=True) as looper:
            looper.add(alice)
            logger.debug("Running Faber now...")
            looper.run()
    else:
        return alice
Exemple #13
0
def testNewKeyChangesWalletsDefaultId(be, do, poolNodesStarted,
                                      aliceCLI, connectedToTest):
    mywallet = Wallet('my wallet')
    keyseed='a'*32
    idr, _ = mywallet.addIdentifier(seed=keyseed.encode("utf-8"))

    be(aliceCLI)

    do('connect test', within=3, expect=connectedToTest)

    do('new key with seed {}'.format(keyseed))

    do('send NYM dest={}'.format(idr))

    do('new key with seed 11111111111111111111111111111111')

    do('send NYM dest={}'.format(idr),
       within=3,
       expect=["Nym {} added".format(idr)]
    )
Exemple #14
0
def wallet():
    return Wallet('my wallet')
Exemple #15
0
def _newWallet(name=None):
    signer = SimpleSigner()
    w = Wallet(name or signer.identifier)
    w.addIdentifier(signer=signer)
    return w
Exemple #16
0
def clientAndWallet1(client1Signer, looper, nodeSet, tdir, up):
    client, wallet = genTestClient(nodeSet, tmpdir=tdir)
    wallet = Wallet(client.name)
    wallet.addSigner(signer=client1Signer)
    return client, wallet
Exemple #17
0
 def __init__(self, client=None):
     self.client = client
     self.wallet = Wallet(self.client)  # created only once per organization
     self.userWallets = {}  # type: Dict[str, Wallet]
Exemple #18
0
def stewardWallet():
    wallet = Wallet('steward')
    seed = b'is a pit   seed, or somepin else'
    wallet.addSigner(seed=seed)
    assert wallet.defaultId == 'LRtO/oin94hzKKCVG4GOG1eMuH7uVMJ3txDUHBX2BqY='
    return wallet
Exemple #19
0
 def _(name):
     wallet = Wallet(name)
     wallet.addIdentifier(signer=DidSigner())
     return wallet
Exemple #20
0
def trusteeWallet(trusteeData):
    name, sigseed = trusteeData
    wallet = Wallet('trustee')
    signer = SimpleSigner(seed=sigseed)
    wallet.addIdentifier(signer=signer)
    return wallet
Exemple #21
0
def sponsorWallet():
    wallet = Wallet('sponsor')
    seed = b'sponsors are people too.........'
    wallet.addIdentifier(seed=seed)
    return wallet
Exemple #22
0
def buildAgentWallet(name, seed):
    wallet = Wallet(name)
    wallet.addIdentifier(signer=SimpleSigner(seed=seed))
    return wallet
Exemple #23
0
def faberWallet():
    name = "FaberCollege"
    wallet = Wallet(name)
    return wallet
Exemple #24
0
def aliceWallet():
    name = "Alice"
    wallet = Wallet(name)
    return wallet
Exemple #25
0
def clientAndWallet1(client1Signer, looper, nodeSet, tdir, up):
    client, wallet = genTestClient(nodeSet, tmpdir=tdir, usePoolLedger=True)
    wallet = Wallet(client.name)
    wallet.addIdentifier(signer=client1Signer)
    return client, wallet
Exemple #26
0
def acmeWallet():
    name = "Acme"
    wallet = Wallet(name)
    return wallet
Exemple #27
0
def stewardWallet(poolTxnStewardData):
    name, sigseed = poolTxnStewardData
    wallet = Wallet('steward')
    signer = SimpleSigner(seed=sigseed)
    wallet.addIdentifier(signer=signer)
    return wallet
Exemple #28
0
def addUser(looper, creatorClient, creatorWallet, name):
    wallet = Wallet(name)
    wallet.addSigner()
    createNym(looper, wallet.defaultId, creatorClient, creatorWallet)
    return wallet