Skip to content

Commit

Permalink
feat: add qeea router
Browse files Browse the repository at this point in the history
  • Loading branch information
hevelius committed Jun 20, 2024
1 parent a71447e commit cccaa24
Show file tree
Hide file tree
Showing 8 changed files with 184 additions and 0 deletions.
Empty file.
2 changes: 2 additions & 0 deletions src/payloads/features/it-wallet/qeea/callback.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
export const CALLBACK_RESPONSE =
'<html><head><title>Submit This Form</title></head><body onload="javascript:document.forms[0].submit()"><form method="post" action="https://client.example.com/cb"><input type="hidden" name="response" value="eyJraWQiOiIxNzNhMGIxM2VkMTEzNjZmMWMxYTA5YzU3MjAxMzE4YSIsImFsZyI6IkVTMjU2IiwidHlwIjoiSldUIn0.eyJpc3MiOiJBeGpBbmowdDVxcFJWZ1I2YXBaN2dDaGFQYjZ5OGdObTdDa1BkNThQRDRjIiwiY29kZSI6IlNwbHhsT0JlWlFRWWJZUzZXeFNiSUEiLCJzdGF0ZSI6ImZ5WmlPTDlMZjJDZUt1TlQySnp4aUxSRGluazB1UGNkIn0.Uj6JDBuIIEvVUyGhZmX1_efwnTm_pHQuxh6kqZZjoopNK6_zUwzoB37IeppWGieW4b8VEe8VJyVXCcVY4NeHSg"/></form></body></html>';
15 changes: 15 additions & 0 deletions src/payloads/features/it-wallet/qeea/credential.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
import { CredentialResponse } from "../../../../../generated/definitions/itwallet/qeea/CredentialResponse";
import { StatusResponse } from "../../../../../generated/definitions/itwallet/qeea/StatusResponse";

export const CREDENTIAL_RESPONSE: CredentialResponse = {
format: "vc+sd-jwt",
credential:
"eyJ0eXAiOiJ2YytzZC1qd3QiLCJhbGciOiJFUzI1NiIsImtpZCI6ImM5NTBjMGU2ZmRlYjVkZTUwYTUwMDk2YjI0N2FmMDNjIn0.eyJfc2QiOlsiMFVzX2h1eE5OcFQ4SG5RRjVxQ1FpZGtzNHk5UXZVY01UMWt5VFZSUHJqZyIsImlUN2NzemFkM3dlZ1BSaDFNRVlRYUx0c0FVaFZsTFJqWVNLeUZXWnNqT2siLCI5bWpiVm1TQXFoQXZmOERkVVlmSWR0ZlRadHFnYzB1aTduQXVZV254N3UwIiwiTDZuTE9mVTZ2bWhoMks1U0wybVB3ZkRPRHB5TF85RGV6SDk4R2RacF91ayIsImNQUzVBek9pWEdpd2lqeF80ckpVVWV0TlpwSHNHT04wVGh2WmVuSmk4WjAiLCJlVktMZGZWU2gwaHgwM2lmaEhFLUVkZFRQVEpWRmlDRUZKbVVnUjhCbHJrIl0sImV4cCI6MTc0NjUxNTk3MiwiaXNzIjoiaHR0cHM6Ly9laWQtcHJvdmlkZXIud2FsbGV0LmlwenMuaXQiLCJzdWIiOiJOemJMc1hoOHVEQ2NkN25vV1hGWkFmSGt4WnNSR0M5WHMiLCJzdGF0dXMiOnsic3RhdHVzX2F0dGVzdGF0aW9uIjp7ImNyZWRlbnRpYWxfaGFzaF9hbGciOiJzaGEtMjU2In19LCJ2Y3QiOiJQZXJzb25JZGVudGlmaWNhdGlvbkRhdGEiLCJfc2RfYWxnIjoic2hhLTI1NiIsImNuZiI6eyJqd2siOnsia3R5IjoiRUMiLCJjcnYiOiJQLTI1NiIsIngiOiJwVlUzamF0dTRhM3RrOWM5YW93VmdMeUJCX3JKN00tM1dsamsxZWpVejJFIiwieSI6IlRMNU9OdlItSWdhcm5ncno1amR2c3BvZmZ6RndjalBSdEZVa2VuZUhFSTAifX19.EFko2YBVNGEIp2vupN9GuHaN15jpNhj0bIVTkewpbfEO-MHxHZTYSimTMMUQLMZUvDsp_47zuF90kmWifrOViQ~WyJScG9USnZ2bGw1aXhHU2MyYThqemZ3IiwiaWF0IiwiMTc0NzExOTU5NSJd~WyJOR0cxZkZGZjY1SzFLcU4tYUN1SmZnIiwiZ2l2ZW5fbmFtZSIsIk1hcmlvIl0~WyJ5NU54LTlyRGlmNVpqWDBMa0RJUGhRIiwiZmFtaWx5X25hbWUiLCJSb3NzaSJd~WyJtVW16VV9aejY1Y19iZ0hvSEx4OGp3IiwiYmlydGhfZGF0ZSIsIjE5ODAtMDEtMTAiXQ~WyI4MW1NTFhIcXZWOFRqUFdVOE5Lc1lRIiwidW5pcXVlX2lkIiwieHh4eHh4eHgteHh4eC14eHh4LXh4eHgteHh4eHh4eHh4eHh4Il0~WyJPX2JibDE0bjFmWDZVRHlxYnljMFZnIiwidGF4X2lkX2NvZGUiLCJSU1NNUkE4MFIwMUg1MDFCIl0",
c_nonce: "zz_EtUQs0ieiIS1NYNBHEQSoy3ct4gpy-45TKwHilfg",
c_nonce_expires_in: 86400
};

