Skip to content
25 changes: 8 additions & 17 deletions scripts/create_agent.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,42 +7,33 @@
"""

import pytest
import requests
from keri import kering
from keri.core.coring import Tiers

from signify.app.clienting import SignifyClient


def create_agent():
def create_agent_and_controller():
"""Creates an agent using the SignifyClient"""
url = "http://localhost:3901"
boot_url = "http://localhost:3903"
bran = b'0123456789abcdefghijk'
tier = Tiers.med

client = SignifyClient(passcode=bran, tier=tier)
client = SignifyClient(passcode=bran, tier=tier, url=url, boot_url=boot_url)
assert client.controller == "EOgQvKz8ziRn7FdR_ebwK9BkaVOnGeXQOJ87N6hMLrK0"

# Raises configuration error because the started agent has a different controller AID
with pytest.raises(kering.ConfigurationError):
client.connect(url=url)

tier = Tiers.low
client = SignifyClient(passcode=bran, tier=tier)
client = SignifyClient(passcode=bran, tier=tier, url=url, boot_url=boot_url)
assert client.controller == "ELI7pg979AdhmvrjDeam2eAO2SR5niCgnjAJXJHtJose"

evt, siger = client.ctrl.event()

res = requests.post(url="http://localhost:3903/boot",
json=dict(
icp=evt.ked,
sig=siger.qb64,
stem=client.ctrl.stem,
pidx=1,
tier=client.ctrl.tier))
print(res.json())

if res.status_code != requests.codes.accepted:
raise kering.AuthNError(f"unable to initialize cloud agent connection, {res.status_code}, {res.text}")
body = client.boot()
print(body)

client.connect(url=url, )
assert client.agent is not None
Expand All @@ -52,4 +43,4 @@ def create_agent():


if __name__ == "__main__":
create_agent()
create_agent_and_controller()
26 changes: 15 additions & 11 deletions scripts/create_new_multisig_issuer.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,16 @@

Testing clienting with integration tests that require a running KERIA Cloud Agent
"""
from dataclasses import asdict
from time import sleep

import requests
from keri import kering
from keri.core import coring, serdering
from keri.core import serdering
from keri.core.coring import Tiers

from signify.app.clienting import SignifyClient
from signify.core import api

URL = "http://localhost:3901"

Expand Down Expand Up @@ -78,25 +80,27 @@ def create_quadlet():
oobi(client4, "multisig", "http://127.0.0.1:5642/oobi/EC61gZ9lCKmHAS7U5ehUfEbGId5rcY0D7MirFZHDQcE2/witness")


def create_agent(bran, ctrlAid, agentAid):
def create_agent(bran, ctrlAid, agentAid, url: str = '', boot_url: str = ""):
tier = Tiers.low
client = SignifyClient(passcode=bran, tier=tier)
client = SignifyClient(passcode=bran, tier=tier, url=url, boot_url=boot_url)
assert client.controller == ctrlAid

evt, siger = client.ctrl.event()

res = requests.post(url="http://localhost:3903/boot",
json=dict(
icp=evt.ked,
sig=siger.qb64,
stem=client.ctrl.stem,
pidx=1,
tier=client.ctrl.tier))
agent_boot = api.AgentBoot(
icp=evt.ked,
sig=siger.qb64,
stem=client.ctrl.stem,
pidx=1,
tier=client.ctrl.tier
)
res = requests.post(url=boot_url + "/boot",
json=asdict(agent_boot))

if res.status_code != requests.codes.accepted:
raise kering.AuthNError(f"unable to initialize cloud agent connection, {res.status_code}, {res.text}")

client.connect(url=URL, )
client.connect(url=url, )
assert client.agent is not None

assert client.agent.pre == agentAid
Expand Down
2 changes: 1 addition & 1 deletion scripts/create_new_quartet.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@

import requests
from keri import kering
from keri.core import coring, serdering
from keri.core import serdering
from keri.core.coring import Tiers

from signify.app.clienting import SignifyClient
Expand Down
38 changes: 22 additions & 16 deletions scripts/init_agent.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,32 +5,38 @@

