-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathprover_helper.py
36 lines (29 loc) · 1.34 KB
/
prover_helper.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
from credential import CredentialEncoder
import requests, json
from Crypto.PublicKey import RSA
from Crypto.Signature import pkcs1_15
from Crypto.Hash import SHA384
def do_verifier_login(credential,proof,nonce,tokenPrivateKey):
session = requests.Session()
req1 = session.get("http://127.0.0.1:5000/ver_opps/login")
if req1.status_code != 200:
raise ConnectionError
challenge = bytes.fromhex(req1.json())
signer = pkcs1_15.new(RSA.import_key(tokenPrivateKey))
h = SHA384.new(challenge)
challengeResponse = signer.sign(h).hex()
req2 = session.post("http://127.0.0.1:5000/ver_opps/login",
data=json.dumps({'credential':credential,'proof':proof,'nonce':nonce,'challengeResponse':challengeResponse},
cls=CredentialEncoder),
headers={'content-type':'application/json'})
if req2.status_code == 200:
return session
def add_post(session,course,content):
req = session.post("http://127.0.0.1:5000/ver_opps/class/"+course + "/addPost",json = {'content':content})
if req.status_code != 200:
raise ConnectionError
def get_posts(session,course):
req = session.get("http://127.0.0.1:5000/ver_opps/class/"+course + "/readPosts")
if req.status_code != 200:
raise ConnectionError
return req.json()