oidc-lib
Version:
A library for creating OIDC Service Providers
194 lines (174 loc) • 107 kB
JavaScript
var display_render_callback;
module.exports = {
loadPersonas: loadPersonas,
initializePersonas: initializePersonas,
reloadPersonas: reloadPersonas,
getPersonas: getPersonas,
getPersona: getPersona,
getCredentialCount: getCredentialCount,
savePersonaChanges: savePersonaChanges,
updatePersona: updatePersona,
click_data_card: click_data_card,
select_card: select_card,
edit_card: edit_card,
add_card: add_card,
delete_card: delete_card,
add_card_select: add_card_select,
add_card_credential_keypress: add_card_credential_keypress,
process_add_card_persona: process_add_card_persona,
locate_or_add_credential_persona: locate_or_add_credential_persona,
paint_cards: paint_cards,
persona_submission_enabled: persona_submission_enabled,
load_data_cards: load_data_cards,
output_card: output_card,
submitOnCr: submitOnCr,
// claimer_interactive_phone_input: claimer_interactive_phone_input,
processSyncResult: processSyncResult,
// BFHPhone: BFHPhone,
getFile: getFile,
getFileChanged: getFileChanged,
personaCollectionFactory: personaCollectionFactory,
emptyScopeInfo: emptyScopeInfo,
setUpWalletPin: setUpWalletPin,
process_pin: process_pin,
process_pin_enter: process_pin_enter,
display_render_callback: display_render_callback
}
const default_minimal_image = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAABkCAYAAABw4pVUAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAACQSSURBVHhe7Z15vNXT+seXJg2GFGUsQ4oQuT+UqzIkhCZFA4mkQhpIg0xJQhNxK1y3NLimlGZDFFEqQ5rN89BpojTzW+9n73Va+9lrf/d3H1384fN6nVdnP2ftNTzzetb6ftvjNwvzN/4yKJT8Nw2/bN6c/G0XfrWyC9J//TVI3759u9mcgc6PxjZL27ZtW/LTLuRK37J1a5DOHEP697+kw7ONmzYF24fwt4X8xZDRQsBWq2k+sISffv7ZWHEnKQnk0xU2/PST2Wn/pqH7BVutRoesiT5COhOib9y40WzeskV+/+CDxWbD+g3yOxq6Y+dO+d1hp/0MXSMTPdQHCLVlHaE1xkGkQPbcc8/kbwngCoS2xx5JCrKxJvnLL2ltcRnFihY1hQulDgFds5c+WEBx3Yd1SfS7hzcerm7Dhg1mu+1n29ZdbgmlYF57Fismn0uVKmlatbrcLF++whSycyhSuLDQHWBa8eLFk592IUTfuWOH/JvWR1L4PliLm3dBENtl0exnq4F777232cWeBIMRlKZjMXvvtVcKM0GITh9oX8kSJZKUBG3+O++YBe8sMJ988on58ouvzOrVP8o8+C4//M7PAQccYKpVO8GcVP0kU/noyubEk06Uv1/e6grz5Zdfmlv73GrOO69esueEFeDvmYePTHSsAGUpUqRIkpLgB2spVbJkCh0hoYTFkooB3JzjILZAkDrayQR8MFkswZ8AbmqTpe9jheQjE91fMAycPXuOWblihXn//cW2/cbYi4GhpUuXNrXr1DYNGlxsnnnmWfPqK6+a/fbbzwweMthUrFhB2m1Bs22f2iJDdNgjiqiVCH5YpSlp+eHTcaW0xSod4FtRy6M4iCUQ51f1QJk0CqYXs4sq6mkOCNEZ/vsffjCvvPSymTx5ivnqq69EuIwTVxAauC9cYLly5cxPlkF2mdaFFDMtWjY3rVu3FqaV3nffROMkmMcGq/Gl99knSUkAYcBMLbyfsY5SpdIYj6C00jKXuC4sq0D4889JDcYSHIRuJ7uXmhTB+VcrqBKe+wE+nQlOmzbdvDHnDbNgwQKxjIIyPxcw5/oX1jfdunU1hb14IOk8a7Rz8+MEygZ8Vwqg830XrwB9IKR9lUBRDp8/2ZC1JVIvYjv0hQGEbielB8PsQ9rg6FhA1y5dzZDBQ6xLel+0748QBmCcKdYKlyxZkqQksNXODa30hQEjd9hgXkIFeEfX/KAPbUVA3GAOyCoQJhDKRtB4TRdfabVdCwk67u2Rhx+RQLtixcqUQPhHAs3u1bO3WbdunXzGarYHGC+ZkrUArSysW9NdH1oRHT0XZLclO7BmMJOFpulkGMFU0tK//OILM2PGzLTv/Bkgtb3/vvvldxhMzAopiJ+oAGGwXbum44I1DeQSOxwiuUMqyiQ0SElD5lkoIDwsA/pJJ51kHnv8MTH3PxtoN5ncxx99nGBagJm00daBIuIBNF32Z4E+oBcP0KMQKZBttkO9GcKFISQ/KAJS2pA2bPI2jQcffJAZ+ehIs2/p1AznzwBzGj5ihLgqzWCs4De7Hg0UkSxRIxQH8QqS6ip6NmS1EJ0/M1CI8QQ13RbtAz69atVjzXXXXye/h6zvjwIMfGvuW+azzz5LUnaBQKzXQizA0nXlAeFpN43S0kfIi2RDpEA04xkIF6QnK5mHpWtgsqTFGrVr1zZNmzb90wK7A4x8cvSTyU8J4FIRlvYAmbIolE4LiXWTKus+4iBaIMr/udTVN0K0nE2jFp4EOiu4tITAmv10uwd5+umnRbh/JmD8a6+9LrUxB0lM1L5D4h5CUgok+xRL94FyYjUhLxIHkQLx4axA598EOqDpEugCk/rq66/NqFGjCqQ9/wtg7a/Nek1+d1au46YEZ7UWx3hNRxHTXFgOrjmWQBgcbdABEDoaj1vy6WJJ1rq0dYy27qFr567mpw2UM/4aQDFmWYGsWbNG0mG9K2ctxA7tXrEkqg4+HYtHqNqz7EgqbRzEEggBDebrSUEP7dZl86Q0h7MKdshMmkXu7oCOYoT6hIbLiRpv2bJlZvmy5aJUvuWyZqxDZ1bQ+dGxlDmEvEIue6/sLe1CGCgtPbR0yeGVedIW95XS1oKNU797+pmp06ZYSxll9lXFvYLCWemA+wbkM8MJgfnVrFnD3HnXHWYfVWPygev5+JNP0q2D9dl5h1wYdH+FjIn71q47pMhRyCoQBkFr0rTB0hkIc/YhQVEJCUB3k33hhYkpgdSBRe21115m8y+bhUksRoM2zsoofbdo2cJMenGiZfje4nacEHrf2tu89vos0//e/ubUU08VeiagwZRSfE1mH4JQdUnF0dNiJi4ssG6ElwuyVnsZCO3WZkellzKzT0dITFZrmk9fv36DubzV5cIA+vUtialc1vwy07BhQ/Ppp5+YBQsWmsUcxVrhMU7ZsmXM4Ycfbg459FBz2mmnmsqVK5tf7MYTl/LtN9+YNXl55vgTThAFIua5lPu7774zzZpeKuMhZL0WUMem4ndYS3Jg3XvYdjoeoFh836czbw6rdKU3Ez0K2QViJawzCWGw/UFDfXDOsA8HOWrBIfrMmTPNg0MfkoX7KFS4kJk48QWxFAeYKMU7xZyoAy/aOqv+9NPPzPXXXW+OOOIIK7Djzfhx49NqT+yNcG0O+W5JKQwl9r0tg32/IEKy7XT8yESPQrqqeMBt2FkkP+1Cpk0SLkwLw7k2n/7GG2+ae/r1l6zGB+Nd1aZNijAA7UJavYXMT1kj7gzG+S72yCOPMJOnvGiGPDjEXHVVG7FWH7Qv7ZdzWLP90XEQt4c1plITdM10+gzRsyHSQjhtgzk+M2AaQZTTMh8cZ7Jx8tui2VgHJuvT77j9TiuUN5KfdoFz+bHjx5q5VmDie+3UipcobmNSCVPpqKPModZVOW7QN5mbDtZYEoL6+quvzdd2z8N86Wvbdjtna9Enn3yyuaRJ0xTrRojt27c3LVu1kM/irpRmw6bQUa5jvI6buCriTCieRiFaILbToDuwE9XHs9B1mQSTRRv1Ee/YsePMyBEj0xIFmAvTFy9enL9opscPTEOoBPHatWuZKlWqyKGSc2ObN28x06dPsz8zbdz5QKzSpbB+X/Xr1zeTJk1KsSzm6F+EEBdr1+0zHiVkj5EWHy2ddfhtcaUoM8fEPj0OIgUiKaznaxmIo0402QfMIrhq+nqsQy0MoLGjR402EyZMsJaVumliOlGLYCy0HoEMH/Ev0UCspd6558l8EZpvjRpUmtetTc2oypUvZ+6+u685+uijRTjMTysX1oEw/H0Kc3V3DXxQ4UZhdZyKg8wzt9AdZvKJfondIXSyBqADzHnnjvRaVjaNgiEI4fPPPzdNmzYzl13a3LS+orUIRdLwCGGA9evWp7UpW6aMzeD2l9+xap2+IiSp9HrCALg2nfZTJkFpCiIMED17D2glGqEHwjJgvLYkzlL0wmAa9KJFipoXX5wsn38PapxWw1SrVk2u+UQYegpCAl+yZKmZNm2aKAvuR1sBKbTOKOEH69T0TdaStHXRNi5iCYSB5UafsgIYyt+0daA5mTaH0LfbAIt7KSgY94L6F5g+t91qfX9vM+zhYWnZVi5ASGvtphLGuZjkIPscFSMA3kJXL8SSrDC1BcZVFhBLIKS5aE3IZLUwREjWZHXA9ulYU67ZhwOLI1Zde227JCXBnPYd2kv/BUUJq+k6OJOxwWS9Rui00/z4BYVTbQGuNC6yCkRKBXahWgNdCUFnWxJnlJYBn44GHXnkkfJ7LkAYxx13nHlo2INyQ9EBy2vYsIHp0qVzmguJAwRRqdJRwXII/WnrCCkivKCVFhJWly2u+cjacpsdKBQsha40CrARDAU0TefSg568w6+/hc+zYVrPXj1kx+2AsrjiX+MmjU27dtdYZiUyLw0sKDQmJZhjjz02ZS18HwXQ2u3oIcaH1p1L/ABZSydoH5rtC4SvFPTWogMLu6V7D7No0buWEUmiBX03b9HcfGGzqJUrV4kmVj2uqvnnGf80tWrVSqu8sjnUNw7XrV9vpk6eahYuXGA3h9/IWBUqVjA1a9aUw6hVq1YlWyYE3a9/P1PrjDNSmIwVhGpZBHja+fRMtxZZy+6vZdmJaX/PIjBR7R7YUOn7vyBEJ3+nINixw3UycQe0uNtNXaXAaLeE1g3sITQYofP9THSExLGAc6f0z8/qvDxz5RVX5icU0CodXck8+ujIFOsAzi1pq3H7Dp/uSjvajWWiRyGVcwqZzA2NDwVlfLEWhkslfTqMZHGVKlUyV17ZWj47oH3z3p4vvyMMENobgBDd9eXHNpiHELi6StbkwLxu69MnTRiiIJam6awFy9B0KXwqprM+ydpyEAaIFAgL1n6RWABzNeOhh9JiGBCqFsNI+mhtBXL22WelCIXSydtvvy2/0wcJRNCXB+hSpVXjwWDK/RNfmJjffsfOHaZv37tM+YMOlM8+SEBCQqLCrfkBPRQ7sKTQHa5siBQI11vSNN5OtkRgIOi6rbg721bT2d2inQ69eveS7MkBIY4bM05+D7lMEKJLrLJC8vsG0N96622z1G4AAcIn+B9f7QSzp2qL8xRLCPRBv2lWY9etbyeKZ7GCyvXWIogUiF4wA4mQVGBlUvpuEoxh4TrAi2bjEjygYSf/o3o+nUUvXbbMLF26VDaemsHQNJ3vCnMC1sG8p06ZkmJN559/fuKzZrAVtFiYR5c+EJLqmzgqzFd9bLbzkCMERY+DSIHo1C6klTAd16bpBNvQ7hm6djP0cYxNO1mgA0KZ9drraTEC5hAsNV1clRVsmnVY+pzXZ5uPPvpYPvP9iy6+0JS0GWJIeFiCptM3SqOtg7Vod4WAQhc/4iL2twiKDKIHcoHVp2MFpLma8Zno9MF5h8bi9xNldB8wmH40HUaE/DvM/PcTT+QLigdFGzVqlGbRgL51mivWEehb+GEFpOkISQtUrCgmYgkkkxVAZ8LalEVIAesI0V0fPLi5//6JiqvDihUrrKuZmvyUAEzT1gFC9Sb6/s8T/zFr16xNUuyCCxcyh1WokLYWgPA0XR7DC/SNJVGO9+liHVZRtNKiQHERSyBMlIFCLkxrFINLSUW5jkx01wd9H3zwwUlqArS9//4H5KkrIG0tw4J9KKUAc996SzIrn0HHHHtMmlaDkDuGwXLxLaDxCELH0pArBXq+UcgqEOdmQsGZH704Apo+VQMhuu7j6MpHy78+EFTHjtfJCZxkPwFmQtca/PHHn5j+/fqnKVEFax36DANFCfWNNRKc06zD0jXj6SNU6UV4mhaFrC1lolZD9CIkiCrNwfWErEDodmJpmq36OOywwxLMsXQ0lu+BTRs3mZYtWpn1di+hmYMv10rx4ZIl5oYbbkjx3bTDhZUvVz5J2QVcKX34fTMPPutSDXT7hzRBizsOWAf0XJBVIExKV0Ed4zUdRoZyb6Er4fF93cfxdi+y/wH7mxEjR8glN3eRgjmwN+H5xPnzErt4Bxbs9/3cc8+b6zten/KWB8YZNHigadPmSttZkpgE6TMIBeKQG5Q4o+iuDy0k6FqBsiFrLQtm6omhbaED/9DlABCis5Ml09GuEAZjSWjmEzYg8/yGb/JoOSWXBo0amGonVDP77LuP7Nh5QcCkSS+ab775JoUxzPXyyy8317Zvl6/Ffn/QmIe2MtatrQZW8Yj43lZRfDqxgzF1H5n6jkL0JQerJfh4XyNoTGVTV3oBKZ8WEgtDU3w67w7ZZNvqPpgK5/PuCJSxO3W60Xy4+MO0NNdZGG1gDovWGoqWd+zYwbRs1VKYQ3sKg4zDd/g3VI2FLlatXJAUC+0YOtagcLoP5kVFPJdKL4gUCB3q66L4dqAnK5kOGuW1hQEwWN9apC1WAMMoaVAO32gZw8sE7rrrTlOrdq1ky0QfZEqffPqpmTF9htB87dSAEQTi8y8435xes6Y5+R8nizWzA8caue3y0ksvm3POOVsUpW7duuaoo1IPy0h18Qq+EtAH84Yf/vjQrQRT2jph0FYrUjZECkT7SwYKlZ8dXd/hQnPQdq25LIynYEeOGGFWr85LCfZly5Y148aPzTdz391x8W3ChBfMqpWrzKdWQFgqLoy/sYc5qtJRpnr16nJ66F+gY26sgzjU+oork6/bSFgCAr/wogttEnC9CNIx3lmpg+tDMxi6boslMafQXicbomMIf/IYj0uCub7J8nW0AY3y6WRnfrrMhelpU6ebRk0aiWW0vaqt3FbX2LFjpxkwoL85/Z+n52dGOs5Q7uZ2B25ly+YtpkjRIiJIFkJSoa0UxYJpM2bMNIMGDc5/3ZIDa7i67dXmiisulz7HjBlrLr20Wb5Q/T58wHiszKfTV66HUj52zTwEZQVMTGdWLrXUdHFhVkhs6nr3vtU0aXyJWbhwoQjptVdnmR9++CHZchcYo1WrFiIM91knFDATRsCs8uXLm4qHVzSHHHKIzI0zEF8YgHk4K+fG/IHl08vtaPO4seMSCmDH5O4W79riIh9jhTIr5kaM1fOT8ZRlROm8RrRAPGDKmKvvqoCcg9gJ+HS0mrazX59tOnToaN62cYLFnnf+eaLFvP0n5FuJVRMnThLXBGCuThywDmiazjGqdo0wgh/ouKmRIx41X375RfKvqdho9zqL3n1Xsru6555j1uatNYMHDTH39h9g1q5dm9a344fepzA/rZwoS1zEEggM5gKz1hLoLFhPAL9/370DzB133CkP3yAs9x4r+vj+u++TLXeBPQdah8vodMON8qSuFj5jhQ7CZA64KtUezYbOhrJH9x5m+vTp0vbAAw+Uf30UtW5v9H9GS3suYBxbNVFi4VL4tddcKwmHD+bJuZA/Jt4CAYXmHRexBMLgaIPWypApU7K4us3V8siBswIEx6YMTVmTt8a8/PLLQveBC6pXr560Jd4MGHCfed5u8nwQl2CStq5Q2QMmIOCVK1eatm2vMSvsv2h5jRo1zGGHHWpbpDINJvJwEAVNcMqpp8q/0LFu3o1yT797xCXBeLFSZR0hdwV0hSIKWQUCg/CrOrBCY8H+YHPnzjXtrmkn7sHXEr7LTUOYxs330AS//uZrc9XVbczFDS6WMWHeoyMfNX3vutt8l7QoFEMzHkDXWkmMGjpkqOl8Yxd5agsBccGOI+M335xr2ycbetiz+J7m348/Ib8fZK3IdzXM5+WXXzHdut1k1lgXphWRtqFaFhat5xaFrDt12W3agbRbIoXkXpajs+gGFzdI016Yy3FpoyaNZS/QsEEj0XINhNu+/bWmecsWYhn8fPvtt7JAFnSqDci1a9UyNU+vKYx14+Cz2akzR7K25cuXy66d/Q1j812WyNWiVnaD+N5775vevXpn1FqE+8yzT0sa3bJFS7POBngf9HWotbCBAx+QpMLhJ/YdVvGYh4/QIx1RyCoQ3BJa6UsZ5vn7ESyi+03dzUcfJ07lfMDQ5yY8Jzt1ngl5/vkJaVrkcGzVY+XdiDAYPPTgMDN58uR85qGFCIIHPA8oV86ULVPWBn7rUrZuk9vweXl5KVZLe/rs3PlGU7VqVXFtY54cIxlVJq2FHeeeW9d0u/kmednZsIeGpTGZNmR2Dz40VNJtxsFdybGtB9nT2Nir6VGIFAiZC7fVtV/EOnhaCkHxxtCuXbqJUNLM1TKg203dTL3z6km1uMHFDYVhmQAjR48ZZcodUC6/L95K+uyzz8qFOvrLpNmApWAVRQoXMdVPrm6aXNLYnH766cJ8mEbVAMsba/cZUWCcp62VlNlvPylokmVpATLWQQcdZHr17mkOP+IIccs642J/FqJHIVIgLACX5DMBhkLHOni6tZ3NQBCQBt1y07BHrx7Sx2OPPm6eeeaZjNYBYGanGzuZpk0vSVIScLUirODDD5eYvNWr7f7ma5O3Js8OlCjjcM0UxqC5/K73B1yeYx29e91q3dZ7SWoYzJ1Yw/OIWF3zy1pkVCQENX3GtDQ3jKtnz6Uf/cuGSIHwBJR+SyfCYGFFChU2V1/dVl7rGgJCeuq/400Z64uLWWs6r17ylkcWnGw1e+CggclPCZ+OpeqzBrch9ZUFgboSjq/RxBn6YVPZ9JJm0i4bcFtcTwIDBw6So+RMbq7TjTeYxo0bJz8llFZKPpZ3obP7KES21kxgILIrNH7EyJHBd00BZx3lbNCjsPjU+KciLcMHFoA2O4RSa0AZRwsYGpqqGSeFRbuWOXPmiGDi4NVXZ5kff/xRfm/e/LJIVzt40ND8TBAwZ2JmrsIAkd/QKaYwx9Io7D3z9DNpwc6BANfGprAI4bdff5PaUFyBbNr0i7y3HZAyInzNYHy8phMjgJ6z0G07hDxl8tRYVgqwonHjxsvvnPWT3WVCkSKFzd19+8rvKCPWq11mXMQWIRrC4mDE0KEPRjL4uOOPk0cG0Oy7+/UTocRFsWJF8x+Zhik6oSBzwT9rOsqiD5+AszBeMMPFu7hA2LgpkhXqWTwg5ISuQVuU6M03E49za88SERXSEEsgdIipI/X5898x772bOSiivW3bXi37YJ7dmzF9pt0wxZa74J133rF7irWSmWnrwPpCVmMnmab9EiuS9Dmz5wT3P1FAAN263iQ1NR4wqlHjtORf0gFvqH2F7mrBk7iIxSlMUNyHHWj06NGRqWfFChXMiSeeKBOc8PzzovG5gseWH3/8cSlE+oDBKId2B9D1W4kAlgSdv7/99rwkNT4QOq+Ueu/dd+UzmZcIOQNW2+yPgqpGXHcN4gnEagpaRpHOXckMAbd21tlnSVbEJNgdc4SKC0NLEGwc84URX3zxhViCD75PiV0vELrO9RmH+UCHUe7FydnA9+iPZ1/OrXeuZFru8TuetOJCXybAo3nzUy9hgLhxC2QVCBrBwsga8KlMNhMwcd7W4wIrD/cjlGHDHjIzX55p7ul/j2nQsIFslhDQzp2ZM5dVK1bJiaAPiQcBS4CuXRgu1rk2Cp2ZgACYN66QeZ1T9xx5r9cLEyeYzl06m4suvkg2gID/IIYLFpnAWDNnzEzZl+3+WpYNaFLLsky+snWb/FuEmeCsgHeK1KlT25xQ7QTRLPYvnDG7Nu9aN0CM4TkQHhOQvY2nSTDplh7dzUUXXSSfYRhIC+YBOuPLW3uS+xHiAA/rOPB3FILxzjrrTHNS9epSYqli5+mAErKXeN/Gy8TzKvNkY8o4US5I4s5N3UyjRg3ls9vUxkVWgbgs5YP3PzCdO3fJyR9iXUyQhdc5s45chONaf42aNeQhSyJ/ieIlRKO633yLZEK+NvHuLAqOMAeBclTq/52dsLu94tNRInc7hGoCb3rwrZG2Ha/rKBUBNJh+UBIUY9GiRcL09+16SS5QRObv958NhxxysBkzdkzSC6QfQUchkrvinpLaNG16+oFRNmBZBGD+fdO6DTaIXGS7sVNnOd+m5gSmTpkmwVP3z1EqcGmu/jvXUzUdBvDj3CYl8+3bU9NVdJD7XmRyCI9SfZfOXc3NN3eX4if7D1Jkyh5Ybq7r5kwIRZB55yAMECkQSTHtwvJW55nXX3s954llAn6aWMJiWfjw4cODm8zXZ88W64DB+nl46Gi2prv03GHum3ODVo1L6969u8TGihUrmv733pNTVTYKxYoWM6+88qpYRq4ci/Y/VgAshhJJqIBYEODCTuA1fLZfmHrXnXcl/5KODevXm89tthUqnWjGAyya0o5Ly2H655+HyzsoFy/j584X4GyDwqZ4hd8JjgR4/FpniXEQKRBn9p/ZYJapTJILcBW8Aol7U4ATwe+/T7994gBj58+bn89gHzBO0xGSnxhQF6MUkwm0HTbs4fxE5cIL68vmL0tYzQqUeNnyZWLZuSJSIG7HSR6fSzDPBEyY1BctvrV3H/lPu3wGaqAEC2xg1a6SgyaE4dPZK7H/8WtZFBPdGjKBMUgoFi1cJJ972n1HmTJlfr9Q9ihklS39Mkc2xOIyMeT3AlfFu3VLlippXpo5U+o+cTDPWghJhYO7Wah35lgH8cApDtr57qLEDjsKCJWqbp8+fSS44waHcGq5G6zEVYBRlLiIJZD1G1LPlXMFzOFm4DHHVBG/umrVR7FdIO38jR1HovShn1cBvrV99ulnciYfF1u2bDW9evWWvRKv4Wh2abPkXwoGBLLexkCw2181/kuEH44DJscuf+26xLt69y9bVgJ6HMDk+fMSdSgEi64Fa1mK9sqrrwZjTyYwn/bXXisWQ39c7vu9YM8FtMuNQiyBuN1wQcGEOAq97dbEayx4PIACZBy3QHtSbkBeHyqxsx/R6S8xIS4jONm7ufvN5pRTT5HPt992R/7tyd8D3mqEoKPipEYsgcTV5ijAHFzV/fc9IFbCE011z60bSyicBHLeEFocNPYjPvLy1tjNWeYiqA82hn379TVnn3O2CHr48BFyHqOFXhAULlQ451pW1lHlPLtEekGvICAecJ1z1KjRsmBqPjzHQcCPAq6H7+nb54D9kauROUyZPNkKOvkhArim8U+NSxRErct75OF/STUhF42OAoIg2cgFWQVCvt+sWTPRpN0BBMF9J0oL6E2PHrfIu7CirJCF8b+Caq11MUUnCAsWLrRto7USQQ64715z4EEHiRt8cdKLZvz48btFGFh96f1Km1p1aqedHmZDpEAQBpfWuAZ6x52375ZdLOCGYYf2HaWKCm6//TYpcUe5L84zPrIuzwexTS+YdiuWJ+7nZgJa26VrF7nni1AHPjDQDB40OC0xKAhYAzWw//73qfxDvVwQKRCsgg7RTF7W0qPnLQkhxfEHEUDjeWzsrjv7SmrKhnHYww9JcM0E5jHbbvQcsCiYqTV6jrWkKMXhO7wcjZskbFC5hDd1avq9qoKAOXEF9bHHH5X90m5/G5C+PMzZBP8PIa8DZ7P2ewWDwDt36iIXCdgd9x/QP6PrYh4UCh34ri5rw2CqylFuh9dAcc4COEx6bORjv1sYzBlr5b8M5y7a/gccILzxz2jiIlIg2h2geTyxNGbsk+b+B+6X/yiFgJwtKEeB24dcRSWTos7Ff8CSSSiclyA8/o4G+vsMGLByxcqU9ylq8D13K5L3Od434L4CMc0BfmzdukViLP+pDEkKyrDZxidudhYEhe+0SP6eBh1EpRxv/SyVWg6buN3XNPksHjn32nVrpcKKj3ZuI9uOHPfFHqVUqZJyclfB9su7EWGuHp/PRxx5hLw8hoX7loCAyJD8F/n7wFVxKEZFF/DYRJRrc0DQrBuPwA9zwJp5DQi7efYvpMzuyihCJ3YUVNBZTwwdGAi/r1+4T6EPC9GpJyeNy5cuk6eoKCFEuRFA/1zx/79T/s+6oy02yA4yM2e+lPI9psolCjSR8XzGM492bdsFN3QI4wKbXt9iMzoYysaPwqMWuAYC4OymQ8cO5sDy5VPGE35YS5Abip7SuRuVfumdttnGcojVymlJWhZi6a6o50Pii50EN9BfnDzJtL2mrWhjlOyZcM+eveRNDOx7+O8jeATOBwzhP8RfuWJFmhV89+13clNFgzF5VLpnr54yBiWcWbNmRTKI75QrV86MGDnc3HZbn/yzeR8oHJVlXxh8j3Xqc5Dd/9/m2Q63Wy3TA2GaaIOerL5ZyJtH8bFnnnWmCBCNCQF6506d5ZE2hMqmUR+M/fzTz3L3CTdHO6yWxwVC1WMYVL58OTkNBCjVc3JXLBzEGR+XW6dOHTNk6BB5pmSjHV8fkNEOr6D5Qf+hfYd+MjgKWV0Wg8MUGOy7D+juJomvbQgDAelFQOeOFHdseYBynWXi4sUf5gdh1wfTIT41aHixadKkiWwIH374Edm7OPAsOy/0d1NnPObmB3ncFI9Xd7X7DbSdnT7j8poOxuK7KBr3rGrVOkMeSiVr40lhYgRgfViAXgt0hKHH493vvAfFB4Lz+ZYN2a8B2UFCL1BBSOIrPbpomGV43Pd+4G951oNnE5ctXW6W2ywqzzKexYFe1s3Uv7C+WW43eh3ad8iaIDgwHsXLgYMeEKaR3vbte7f8jQSkyjFVJP3l1RuVq1TOD9Z+Gg0jcUu6XJOJnunhnN36SBuD80Ps8N0SEwL4UJ9O1bWIXZivOXwfd+fTYRhMsF9O6YO2HBbxVBYxoUzZsqauDaq4OR6yWbiACq40FfC9xOy9JVgaRb3mLS4TrccKuH1/6KGHyC12XmDmNqAsnb4B2aM7Y4GOIuoYQV9kc1iHT8dVAd9N+33nknFFCgQNZnDf5Nh8sSnTGgKdQK7NUzRHuTsJ+nZYnSSQKcFhn047eZ6R8TxpZKKH+gC4GebgH/GKslgm6w0mdKw0rQ87Hm11QhDapKK08EPTsyF22vs3/hjED/9/4w/B3wL5i+FvgfzF8LdA/lIw5v8Bz/HEsHqy2zkAAAAASUVORK5CYII=";
const default_official_image = "data:image/png;base64,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";
const default_unknown_image = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAABkCAYAAABw4pVUAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAARlSURBVHhe7dxPaBxlHMbxZ2Z3s5OdNCUkKVgELaJSrEWMRJA2gq0QqiAmrWKpRKiICEVvFome9OJBKoI9eIgeYv1Drbi12ot/akQNJQdLqxRN1MoKpmVrTNft7s6M2c2vbJqdbVOL5Hlffp9L3/fNqf3uzGTe2akTzYGi4cqfDYIwlNHFrmS92jokWq+uVX+22P+9HgRB7HocPULIND1C1PLQIGQ0CBkNQkaDkNEgZDQIGQ1CRoOQ0SBkNAgZDUJGg5DRIGQ0CBkNQkaDkNEgZDQIGSOfqYe5KQTfHUMwPY1o9lxtzWnz4XR3I3nnRiRWd9TWTGRIkCIqRw7gfHYcpezniM7NR2jG8bvQsm0H0o9tR/IGs+LQB6kcGkFh+FVUpi8dIZ6P1M4n4D/7FNxWWSJHHaT02jOYffljmf13znXrseK9USRXe7LCizrIbP+NKB2XySKOvwru9Z21cVQ4g3Dqz9q4mWqU9ux+JMjPYEYFcXs2wdvaj5bB/rlT0OJPexHlw5/i/JtvoDR2UtYu5m4Ywsp9w3Bkzog6SOHxzSge/rUWIvPcLrT03iI/ubTKB6/g76f3Iu4vlhk9Aq/vGpnxoQ4SHvsSpZMJpAc3XPGnujL6ImZ2vyWzOmfjo+h4+wWZ8aEOcnWKKDxyH4pjv8n8gi6s+P4bpEivJRbfqXtz9yEDMl7oNMpfnJAxH6u3ThJ9W5DwZbJA8MNPMuJj915W6xok1zYWCXO/yIiP9ZuLTmeXjOqi/FkZ8bE/iJeR0QIN9zA8rA8S5s/IqM7tmL/DZ2R5kCLCU41bKk5Ht4z4WB0kmvwKlSmZLJDsuVVGfKwOUs4eitk+6UKyd42M+VgbJModRWHvQZnVJR7YQXuXXmVlkCg/idmhXQgbnmn58J7cLmNOlgUporx/BDObBlD+8bSs1aV27kZ6HfcDEWM3F8Ofj6L47meI/inKfBKVia8RNXnS6972ENqzL9F/Ag0NksfM7b2oTMv0MpKbh9D2+rARz9XNPGXlTiBYQgyn+yZk9uxD+4gZMarMPELyEzi7/mE0/Pcyvg931c1I3d2DxL33IN13B/Xj2jgWBVmLlac+QkJmprLntyy/1bijIY6ZQbyY3do2Qy4Sl2FmkFY7joY49pyyMnrK4pLxNMjymfvHj/nygg3MDdImQ+F2mvXaQTPG7mUF42Moj03UnndUX9ZJ3j+ApMEv6lxgbBBb2XNRt4QGIWPsKSvMHUfp4LfzL31WryF3bUFqHe9rBktlZJBw/B38Nfh8wxcYvD0fIjO4tHdIWBl5yiq9fyD2ZZzSJ1f/PuJyMzJI3LcRq8Lf/5CRufSiTsbIIM2+m+tea/5F3cggLdsejN1ITA9slZG59NdeMrp1QkYv6mQ0CBkNQkaDkNEgZDQIGQ1CRoOQ0SBkNAgZDUJGg5DRIGQ0CBkNQkaDkNEgZDQIGQ1CRoOQ0SBkNAgZDUJGg5DRIGQ0CBkNQkaDkNEgZDQIGQ1CRoNQAf4F7LSQOxV0OH4AAAAASUVORK5CYII=";
const default_incognito_image = "data:image/png;base64,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HCdmT6xbA4LWqxtJn82UL1hYUUAEhI196RVal4+Ke3wyf30ItkJBlHklk86eO+fyECo3HLpPZph3iZl17NI9T3u1W3GnECXCwijkzhD67dpv14dgy8/XoZOxV37HSz3K+1rABIRNmTqdPpstX370lqGDB9IzI0fokrleG/+GGtjHF4YMGkjPjvLN322GgAoIm/npLJq3YAFduHBRL/GuInfeSaNGPk39Hn1EL/ENvi8xfcbHxqHgr3qJd919993Uv99j9NTQwXpJYAq4gDAe3JL/o/JJpjdxVYq+ff6kxgH0B/w3L1/xlder/nfp3EldbrZyO4+8CsiA5Ji/cBGtXLU6X8MaSzgYHdq399pNyILieyAboqM9HhS+M96taxfq/UAvvSTwBXRAcvAXJiYmhnYZXxhXg1A6wye1XO3cn4Nxq5ygxO9LyNdFB1b6nnuoceNGqqrLn/74gF5qH7YISA4eBJP/qyYmJqnuME+cTBWvAHHXnhERtSiiZk1jWlONsW5FPNZ5QsIBSjhgPBL2q7EVneH7JhXKlzMe5almzRrqb+ZLuHZlq4DkZtv2HXTSCAp3fBYSEqIePJoTTwvSyMmf8R6F+6riHg95mv3IovJGMJo3a6p/CpjtAwIgsWxlRQAzICAAAgQEQICAAAgQEAABAgIgQEAABAgIgAABARAgIAACBARAgIAACBAQAAECAiBAQAAECAiAAAEBECAgAAIEBECAgAAIEBAAAQICIEBAAAQICIAAAQEQICAAAgQEQICAAAgQEAABAgIgQEAABAgIgAABARAgIABOEf0PpHMulV25FggAAAAASUVORK5CYII=";
const plus_card_image = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIQAAACECAYAAABRRIOnAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAdhgAAHYYBXaITgQAAAiZJREFUeF7t1E1qG0EUhdHsyMvIPCvwPIvQJKNMshSvz/qNmmTgS9oSzzKVat45cEFSQSNUH/pygTfuBvG63/999a/zdYfD4c+bFefz+eb5cnbvfHnGew7H483z/fW7f/R8+fzW+fF0upyue8/yu/2v8+V7L/sI/xAEQRAEQRAEQRAEQRAEQRAEQRAEQRAEQRAEQRAEQRAEQRAEQRAEQRAEQRAEQRAEQRAEQRAEQRAEQRAEQRAEQRAEQRAEQRAEQRAEQRBaBfH9x8tD66BVELvd7qF1IIjCOhBEYR0IorAOBFFYB4IorANBFNaBIArrQBCFdSCIwjoQRGEdCKKwDgRRWAeCKKwDQRTWgSAK60AQhXWwmSCevv16eGuXXNnaM6ub3WaCWLugLW52ghi82Qli8GYniMGbnSAGb3aCGLzZCWLwZieIwZudIAZvdoIYvNkJYvBmJ4jBm50gBm92ghi82Qli8Ga3mSC+Pv98eGsXVNnaM6ub3WaC+Axrl1xZB4IorANBFNaBIArrQBCFdSCIwjoQRGEdCKKwDgRRWAeCKKwDQRTWgSAK60AQhXUgiMI6EERhHQiisA4EUVgHrYLgPkEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBG9cLr8Bj+rkfd/XmSYAAAAASUVORK5CYII=";
const personal_card = "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAeAB4AAD/4QBaRXhpZgAATU0AKgAAAAgABQMBAAUAAAABAAAASgMDAAEAAAABAAAAAFEQAAEAAAABAQAAAFERAAQAAAABAAASdFESAAQAAAABAAASdAAAAAAAAYagAACxj//bAEMAAgEBAgEBAgICAgICAgIDBQMDAwMDBgQEAwUHBgcHBwYHBwgJCwkICAoIBwcKDQoKCwwMDAwHCQ4PDQwOCwwMDP/bAEMBAgICAwMDBgMDBgwIBwgMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDP/AABEIAM4BXgMBIgACEQEDEQH/xAAfAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgv/xAC1EAACAQMDAgQDBQUEBAAAAX0BAgMABBEFEiExQQYTUWEHInEUMoGRoQgjQrHBFVLR8CQzYnKCCQoWFxgZGiUmJygpKjQ1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4eLj5OXm5+jp6vHy8/T19vf4+fr/xAAfAQADAQEBAQEBAQEBAAAAAAAAAQIDBAUGBwgJCgv/xAC1EQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2gAMAwEAAhEDEQA/AOgooor+qD/PcKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK9m/Yf8N6T8Rfijqvg7VrOxuW8XaFe2GnzT2sczWV4IzLFNGzAlGAjcAqRksOtc2MxKw9GVeSuoq79Fv9y1O7LcDLGYqGEi7Obsr93svm7L5njNFfVn7MHwF0HxV+yZ4vh1bR7Wfxl4vF+fDRmjU3X/EthSZhAT8ybpXZGwRuC4bIxXC2/wAMVf8AZN8F6fp+j2upeM/iZ4nnl06VLVGuhZ2yi3MIlYZQNO244IGF5OAa8+OdUXUlTS+GXL5PRtv0XLK/+FntT4VxMaEK7atKm52Sba96MVG3eXPBq3SaPDaK9M8V/svapoGieI7zTte8M+J5PB8iprlppMtw82nKWKGQ+bDGksauNrNC0gXIJwvzV6t8ePgdN8VB8GYx4k8L6DNqngbR9O06LU7iYSX85aXKqsMUhjUF0G+XYhL4VmKvt0qZxQjKKTune71urK+1r6p39NdjCjw1i5wqNq0o8rS0tK8nH4r2VpK3+L3dz5dorQ8V+F9Q8EeJtQ0fVbZ7PUtLuHtbqBiCYpEYqy5BIOCDyCQeoJFfclx8Gml+OngnRx8OdBk+F994Tt5tcvz4Yt44oibWQyzHUFiEqTDCNkShs47mpzHN6eEUZPVNSlulpFJ6d276Lr3LyThutmMpwTcXGUItcrdnNtJvsk17z1a7M+C6K9N8Ffs0XnxH8EeIPF1hrehaT4T8P6h9juLvVp5Y5IkZS0blI4mZ93yJtQFy7jC4yRS0z9n6aXwkPEGqeJvDPh/Qbu8kstLvr/7WRrRjJEklvFDbyTeWmFy8kaAGRV+9lR1/2hQu482qdmrNu9r20621stba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";
const moduleName = 'wallet';
var personaCollection;
var incognito = false;
const builtinPersonaKinds = ['natural', 'minimal', 'official'];
var process_pin_options;
const CARD_SELECTED = '#E1E1E1';
const CARD_NOT_SELECTED = '#F8F8F8';
function submitOnCr(event, func, parameter) {
if (event.which == 13 || event.keyCode == 13) {
pk.app.renderScript(func, parameter);
return false;
}
return true;
}
// currentPersona is a card id or 'selected'
function paint_cards(currentPersona, scopeInfo)
{
var personas = personaCollection.personas;
if (!scopeInfo){
scopeInfo = emptyScopeInfo();
}
/*
var card_template = `\
<div class="row figure card_group" id="card_{{cardId}}" onclick="pk.ptools.click_data_card(event);" oncontextmenu="pk.ptools.delete_card(event);return false;">\
<img class="cg_card img-fluid" src="{{card_design}}">\
<span class="cg_details fas fa-address-card" style="font-size:1.6em; color: white" onclick="pk.ptools.click_data_card(event, \'data\');">\
{{submitButton}}\
</span>\
{{card_text_spans}}\
</div>`;
*/
var card_template = `\
<div class="row figure card_group" id="card_{{cardId}}" onclick="pk.ptools.click_data_card(event, \'data\');" oncontextmenu="pk.ptools.delete_card(event);return false;">\
<img class="cg_card img-fluid" src="{{card_design}}">\
<span class="cg_details fas fa-ellipsis-v" style="font-size:1.6em; color: white" onclick="pk.ptools.click_data_card(event, \'more\');">\
{{submitButton}}\
</span>\
{{card_text_spans}}\
</div>`;
var natural = getPersona("natural");
var options = natural.data.options ? natural.data.options : {};
var submitButtonTemplate = '<i class="far fa-paper-plane px-3" style="font-size:1em;" onclick="pk.ptools.click_data_card(event, \'submit\');"></i>';
var omniWarning;
var submitButton = personaCollection.submitEnabled ? submitButtonTemplate : '';
var setHtml = '';
var matchingCards = 0;
for (var key in personas){
var persona = personas[key];
// new candidates still have an undefined scope but
// if they are explicitly referenced by kid
// they match the request.
if (persona.kind === 'minimal' && !options.self_asserted_personas){
continue;
}
// don't show candidates
if (persona.kind === 'candidate'){
continue;
}
potentialMatches = true;
if (persona.scope || currentPersona === 'selected'
|| persona.kind !== 'candidate'){
// the general case: scope must match
if (scope_and_claim_mismatch(persona, scopeInfo)){
continue;
}
}
var card_text_spans = '';
if (persona.card_formats){
for (var k in persona.card_formats){
var css_obj = persona.card_formats[k];
var css = '';
for (var j in css_obj){
css += j + ':' + css_obj[j] + ';';
}
card_text_spans += '<span style="' + css + '">'
+ persona[k] + '</span>';
}
}
var cardHtml = card_template.replace(/{{cardId}}/g, persona.id);
cardHtml = cardHtml.replace('{{card_design}}', persona.card_design);
cardHtml = cardHtml.replace('{{card_logo_url}}', persona.card_logo_url);
cardHtml = cardHtml.replace('{{card_title}}', persona.card_title);
cardHtml = cardHtml.replace('{{credential_description}}', persona.credential_description);
// omniWarning = persona.omnidirectional ? 'fa-bullhorn' : '';
omniWarning = persona.omnidirectional ? 'fa-shoe-prints' : '';
cardHtml = cardHtml.replace('{{omnidirectional}}', omniWarning);
cardHtml = cardHtml.replace('{{card_text_spans}}', card_text_spans);
cardHtml = cardHtml.replace('{{submitButton}}', submitButton);
setHtml += cardHtml;
matchingCards++;
}
if (scopeInfo.scopeArray.length && matchingCards === 0){
triggerOAuthError(400, "invalid_scope", "neither scope nor claims match a card");
return;
}
var cardSetEl = document.getElementById('card_set');
if (cardSetEl !== undefined){
cardSetEl.innerHTML = setHtml;
}
if (currentPersona !== undefined){
if (currentPersona === 'selected'){
currentPersona = personaCollection.selectedCard;
}
var currentTarget = document.getElementById('card_' + currentPersona);
if (currentTarget !== null){
var eventSimulator = {
currentTarget: currentTarget,
simulated: true
};
select_card(eventSimulator);
}
}
function scope_and_claim_mismatch(persona, requestScope){
var match = false;
var scopes = requestScope.scopeArray;
// no requestScope means accept all scopes
if (scopes.length == 0){
return false;
}
for (var i=0; i<scopes.length; i++){
var scope = scopes[i];
if (scope === 'openid' || scope === 'vc'){
continue;
}
if (persona.scope.includes(scope)){
match = true;
break;
}
}
if (requestScope.claims && requestScope.claims.id_token){
for (var key in requestScope.claims.id_token){
var addi