Testing clienting with integration tests that require a running KERIA Cloud Agent
"""
from dataclasses import asdict

import pytest
import requests
from keri import kering
from keri.core import coring, serdering, signing
from keri.core import serdering, signing
from keri.core.coring import Tiers

from signify.app.clienting import SignifyClient
from signify.core import api


def create_agent():
def create_agent_with_manual_icp_evt():
"""
With an inception event pasted in through the console, create an agent manually,
not using SignifyClient
"""
url = "http://localhost:3901"
tier = Tiers.med
boot_url = "http://localhost:3903"
tier = Tiers.low
stem = "signify:controller"

ims = input("Type of paste controller inception event:")
serder = serdering.SerderKERI(raw=ims.encode("utf-8"))
siger = signing.Siger(qb64=ims[serder.size:])

res = requests.post(url="http://localhost:3903/boot",
json=dict(
icp=serder.ked,
sig=siger.qb64,
stem=stem,
pidx=1,
tier=tier))
icp_evt = serdering.SerderKERI(raw=ims.encode("utf-8"))
siger = signing.Siger(qb64=ims[icp_evt.size:])

agent_boot = api.AgentBoot(
icp=icp_evt.ked,
sig=siger.qb64,
stem=stem,
pidx=1,
tier=tier
)
res = requests.post(url=f"{boot_url}/boot", json=asdict(agent_boot))

if res.status_code != requests.codes.accepted:
raise kering.AuthNError(f"unable to initialize cloud agent connection, {res.status_code}, {res.text}")
Expand All @@ -40,4 +46,4 @@ def create_agent():


if __name__ == "__main__":
create_agent()
create_agent_with_manual_icp_evt()
3 changes: 2 additions & 1 deletion scripts/join_new_quadlet.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,9 @@

from time import sleep

from keri.core import eventing, coring, serdering, signing
from keri.core import eventing, serdering, signing
from keri.core.coring import Tiers

from signify.app.clienting import SignifyClient


Expand Down
2 changes: 1 addition & 1 deletion scripts/list_notifications.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@

Testing clienting with integration tests that require a running KERIA Cloud Agent
"""
from keri.core import coring
from keri.core.coring import Tiers

from signify.app.clienting import SignifyClient


Expand Down
1 change: 0 additions & 1 deletion scripts/multisig-holder.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@

Testing clienting with integration tests that require a running KERIA Cloud Agent
"""
import json
from time import sleep

import requests
Expand Down
16 changes: 8 additions & 8 deletions scripts/multisig-issuer-holder.py
Original file line number Diff line number Diff line change
Expand Up @@ -326,22 +326,22 @@ def create_admit(client, participant, group, said, recp, stamp):
ghab = get_aid(client, group)
mhab = get_aid(client, participant)

admit, sigs, end = ipex.admit(ghab, "", said, dt=stamp)
admit, sigs, atc = ipex.admit(ghab, "", said, dt=stamp)

print(f"created ADMIT {admit.said}")
mstate = ghab["state"]
seal = eventing.SealEvent(i=ghab["prefix"], s=mstate["ee"]["s"], d=mstate["ee"]["d"])
ims = eventing.messagize(serder=admit, sigers=[csigning.Siger(qb64=sig) for sig in sigs], seal=seal)
ims.extend(end)
ims.extend(atc)
embeds = dict(
exn=ims
)

exn, gsigs, end = exchanges.createExchangeMessage(sender=mhab, route="/multisig/exn",
exn, gsigs, atc = exchanges.createExchangeMessage(sender=mhab, route="/multisig/exn",
payload=dict(gid=ghab["prefix"]),
embeds=embeds)

ipex.submitAdmit(ghab['name'], exn=exn, sigs=gsigs, atc=end, recp=recp)
ipex.submitAdmit(ghab['name'], exn=exn, sigs=gsigs, atc=atc, recp=recp)


def get_aid(client, name):
Expand Down Expand Up @@ -464,24 +464,24 @@ def create_grant(client, localName, groupName, creder, iserder, anc, sigs, recp,
issuer = identifiers.get(groupName)
local = identifiers.get(localName)

grant, sigs, end = ipex.grant(issuer, recp=holder, acdc=acdc,
grant, sigs, atc = ipex.grant(issuer, recp=holder, acdc=acdc,
iss=iss, message="", dt=stamp,
anc=eventing.messagize(serder=anc, sigers=[csigning.Siger(qb64=sig) for sig in sigs]))

print(f'created grant {grant.said}')
mstate = issuer["state"]
seal = eventing.SealEvent(i=issuer["prefix"], s=mstate["ee"]["s"], d=mstate["ee"]["d"])
ims = eventing.messagize(serder=grant, sigers=[csigning.Siger(qb64=sig) for sig in sigs], seal=seal)
ims.extend(end.encode("utf-8"))
ims.extend(atc.encode("utf-8"))
embeds = dict(
exn=ims
)

exn, gsigs, end = exchanges.createExchangeMessage(sender=local, route="/multisig/exn",
exn, gsigs, atc = exchanges.createExchangeMessage(sender=local, route="/multisig/exn",
payload=dict(gid=issuer["prefix"]),
embeds=embeds)

op = ipex.submitGrant(issuer['name'], exn=exn, sigs=gsigs, atc=end, recp=recp)
op = ipex.submitGrant(issuer['name'], exn=exn, sigs=gsigs, atc=atc, recp=recp)
return op


Expand Down
2 changes: 1 addition & 1 deletion scripts/multisig-kli-rotation.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
import requests
from keri import kering
from keri.app.keeping import Algos
from keri.core import coring, eventing, signing
from keri.core import eventing, signing, serdering
from keri.core.coring import Tiers
from signify.app.clienting import SignifyClient

Expand Down
1 change: 0 additions & 1 deletion scripts/rename_registry.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@
"""
import sys