export const STATUS_RESPONSE: StatusResponse = {
status_attestation:
"ewogICAgImFsZyI6ICJFUzI1NiIsCiAgICAidHlwIjogInN0YXR1cy1hdHRlc3RhdGlvbitqd3QiLAogICAgImtpZCI6ICJlTk4tZzVpNkNuTEtjbHRRQnA2YWJiaW9HTWJ6TTZtdVczdnV4dzZ1aDg4Igp9.ewogICAgImlzcyI6ICJld29nSUNBZ0ltTnVaaUk2SUhzS0lDQWdJQ0FnSUNBaWFuZHJJam9nZXdvZ0lDQWdJQ0FnSUNBZ0lDQWlhM1I1SWpvZ0lrVkRJaXdLSUNBZ0lDQWdJQ0FnSUNBZ0ltTnlkaUk2SUNKUUxUSTFOaUlzQ2lBZ0lDQWdJQ0FnSUNBZ0lDSjRJam9nSWxSRFFVVlNNVGxhZG5VelQwaEdOR28wVnpSMlpsTldiMGhKVURGSlRHbHNSR3h6TjNaRFpVZGxiV01pTEFvZ0lDQWdJQ0FnSUNBZ0lDQWllU0k2SUNKYWVHcHBWMWRpV2sxUlIwaFdWMHRXVVRSb1lsTkphWEp6Vm1aMVpXTkRSVFowTkdwVU9VWXlTRnBSSWdvZ0lDQWdJQ0FnSUgwS0lDQWdJSDBLZlEiLAogICAgImlhdCI6IDE1MDQ2OTkxMzYsCiAgICAiZXhwIjogMTUwNDcwMDEzNiwKICAgICJjcmVkZW50aWFsX2hhc2giOiAiMjExZjgwNDAwZWRlYWFmNjgzYmE2NTBlODJiOWFjZTI0NmQzNDM3Mjc4YjAxZTczYjc3OTM5YjFjYTZjYzgwZCIsCiAgICAiY3JlZGVudGlhbF9oYXNoX2FsZyI6ICJzaGEtMjU2IiwKICAgICJjbmYiOiB7CiAgICAgICAgImp3ayI6IHsKICAgICAgICAgICAgImt0eSI6ICJFQyIsCiAgICAgICAgICAgICJjcnYiOiAiUC0yNTYiLAogICAgICAgICAgICAieCI6ICJUQ0FFUjE5WnZ1M09IRjRqNFc0dmZTVm9ISVAxSUxpbERsczd2Q2VHZW1jIiwKICAgICAgICAgICAgInkiOiAiWnhqaVdXYlpNUUdIVldLVlE0aGJTSWlyc1ZmdWVjQ0U2dDRqVDlGMkhaUSIKICAgICAgICB9CiAgICB9Cn0.VyT25r23eO_ppWuw0ONV6GKjJFfvYtJKQSIngGwtyklmckhE3vg5U7Cws9V41GOU6F77MVifGfXf0l2HP3mW1Q"
};
17 changes: 17 additions & 0 deletions src/payloads/features/it-wallet/qeea/par.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
import { ParRequest } from "../../../../../generated/definitions/itwallet/qeea/ParRequest";
import { ParResponse } from "../../../../../generated/definitions/itwallet/qeea/ParResponse";

