Skip to content

Commit 4982625

Browse files
committed
Send credential offer directly, bypassing qrcode
1 parent 3341c58 commit 4982625

File tree

1 file changed

+23
-68
lines changed

1 file changed

+23
-68
lines changed

app/route_oidc.py

Lines changed: 23 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -1109,7 +1109,7 @@ def issue_status():
11091109
session_id = request.values["sessionId"]
11101110
try:
11111111
session = session_ids[session_id]
1112-
except:
1112+
except KeyError:
11131113
return {
11141114
"status": "fail",
11151115
"reason": "no issuance session found",
@@ -1138,77 +1138,32 @@ def create_qr_code(credential_offer_URI: str, credential_offer) -> tuple[str, st
11381138

11391139
@oidc.route("/credential_offer", methods=["GET", "POST"])
11401140
def credentialOffer():
1141-
credentialsSupported = oidc_metadata["credential_configurations_supported"]
1142-
auth_choice = request.form.get("Authorization Code Grant")
1143-
form_keys = request.form.keys()
1144-
credential_offer_URI = request.form.get("credential_offer_URI")
1145-
11461141
values = request.values
1147-
if 'sessionId' in values and 'credentialType' in values:
1148-
session_id = values["sessionId"]
1149-
credential_type = values["credentialType"]
1150-
1151-
session_ids.update(
1152-
{
1153-
session_id: {
1154-
"expires": datetime.now() + timedelta(minutes=60)}
1155-
},
1156-
)
1157-
url = os.environ.get('SERVICE_URL')
1158-
credential_offer = {
1159-
"credential_issuer": cfgservice.service_url[:-1],
1160-
"credential_configuration_ids": [credential_type,],
1161-
"grants": {
1162-
"authorization_code": {}},
1163-
}
1164-
1165-
_, qr_img_base64 = create_qr_code(url, credential_offer)
1142+
session_id = values["sessionId"]
1143+
credential_type = values["credentialType"]
11661144

1167-
return {
1168-
"qr": qr_img_base64,
1169-
"sessionId": session_id,
1170-
}, 200
1171-
1172-
elif "proceed" in form_keys:
1173-
1174-
form = list(form_keys)
1175-
form.remove("proceed")
1176-
form.remove("credential_offer_URI")
1177-
form.remove("Authorization Code Grant")
1178-
all_exist = all(credential in credentialsSupported for credential in form)
1179-
1180-
if all_exist:
1181-
credentials_id = form
1182-
session["credentials_id"] = credentials_id
1183-
credentials_id_list = json.dumps(form)
1184-
if auth_choice == "pre_auth_code":
1185-
session["credential_offer_URI"] = credential_offer_URI
1186-
return redirect(
1187-
url_for("preauth.preauthRed", credentials_id=credentials_id_list)
1188-
)
1189-
1190-
else:
1191-
credential_offer = {
1192-
"credential_issuer": cfgservice.service_url[:-1],
1193-
"credential_configuration_ids": credentials_id,
1194-
"grants": {
1195-
"authorization_code": {}},
1196-
}
1197-
uri, qr_img_base64 = create_qr_code(credential_offer_URI, credential_offer)
1198-
1199-
wallet_url = cfgservice.wallet_test_url + "credential_offer"
1200-
1201-
return render_template(
1202-
"openid/credential_offer_qr_code.html",
1203-
wallet_dev=wallet_url
1204-
+ "?credential_offer="
1205-
+ json.dumps(credential_offer),
1206-
url_data=uri,
1207-
qrcode=qr_img_base64,
1208-
)
1145+
session_ids.update(
1146+
{
1147+
session_id: {
1148+
"expires": datetime.now() + timedelta(minutes=60)}
1149+
},
1150+
)
12091151

1152+
if credential_type == "pid":
1153+
credential_id = "eu.europa.ec.eudi.pid_mdoc"
1154+
elif credential_type == "pid_jwt":
1155+
credential_id = "eu.europa.ec.eudi.pid_jwt_vc_json"
12101156
else:
1211-
return redirect(cfgservice.service_url + "credential_offer_choice")
1157+
return "Credential type not found", 400
1158+
1159+
credential_offer = {
1160+
"credential_issuer": cfgservice.service_url[:-1],
1161+
"credential_configuration_ids": [credential_id,],
1162+
"grants": {
1163+
"authorization_code": {}
1164+
},
1165+
"issuer_state": str(uuid.uuid4()),
1166+
}
12121167

12131168

12141169
""" @oidc.route("/testgetauth", methods=["GET"])

0 commit comments

Comments
 (0)