from keri.core import serdering
from keri.core.coring import Tiers

from signify.app.clienting import SignifyClient
Expand Down
19 changes: 7 additions & 12 deletions setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@

setup(
name='signifypy',
version='0.1.2', # also change in src/signify/__init__.py
version='0.2.0', # also change in src/signify/__init__.py
license='Apache Software License 2.0',
description='SignifyPy: KERI Signing at the Edge',
long_description=long_description,
Expand Down Expand Up @@ -80,7 +80,7 @@
],
python_requires='>=3.12.6',
install_requires=[
'keri==1.2.3',
'keri==1.2.7',
'multicommand==1.0.0',
'requests==2.32.3',
'http_sfv==0.9.9',
Expand All @@ -90,24 +90,19 @@
],
extras_require={
'test': [
'responses>=0.25.6',
'coverage>=7.6.10',
'pytest>=8.3.4',
'mockito==1.5.3'
'responses>=0.25.6',
'coverage>=7.6.10',
'pytest>=8.3.4',
'mockito==1.5.3'
],
'setup': [
'setuptools==75.8.0'
]
},
tests_require=[
'responses>=0.25.6',
'coverage>=7.6.10',
'pytest>=8.3.4',
'mockito==1.5.3'
],
setup_requires=[
'setuptools==75.8.0'
],
setup_requires=[],
entry_points={
'console_scripts': [
'sigpy = signify.app.cli.sigpy:main',
Expand Down
2 changes: 1 addition & 1 deletion src/signify/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,5 @@
main package
"""

__version__ = '0.1.2' # also change in setup.py
__version__ = '0.2.0' # also change in setup.py

10 changes: 5 additions & 5 deletions src/signify/app/aiding.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
signify.app.aiding module

"""
from dataclasses import asdict
from math import ceil

from keri import kering
Expand All @@ -13,7 +14,7 @@
from keri.kering import Roles

from signify.app.clienting import SignifyClient
from signify.core import httping
from signify.core import httping, api


class Identifiers:
Expand Down Expand Up @@ -202,12 +203,11 @@ def addEndRole(self, name, *, role=Roles.agent, eid=None, stamp=None):
rpy = self.makeEndRole(pre, role, eid, stamp)
keeper = self.client.manager.get(aid=hab)
sigs = keeper.sign(ser=rpy.raw)
json = dict(
rpy_msg = api.ReplyMessage(
rpy=rpy.ked,
sigs=sigs
)
sigs=sigs)

res = self.client.post(f"/identifiers/{name}/endroles", json=json)
res = self.client.post(f"/identifiers/{name}/endroles", json=asdict(rpy_msg))
return rpy, sigs, res.json()

def sign(self, name, ser):
Expand Down
Loading