export const PAR_REQUEST: ParRequest = {
response_type: "code",
client_id: "client_id",
code_challenge: "code_challenge",
code_challenge_method: "code_challenge_method",
request: "request",
client_assertion_type: "client_assertion_type",
client_assertion: "client_assertion"
};

export const PAR_RESPONSE: ParResponse = {
request_uri: "urn:ietf:params:oauth:request_uri:bwc4JK-ESC0w8acc191e-Y1LTC2",
expires_in: 60
};
2 changes: 2 additions & 0 deletions src/payloads/features/it-wallet/qeea/rp.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
export const REQUEST_OBJECT =
"eyJ0eXAiOiJKV1QiLCJhbGciOiJFUzI1NiIsImtpZCI6ImVlYmUzY2Y3YmFlNDllZjJkNDlmYWZhY2Q0YjIxZjk0In0.eyJzY29wZSI6IlBlcnNvbklkZW50aWZpY2F0aW9uRGF0YSBXYWxsZXRBdHRlc3RhdGlvbiIsImNsaWVudF9pZF9zY2hlbWUiOiJlbnRpdHlfaWQiLCJjbGllbnRfaWQiOiJodHRwczovL3dhbGxldC1ycC5pcHpzLml0IiwicmVzcG9uc2VfbW9kZSI6ImRpcmVjdF9wb3N0Lmp3dCIsInJlc3BvbnNlX3R5cGUiOiJ2cF90b2tlbiIsInJlc3BvbnNlX3VyaSI6Imh0dHBzOi8vd2FsbGV0LXJwLmlwenMuaXQvcmVzcG9uc2VfdXJpIiwibm9uY2UiOiIyYzEyOGU0ZC1mYzkxLTRjZDMtODZiOC0xOGJkZWEwOTg4Y2IiLCJzdGF0ZSI6IjNiZTM5YjY5LTZhYzEtNDFhYS05MjFiLTNlNmMwN2RkY2IwMyIsImlzcyI6Imh0dHBzOi8vd2FsbGV0LXJwLmlwenMuaXQiLCJpYXQiOjE2NzI0MTg0NjUsImV4cCI6MTY3MjQyMjA2NSwicmVxdWVzdF91cmlfbWV0aG9kIjoicG9zdCJ9.E0_SS7WAznjIpsPVCj5_U0HeYOKTp3iglcE3gXO69yHmR26M89FrwqxzAWf_iQoN9_fusuclSBnRtH80dLX0Wg";
16 changes: 16 additions & 0 deletions src/payloads/features/it-wallet/qeea/token.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
import { TokenResponse } from "../../../../../generated/definitions/itwallet/qeea/TokenResponse";

