send vp_token
This commit is contained in:
parent
501d2b2894
commit
b7dfb6dcfb
|
@ -529,7 +529,7 @@ class VerificableCredential(models.Model):
|
|||
context = {
|
||||
'vc_id': self.id,
|
||||
'issuer_did': self.issuer_did.did,
|
||||
'subject_did': self.subject_did.did,
|
||||
'subject_did': self.subject_did and self.subject_did.did or '',
|
||||
'issuance_date': issuance_date,
|
||||
'first_name': self.user.first_name,
|
||||
'last_name': self.user.last_name,
|
||||
|
|
|
@ -1,9 +1,13 @@
|
|||
import json
|
||||
import requests
|
||||
|
||||
from django import forms
|
||||
from django.conf import settings
|
||||
from django.template.loader import get_template
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
from django.core.exceptions import ValidationError
|
||||
|
||||
from utils.idhub_ssikit import issue_verifiable_presentation
|
||||
from utils.idhub_ssikit import create_verifiable_presentation
|
||||
from oidc4vp.models import Organization
|
||||
|
||||
|
||||
|
@ -33,34 +37,36 @@ class AuthorizeForm(forms.Form):
|
|||
)
|
||||
def clean(self):
|
||||
data = super().clean()
|
||||
import pdb; pdb.set_trace()
|
||||
self.list_credentials = []
|
||||
for c in self.credentials:
|
||||
if str(c.id) == data.get(c.schema.type.lower()):
|
||||
if c.status is not c.Status.ISSUED.value or not c.data:
|
||||
txt = _('There are some problems with this credentials')
|
||||
raise ValidationError(txt)
|
||||
|
||||
self.list_credentials.append(c)
|
||||
|
||||
return data
|
||||
|
||||
def save(self, commit=True):
|
||||
if not self.list_credentials:
|
||||
return
|
||||
|
||||
did = self.list_credentials[0].subject_did
|
||||
vp_template = get_template('credentials/verifiable_presentation.json')
|
||||
|
||||
# self.vp = issue_verifiable_presentation(
|
||||
# vp_template: Template,
|
||||
# vc_list: list[str],
|
||||
# jwk_holder: str,
|
||||
# holder_did: str)
|
||||
|
||||
self.vp = issue_verifiable_presentation(
|
||||
vp_template,
|
||||
self.list_credentials,
|
||||
did.key_material,
|
||||
did.did)
|
||||
self.get_verificable_presentation()
|
||||
|
||||
if commit:
|
||||
return org.send(self.vp)
|
||||
return self.org.send(self.vp)
|
||||
|
||||
return
|
||||
|
||||
def get_verificable_presentation(self):
|
||||
did = self.list_credentials[0].subject_did
|
||||
vp_template = get_template('credentials/verifiable_presentation.json')
|
||||
vc_list = json.dumps([json.loads(x.data) for x in self.list_credentials])
|
||||
|
||||
context = {
|
||||
"holder_did": did.did,
|
||||
"verifiable_credential_list": vc_list
|
||||
}
|
||||
unsigned_vp = vp_template.render(context)
|
||||
self.vp = create_verifiable_presentation(did.key_material, unsigned_vp)
|
||||
|
|
|
@ -71,13 +71,13 @@ class Organization(models.Model):
|
|||
url=self.response_uri.strip("/"),
|
||||
)
|
||||
auth = (self.my_client_id, self.my_client_secret)
|
||||
# import pdb; pdb.set_trace()
|
||||
return requests.post(url, data=vp, auth=auth)
|
||||
|
||||
def demand_authorization(self):
|
||||
"""
|
||||
Send the a request for start a process of Verifier
|
||||
"""
|
||||
# import pdb; pdb.set_trace()
|
||||
url = "{url}/verify?demand_uri={redirect_uri}".format(
|
||||
url=self.response_uri.strip("/"),
|
||||
redirect_uri=settings.RESPONSE_URI
|
||||
|
|
|
@ -7,5 +7,5 @@
|
|||
"VerifiablePresentation"
|
||||
],
|
||||
"holder": "{{ holder_did }}",
|
||||
"verifiableCredential": {{ verifiable_credential_list }}
|
||||
"verifiableCredential": {{ verifiable_credential_list|safe }}
|
||||
}
|
||||
|
|
|
@ -94,6 +94,18 @@ def issue_verifiable_presentation(vp_template: Template, vc_list: list[str], jwk
|
|||
return asyncio.run(inner())
|
||||
|
||||
|
||||
def create_verifiable_presentation(jwk_holder: str, unsigned_vp: str) -> str:
|
||||
async def inner():
|
||||
signed_vp = await didkit.issue_presentation(
|
||||
unsigned_vp,
|
||||
'{"proofFormat": "ldp"}',
|
||||
jwk_holder
|
||||
)
|
||||
return signed_vp
|
||||
|
||||
return asyncio.run(inner())
|
||||
|
||||
|
||||
def verify_presentation(vp):
|
||||
"""
|
||||
Returns a (bool, str) tuple indicating whether the credential is valid.
|
||||
|
|
Loading…
Reference in New Issue