2
2
3
3
import json
4
4
5
+ from ...wallet .base import BaseWallet
5
6
from ...wallet .util import (
6
7
b64_to_bytes ,
7
8
b64_to_str ,
8
9
bytes_to_b64 ,
9
- str_to_b64 ,
10
10
naked_to_did_key ,
11
+ str_to_b64 ,
11
12
)
12
-
13
13
from .create_verify_data import create_verify_data
14
14
from .error import BadJWSHeaderError
15
15
@@ -35,7 +35,7 @@ def create_jws(encoded_header, verify_data):
35
35
return (encoded_header + "." ).encode ("utf-8" ) + verify_data
36
36
37
37
38
- async def jws_sign (verify_data , verkey , wallet ):
38
+ async def jws_sign (session , verify_data , verkey ):
39
39
"""Sign JWS."""
40
40
41
41
header = {"alg" : "EdDSA" , "b64" : False , "crit" : ["b64" ]}
@@ -44,6 +44,7 @@ async def jws_sign(verify_data, verkey, wallet):
44
44
45
45
jws_to_sign = create_jws (encoded_header , verify_data )
46
46
47
+ wallet = session .inject (BaseWallet , required = True )
47
48
signature = await wallet .sign_message (jws_to_sign , verkey )
48
49
49
50
encoded_signature = bytes_to_b64 (signature , urlsafe = True , pad = False )
@@ -60,7 +61,7 @@ def verify_jws_header(header):
60
61
)
61
62
62
63
63
- async def jws_verify (verify_data , signature , public_key , wallet ):
64
+ async def jws_verify (session , verify_data , signature , public_key ):
64
65
"""Detatched jws verify handling."""
65
66
66
67
encoded_header , _ , encoded_signature = signature .partition (".." )
@@ -71,26 +72,25 @@ async def jws_verify(verify_data, signature, public_key, wallet):
71
72
decoded_signature = b64_to_bytes (encoded_signature , urlsafe = True )
72
73
73
74
jws_to_verify = create_jws (encoded_header , verify_data )
74
-
75
+ wallet = session . inject ( BaseWallet , required = True )
75
76
verified = await wallet .verify_message (jws_to_verify , decoded_signature , public_key )
76
77
77
78
return verified
78
79
79
80
80
- async def sign_credential (credential , signature_options , verkey , wallet ):
81
+ async def sign_credential (session , credential , signature_options , verkey ):
81
82
"""Sign Credential."""
82
83
83
84
framed , verify_data_hex_string = create_verify_data (credential , signature_options )
84
85
verify_data_bytes = bytes .fromhex (verify_data_hex_string )
85
- jws = await jws_sign (verify_data_bytes , verkey , wallet )
86
- document_with_proof = {** credential , "proof" : {** signature_options , "jws" : jws }}
87
- return document_with_proof
86
+ jws = await jws_sign (session , verify_data_bytes , verkey )
87
+ return {** credential , "proof" : {** signature_options , "jws" : jws }}
88
88
89
89
90
- async def verify_credential (doc , verkey , wallet ):
90
+ async def verify_credential (session , doc , verkey ):
91
91
"""Verify credential."""
92
92
93
93
framed , verify_data_hex_string = create_verify_data (doc , doc ["proof" ])
94
94
verify_data_bytes = bytes .fromhex (verify_data_hex_string )
95
- valid = await jws_verify (verify_data_bytes , framed ["proof" ]["jws" ], verkey , wallet )
95
+ valid = await jws_verify (session , verify_data_bytes , framed ["proof" ]["jws" ], verkey )
96
96
return valid
0 commit comments