export const TOKEN_RESPONSE: TokenResponse = {
access_token:
"eyJ0eXAiOiJhdCtqd3QiLCJhbGciOiJFUzI1NiIsImtpZCI6ImM5NTBjMGU2ZmRlYjVkZTUwYTUwMDk2YjI0N2FmMDNjIn0.eyJpc3MiOiJodHRwczovL2VpZC1wcm92aWRlci53YWxsZXQuaXB6cy5pdCIsInN1YiI6ImQ0ZTBiYjM4N2FhMjU1NmZmMzA2OTI1ZmRmYjlhNzY1IiwiYXVkIjoiaHR0cHM6Ly9laWQtcHJvdmlkZXIud2FsbGV0LmlwenMuaXQvY3JlZGVudGlhbCIsImlhdCI6MTcxNTg0MjU2MCwiZXhwIjoxNzc4OTE0NTYwLCJqdGkiOiJmOTY1NWNlYi1jNjVjLTQwMjUtOTM3OC1iNjY3MmI2MTQ5YmciLCJjbGllbnRfaWQiOiI0N2I5ODIzNjk3OTFkMDgwMDNhNzI4M2YwNTljYjBkMSIsImNuZiI6eyJqa3QiOiI5NTE1NzRhZWUxYmI3OTA3YWUxZWMzMTA5ZGIyYjIyNSJ9fQ.d8Dd-pn2s3AlTX-CZltIlCDZhy6wdNJBUVs0b1S5hDtXdYIqlkqCs-6k-sXDoV0Uw3aUmM2m-slQM80lBkJfZQ",
token_type: "DPoP",
expires_in: 3600,
c_nonce: "ts_EtUQs0ieiIS1NYNBHEQSoy3ct4gpy-4FZKwHilkY",
c_nonce_expires_in: 86400,
authorization_details: [
{
type: "openid_credential",
credential_configuration_id: "PersonIdentificationData"
}
]
};
2 changes: 2 additions & 0 deletions src/payloads/features/it-wallet/qeea/well-known.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
export const WELL_KNOWN_RESPONSE =
"eyJ0eXAiOiJlbnRpdHktc3RhdGVtZW50K2p3dCIsImFsZyI6IkVTMjU2Iiwia2lkIjoiRkFORlMzWW5DOXRqaUNhaXZoV0xWVUozQXh3R0d6Xzk4dVJGYXFNRUVzIn0.eyJpc3MiOiIke3NlcnZlci5zY2hlbWV9Oi8vJHtzZXJ2ZXIuZG9tYWlufToke3NlcnZlci5wb3J0fSIsInN1YiI6IiR7c2VydmVyLnNjaGVtZX06Ly8ke3NlcnZlci5kb21haW59OiR7c2VydmVyLnBvcnR9IiwiaWF0IjoxNjg3MTcxNzU5LCJleHAiOjE3MDkyOTAxNTksImF1dGhvcml0eV9oaW50cyI6W10sIm1ldGFkYXRhIjp7ImZlZGVyYXRpb25fZW50aXR5Ijp7ImhvbWVwYWdlX3VyaSI6IiR7c2VydmVyLnNjaGVtZX06Ly8ke3NlcnZlci5kb21haW59OiR7c2VydmVyLnBvcnR9LyIsIm9yZ2FuaXphdGlvbl9uYW1lIjoiSXN0aXR1dG8gUG9saWdyYWZpY28gZSBaZWNjYSBkZWxsbyBTdGF0byIsImNvbnRhY3RzIjpbImluZm9ybWF6aW9uaUBpcHpzLml0IiwicHJvdG9jb2xsb0BwZWMuaXB6cy5pdCJdLCJ0b3NfdXJpIjoiJHtzZXJ2ZXIuc2NoZW1lfTovLyR7c2VydmVyLmRvbWFpbn06JHtzZXJ2ZXIucG9ydH0vcHVibGljL2luZm9fcG9saWN5Lmh0bWwiLCJwb2xpY3lfdXJpIjoiJHtzZXJ2ZXIuc2NoZW1lfTovLyR7c2VydmVyLmRvbWFpbn06JHtzZXJ2ZXIucG9ydH0vcHVibGljL3ByaXZhY3lfcG9saWN5Lmh0bWwiLCJsb2dvX3VyaSI6IiR7c2VydmVyLnNjaGVtZX06Ly8ke3NlcnZlci5kb21haW59OiR7c2VydmVyLnBvcnR9L3B1YmxpYy9sb2dvLnN2ZyJ9LCJvYXV0aF9hdXRob3JpemF0aW9uX3NlcnZlciI6eyJpc3N1ZXIiOiIke3NlcnZlci5zY2hlbWV9Oi8vJHtzZXJ2ZXIuZG9tYWlufToke3NlcnZlci5wb3J0fSIsInB1c2hlZF9hdXRob3JpemF0aW9uX3JlcXVlc3RfZW5kcG9pbnQiOiIke3NlcnZlci5zY2hlbWV9Oi8vJHtzZXJ2ZXIuZG9tYWlufToke3NlcnZlci5wb3J0fS8ke2FwaS5jb250ZXh0fS8ke2FwaS52ZXJzaW9ufS9hcy9wYXIiLCJhdXRob3JpemF0aW9uX2VuZHBvaW50IjoiJHtzZXJ2ZXIuc2NoZW1lfTovLyR7c2VydmVyLmRvbWFpbn06JHtzZXJ2ZXIucG9ydH0vJHthcGkuY29udGV4dH0vJHthcGkudmVyc2lvbn0vYXV0aG9yaXplIiwidG9rZW5fZW5kcG9pbnQiOiIke3NlcnZlci5zY2hlbWV9Oi8vJHtzZXJ2ZXIuZG9tYWlufToke3NlcnZlci5wb3J0fS8ke2FwaS5jb250ZXh0fS8ke2FwaS52ZXJzaW9ufS90b2tlbiIsImNsaWVudF9yZWdpc3RyYXRpb25fdHlwZXNfc3VwcG9ydGVkIjpbImF1dG9tYXRpYyJdLCJjb2RlX2NoYWxsZW5nZV9tZXRob2RzX3N1cHBvcnRlZCI6WyJTMjU2Il0sImFjcl92YWx1ZXNfc3VwcG9ydGVkIjpbImh0dHBzOi8vd3d3LnNwaWQuZ292Lml0L1NwaWRMMiIsImh0dHBzOi8vd3d3LnNwaWQuZ292Lml0L1NwaWRMMyJdLCJzY29wZXNfc3VwcG9ydGVkIjpbIlBlcnNvbklkZW50aWZpY2F0aW9uRGF0YSJdLCJncmFudF90eXBlc19zdXBwb3J0ZWQiOlsiYXV0aG9yaXphdGlvbl9jb2RlIl0sInRva2VuX2VuZHBvaW50X2F1dGhfbWV0aG9kc19zdXBwb3J0ZWQiOlsiYXR0ZXN0X2p3dF9jbGllbnRfYXV0aCJdLCJ0b2tlbl9lbmRwb2ludF9hdXRoX3NpZ25pbmdfYWxnX3ZhbHVlc19zdXBwb3J0ZWQiOlsiRVMyNTYiXSwicmVxdWVzdF9vYmplY3Rfc2lnbmluZ19hbGdfdmFsdWVzX3N1cHBvcnRlZCI6WyJFUzI1NiJdLCJqd2tzIjp7ImtleXMiOlt7ImtpZCI6Ijc0MTE5OTU1OTVkYzczMTBkMzAxZjczN2QyNjQzZDhiIiwia3R5IjoiRUMiLCJjcnYiOiJQLTI1NiIsIngiOiI1ZF95anc1aFhNeFBhYzNHb3l4NzhxcnBVcW9QckpmWl90V3hHa0t1anpnIiwieSI6ImNYS0ZMa3dxbHRRVXVHSHZHRGUzWWFuVjZqejBOM3RYZUxGSm1OQmNNbVEifSx7ImtpZCI6ImYxMGFjYTA5OTI2OTRiMzU4MWY2ZjY5OWJmYzhhMmM2Y2M2ODc3MjUiLCJrdHkiOiJFQyIsImNydiI6IlAtMjU2IiwieCI6ImpFMlJwY1FiRlF4S3BNcWVoYWhnWnY2c21tWEQwaS9MVFAyUVJ6TUFEazQiLCJ5IjoicWtNeDVpcXQ1UGhQdTV0ZmN0UzZIc1ArRm1MZ3J4ZnJ6VVYyR3dNUXVoOCJ9XX19LCJvcGVuaWRfY3JlZGVudGlhbF9pc3N1ZXIiOnsiY3JlZGVudGlhbF9pc3N1ZXIiOiIke3NlcnZlci5zY2hlbWV9Oi8vJHtzZXJ2ZXIuZG9tYWlufToke3NlcnZlci5wb3J0fSIsImNyZWRlbnRpYWxfZW5kcG9pbnQiOiIke3NlcnZlci5zY2hlbWV9Oi8vJHtzZXJ2ZXIuZG9tYWlufToke3NlcnZlci5wb3J0fS8ke2FwaS5jb250ZXh0fS8ke2FwaS52ZXJzaW9ufS9jcmVkZW50aWFsIiwicmV2b2NhdGlvbl9lbmRwb2ludCI6IiR7c2VydmVyLnNjaGVtZX06Ly8ke3NlcnZlci5kb21haW59OiR7c2VydmVyLnBvcnR9LyR7YXBpLmNvbnRleHR9LyR7YXBpLnZlcnNpb259L3Jldm9rZSIsInN0YXR1c19hdHRlc3RhdGlvbl9lbmRwb2ludCI6IiR7c2VydmVyLnNjaGVtZX06Ly8ke3NlcnZlci5kb21haW59OiR7c2VydmVyLnBvcnR9LyR7YXBpLmNvbnRleHR9LyR7YXBpLnZlcnNpb259L3N0YXR1cyIsImRpc3BsYXkiOlt7Im5hbWUiOiJlSUQgUHJvdmlkZXIiLCJsb2NhbGUiOiJpdC1JVCIsImxvZ28iOnsidXJsIjoiJHtzZXJ2ZXIuc2NoZW1lfTovLyR7c2VydmVyLmRvbWFpbn06JHtzZXJ2ZXIucG9ydH0vcHVibGljL2xvZ28uc3ZnIiwiYWx0X3RleHQiOiJsb2dvIGRpIHF1ZXN0byBlSUQgUHJvdmlkZXIifX0seyJuYW1lIjoiZUlEIFByb3ZpZGVyIiwibG9jYWxlIjoiZW4tVVMiLCJsb2dvIjp7InVybCI6IiR7c2VydmVyLnNjaGVtZX06Ly8ke3NlcnZlci5kb21haW59OiR7c2VydmVyLnBvcnR9L3B1YmxpYy9sb2dvLnN2ZyIsImFsdF90ZXh0IjoiZUlEIFByb3ZpZGVyJ3MgbG9nbyJ9fV0sImNyZWRlbnRpYWxfY29uZmlndXJhdGlvbnNfc3VwcG9ydGVkIjp7IlBlcnNvbklkZW50aWZpY2F0aW9uRGF0YSI6eyJmb3JtYXQiOiJ2YytzZC1qd3QiLCJzY29wZSI6Iml0LXdhbGxldCIsImRpc3BsYXkiOlt7Im5hbWUiOiJQZXJzb24gSWRlbnRpZmljYXRpb24gRGF0YSIsImxvY2FsZSI6Iml0LUlUIn0seyJuYW1lIjoiUGVyc29uIElkZW50aWZpY2F0aW9uIERhdGEiLCJsb2NhbGUiOiJlbi1VUyJ9XSwiY3JlZGVudGlhbF9kZWZpbml0aW9uIjp7InR5cGUiOlsiVmVyaWZpYWJsZUNyZWRlbnRpYWwiLCJQZXJzb25JZGVudGlmaWNhdGlvbkRhdGEiXSwiY3JlZGVudGlhbFN1YmplY3QiOnsiZ2l2ZW5fbmFtZSI6eyJ2YWx1ZV90eXBlIjoic3RyaW5nIiwiZGlzcGxheSI6W3sibmFtZSI6Ik5vbWUiLCJsb2NhbGUiOiJpdC1JVCJ9LHsibmFtZSI6IkZpcnN0IE5hbWUiLCJsb2NhbGUiOiJlbi1VUyJ9XSwibWFuZGF0b3J5IjoidHJ1ZSJ9LCJmYW1pbHlfbmFtZSI6eyJ2YWx1ZV90eXBlIjoic3RyaW5nIiwiZGlzcGxheSI6W3sibmFtZSI6IkNvZ25vbWUiLCJsb2NhbGUiOiJpdC1JVCJ9LHsibmFtZSI6IkZhbWlseSBOYW1lIiwibG9jYWxlIjoiZW4tVVMifV0sIm1hbmRhdG9yeSI6InRydWUifSwiYmlydGhfZGF0ZSI6eyJ2YWx1ZV90eXBlIjoic3RyaW5nIiwiZGlzcGxheSI6W3sibmFtZSI6IkRhdGEgZGkgTmFzY2l0YSIsImxvY2FsZSI6Iml0LUlUIn0seyJuYW1lIjoiRGF0ZSBvZiBCaXJ0aCIsImxvY2FsZSI6ImVuLVVTIn1dLCJtYW5kYXRvcnkiOiJ0cnVlIn0sInVuaXF1ZV9pZCI6eyJ2YWx1ZV90eXBlIjoic3RyaW5nIiwiZGlzcGxheSI6W3sibmFtZSI6IklkZW50aWZpY2F0aXZvIHVuaXZvY28iLCJsb2NhbGUiOiJpdC1JVCJ9LHsibmFtZSI6IlVuaXF1ZSBJZGVudGlmaWVyIiwibG9jYWxlIjoiZW4tVVMifV0sIm1hbmRhdG9yeSI6InRydWUifSwidGF4X2lkX2NvZGUiOnsidmFsdWVfdHlwZSI6InN0cmluZyIsImRpc3BsYXkiOlt7Im5hbWUiOiJDb2RpY2UgRmlzY2FsZSIsImxvY2FsZSI6Iml0LUlUIn0seyJuYW1lIjoiVGF4IElkIE51bWJlciIsImxvY2FsZSI6ImVuLVVTIn1dLCJtYW5kYXRvcnkiOiJ0cnVlIn19fSwiY3J5cHRvZ3JhcGhpY19zdWl0ZXNfc3VwcG9ydGVkIjpbIkVTMjU2Il0sImNyeXB0b2dyYXBoaWNfYmluZGluZ19tZXRob2RzX3N1cHBvcnRlZCI6WyJqd2siXSwiY3JlZGVudGlhbF9zaWduaW5nX2FsZ192YWx1ZXNfc3VwcG9ydGVkIjpbIkVTMjU2Il0sInByb29mX3R5cGVzX3N1cHBvcnRlZCI6eyJqd3QiOnsicHJvb2Zfc2lnbmluZ19hbGdfdmFsdWVzX3N1cHBvcnRlZCI6WyJFUzI1NiJdfX19fSwiandrcyI6eyJrZXlzIjpbeyJraWQiOiJmMTBhY2EwOTkyNjk0YjM1ODFmNmY2OTliZmM4YTJjNmNjNjg3NzI1Iiwia3R5IjoiRUMiLCJjcnYiOiJQLTI1NiIsIngiOiJqRTJScGNRYkZReEtwTXFlaGFoZ1p2NnNtbVhEMGkvTFRQMlFSek1BRGs0IiwieSI6InFrTXg1aXF0NVBoUHU1dGZjdFM2SHNQK0ZtTGdyeGZyelVWMkd3TVF1aDgifV19fX0sImp3a3MiOnsia2V5cyI6W3sia2lkIjoiRkFORlMzWW5DOXRqaUNhaXZoV0xWVUozQXh3R0d6Xzk4dVJGYXFNRUVzIiwia3R5IjoiRUMiLCJjcnYiOiJQLTI1NiIsIngiOiJqRTJScGNRYkZReEtwTXFlaGFoZ1p2NnNtbVhEMGkvTFRQMlFSek1BRGs0IiwieSI6InFrTXg1aXF0NVBoUHU1dGZjdFM2SHNQK0ZtTGdyeGZyelVWMkd3TVF1aDgifV19fQ.iBVTGYoiCmvguBkKKXgKIzR92WPiSOwYnSxdBvA2p98rMuwssKHZjNW0eB6tfISUYf6e8Q0AAtU_5SSIv_bKCw";
130 changes: 130 additions & 0 deletions src/routers/features/it-wallet/qeea/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,130 @@
import { Router } from "express";
import { addApiV1Prefix } from "../../../../utils/strings";
import { addHandler } from "../../../../payloads/response";
import { WELL_KNOWN_RESPONSE } from "../../../../payloads/features/it-wallet/qeea/well-known";
import { PAR_RESPONSE } from "../../../../payloads/features/it-wallet/qeea/par";
import { CALLBACK_RESPONSE } from "../../../../payloads/features/it-wallet/qeea/callback";
import { TOKEN_RESPONSE } from "../../../../payloads/features/it-wallet/qeea/token";
import {
CREDENTIAL_RESPONSE,
STATUS_RESPONSE
} from "../../../../payloads/features/it-wallet/qeea/credential";
import { REQUEST_OBJECT } from "../../../../payloads/features/it-wallet/qeea/rp";

