Skip to content

Commit

Permalink
Update signed headers verification logic to process revocations (#51)
Browse files Browse the repository at this point in the history
* Added /present_revocation endpoint

* Fix messages in tests

* Update signed headers verification logic for processing revocations

* Fix present_revocation endpoint

* Update keri version to 1.2.0-dev12

* Update keri version to 1.2.0-rc4
  • Loading branch information
aydarng authored Nov 20, 2024
1 parent b4c7d3f commit 6ec9191
Show file tree
Hide file tree
Showing 6 changed files with 127 additions and 80 deletions.
2 changes: 1 addition & 1 deletion images/reg-pilot-api.dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM weboftrust/keri:1.2.0-dev13
FROM weboftrust/keri:1.2.0-rc4

WORKDIR /usr/local/var

Expand Down
2 changes: 1 addition & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@
"http_sfv>=0.9.8",
"requests>=2.31.0",
"swagger-ui-py>=22.7.13",
"keri>=1.1.11",
"keri==1.2.0-dev12",
"fastapi>=0.111.1",
"requests>=2.32.3",
"python-multipart"
Expand Down
4 changes: 2 additions & 2 deletions src/regps/app/api/signed_headers_verifier.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,11 +21,11 @@ class VerifySignedHeaders:
def __init__(self, api_controller):
self.api_controller = api_controller

def process_request(self, req: Request, raid):
def process_request(self, req: Request, raid, verify_for_upload=True):
try:
logger.info(f"Processing signed header verification request {req}")
aid, cig, ser = self.handle_headers(req)
if aid == raid:
if not verify_for_upload or aid == raid:
res = self.api_controller.verify_cig(aid, cig, ser)
logger.info(f"VerifySignedHeaders.on_post: response {res}")
return res
Expand Down
6 changes: 3 additions & 3 deletions src/regps/app/api/utils/pydantic_models.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
from regps.app.api.utils.swagger_examples import (
login_examples,
check_login_examples,
upload_examples,
upload_examples, revoke_examples,
)


Expand Down Expand Up @@ -47,8 +47,8 @@ class LoginRequest(BaseModel):
vlei: str = Field(examples=login_examples["request"]["vlei"])

class PresentRevocationRequest(BaseModel):
said: str = Field(examples=login_examples["request"]["said"])
vlei: str = Field(examples=login_examples["request"]["vlei"])
said: str = Field(examples=revoke_examples["request"]["said"])
vlei: str = Field(examples=revoke_examples["request"]["vlei"])

class LoginResponse(BaseModel):
aid: str = Field(examples=login_examples["response"]["aid"])
Expand Down
33 changes: 22 additions & 11 deletions src/regps/app/api/utils/swagger_examples.py

Large diffs are not rendered by default.

160 changes: 98 additions & 62 deletions src/regps/app/fastapi_app.py
Original file line number Diff line number Diff line change
Expand Up @@ -64,11 +64,47 @@ async def login(response: Response, data: LoginRequest):


@app.post("/present_revocation", response_model=PresentRevocationResponse)
async def present_revocation(response: Response, data: PresentRevocationRequest):
async def present_revocation(
request: Request,
response: Response,
data: PresentRevocationRequest,
signature: str = Header(
openapi_examples={
"default": {
"summary": "Default signature",
"value": upload_examples["request"]["headers"]["signature"],
}
}
),
signature_input: str = Header(
openapi_examples={
"default": {
"summary": "Default signature_input",
"value": upload_examples["request"]["headers"]["signature_input"],
}
}
),
signify_resource: str = Header(
openapi_examples={
"default": {
"summary": "Default signify_resource",
"value": upload_examples["request"]["headers"]["signify_resource"],
}
}
),
signify_timestamp: str = Header(
openapi_examples={
"default": {
"summary": "Default signify_timestamp",
"value": upload_examples["request"]["headers"]["signify_timestamp"],
}
}
), ):
"""
Given an AID and vLEI, returns information about the revocation
"""
try:
verify_signed_headers.process_request(request, None, False)
logger.info(f"PresentRevocation: sending login cred {str(data)[:50]}...")
resp = api_controller.login(data.said, data.vlei)
return JSONResponse(status_code=202, content=resp)
Expand All @@ -87,17 +123,17 @@ async def present_revocation(response: Response, data: PresentRevocationRequest)

@app.get("/checklogin/{aid}", response_model=CheckLoginResponse)
async def check_login_route(
response: Response,
aid: str = Path(
...,
description="AID",
openapi_examples={
"default": {
"summary": "Default AID",
"value": check_login_examples["request"]["aid"],
}
},
),
response: Response,
aid: str = Path(
...,
description="AID",
openapi_examples={
"default": {
"summary": "Default AID",
"value": check_login_examples["request"]["aid"],
}
},
),
):
"""
Given an AID returns information about the login
Expand All @@ -121,60 +157,60 @@ async def check_login_route(
# TODO: Add upload form-data param to the required parameters and add it to the DOC
@app.post("/upload/{aid}/{dig}", response_model=UploadResponse)
async def upload_route(
request: Request,
response: Response,
aid: str = Path(
...,
description="AID",
openapi_examples={
"default": {
"summary": "Default AID",
"value": upload_examples["request"]["aid"],
}
},
),
dig: str = Path(
...,
description="DIG",
openapi_examples={
"default": {
"summary": "Default AID",
"value": upload_examples["request"]["dig"],
request: Request,
response: Response,
aid: str = Path(
...,
description="AID",
openapi_examples={
"default": {
"summary": "Default AID",
"value": upload_examples["request"]["aid"],
}
},
),
dig: str = Path(
...,
description="DIG",
openapi_examples={
"default": {
"summary": "Default AID",
"value": upload_examples["request"]["dig"],
}
},
),
signature: str = Header(
openapi_examples={
"default": {
"summary": "Default signature",
"value": upload_examples["request"]["headers"]["signature"],
}
}
},
),
signature: str = Header(
openapi_examples={
"default": {
"summary": "Default signature",
"value": upload_examples["request"]["headers"]["signature"],
),
signature_input: str = Header(
openapi_examples={
"default": {
"summary": "Default signature_input",
"value": upload_examples["request"]["headers"]["signature_input"],
}
}
}
),
signature_input: str = Header(
openapi_examples={
"default": {
"summary": "Default signature_input",
"value": upload_examples["request"]["headers"]["signature_input"],
),
signify_resource: str = Header(
openapi_examples={
"default": {
"summary": "Default signify_resource",
"value": upload_examples["request"]["headers"]["signify_resource"],
}
}
}
),
signify_resource: str = Header(
openapi_examples={
"default": {
"summary": "Default signify_resource",
"value": upload_examples["request"]["headers"]["signify_resource"],
),
signify_timestamp: str = Header(
openapi_examples={
"default": {
"summary": "Default signify_timestamp",
"value": upload_examples["request"]["headers"]["signify_timestamp"],
}
}
}
),
signify_timestamp: str = Header(
openapi_examples={
"default": {
"summary": "Default signify_timestamp",
"value": upload_examples["request"]["headers"]["signify_timestamp"],
}
}
),
),
):
"""
Given an AID and DIG, returns information about the upload
Expand Down

0 comments on commit 6ec9191

Please sign in to comment.