export const itwRouter = Router();

export const addItwPrefix = (path: string) =>
addApiV1Prefix(`/itwallet/qeea${path}`);

/**
* OpenID Connect Federation
*/
addHandler(
itwRouter,
"get",
addItwPrefix("/.well-know/openid-federation"),
(_, res) => {
res.status(200).json(WELL_KNOWN_RESPONSE);
}
);

/**
* AS - PAR
*/
addHandler(itwRouter, "get", addItwPrefix("/as/par"), (req, res) => {
// TODO: extract request body params
res.status(201).json(PAR_RESPONSE);
});

/**
* AS - Authorize Endpoint
* @param client_id - The client_id
* @param request_uri - The request_uri
* @param idphint - The idphint user choice
*/
addHandler(
itwRouter,
"get",
addItwPrefix("/authorize/:client_id/:request_uri/:idphint"),
(_, res) => {
res.status(200).send("authorization_token");
}
);

/**
* AS -Callback Endpoint
*/
addHandler(
itwRouter,
"get",
addItwPrefix("/callback/:response_code"),
(_, res) => {
/*
The request header should contain this params
-H 'FamilyName: Rossi' \
-H 'FirstName: Mario' \
-H 'DateOfBirth: 1980-01-01' \
-H 'PersonIdentifier: RSSMRA80A01H501U' \
-H 'AuthnLevel: 2' \ */
res.status(200).send(CALLBACK_RESPONSE);
}
);

/**
* AS - Token Endpoint
*/
addHandler(itwRouter, "post", addItwPrefix("/token"), (_, res) => {
res.status(200).send(TOKEN_RESPONSE);
});

/**
* Credential - Issuing Endpoint
*/
addHandler(itwRouter, "post", addItwPrefix("/credential"), (_, res) => {
res.status(200).send(CREDENTIAL_RESPONSE);
});

/**
* Credential - Status endpoint
*/
addHandler(itwRouter, "post", addItwPrefix("/status"), (_, res) => {
res.status(200).send(STATUS_RESPONSE);
});

/**
* Credential - Revoke endpoint
*/
addHandler(itwRouter, "post", addItwPrefix("/revoke"), (_, res) => {
res.sendStatus(204);
});

/**
* RP - login
*/
addHandler(itwRouter, "get", addItwPrefix("/login/:state"), (_, res) => {
res.sendStatus(200); // TODO: add response
});

/**
* RP - request uri
* endpoint to download RequestObject
*/
addHandler(
itwRouter,
"get",
addItwPrefix("/request_uri/:random_value"),
(_, res) => {
res.status(200).send(REQUEST_OBJECT); // TODO: add response
}
);

/**
* RP - The RP Wallet endpoint for presenting the WTE and the eID Verifiable Credential
*/
addHandler(itwRouter, "post", addItwPrefix("/response_uri"), (req, res) => {
const response_code = req.body.response;
// TODO make response object
res.status(200).send({
redirect_uri: `https://it-wallet-eaa-provider.example.it/callback#response_code=${response_code}`
}); // TODO: add response
});

0 comments on commit cccaa24

Please sign in to comment.