diff options
author | Minteck <contact@minteck.org> | 2023-02-23 19:34:56 +0100 |
---|---|---|
committer | Minteck <contact@minteck.org> | 2023-02-23 19:34:56 +0100 |
commit | 3d1cd02f27518f1a04374c7c8320cd5d82ede6e9 (patch) | |
tree | 75be5fba4368472fb11c8015aee026b2b9a71888 /includes/external/school/node_modules/node-forge/tests/webid.js | |
parent | 8cc1f13c17fa2fb5a4410542d39e650e02945634 (diff) | |
download | pluralconnect-3d1cd02f27518f1a04374c7c8320cd5d82ede6e9.tar.gz pluralconnect-3d1cd02f27518f1a04374c7c8320cd5d82ede6e9.tar.bz2 pluralconnect-3d1cd02f27518f1a04374c7c8320cd5d82ede6e9.zip |
Updated 40 files, added 37 files, deleted 1103 files and renamed 3905 files (automated)
Diffstat (limited to 'includes/external/school/node_modules/node-forge/tests/webid.js')
-rw-r--r-- | includes/external/school/node_modules/node-forge/tests/webid.js | 313 |
1 files changed, 313 insertions, 0 deletions
diff --git a/includes/external/school/node_modules/node-forge/tests/webid.js b/includes/external/school/node_modules/node-forge/tests/webid.js new file mode 100644 index 0000000..7c07ab9 --- /dev/null +++ b/includes/external/school/node_modules/node-forge/tests/webid.js @@ -0,0 +1,313 @@ +/** + * Forge Web ID Tests + * + * @author Dave Longley + * + * Copyright (c) 2010 Digital Bazaar, Inc. All rights reserved. + */ +(function($) +{ + // load flash socket pool + window.forge.socketPool = {}; + window.forge.socketPool.ready = function() + { + // init forge xhr + forge.xhr.init({ + flashId: 'socketPool', + policyPort: 19945, + msie: $.browser.msie, + connections: 10, + caCerts: [], + verify: function(c, verified, depth, certs) + { + // don't care about cert verification for test + return true; + } + }); + }; + swfobject.embedSWF( + 'forge/SocketPool.swf', 'socketPool', '0', '0', '9.0.0', + false, {}, {allowscriptaccess: 'always'}, {}); +})(jQuery); + +jQuery(function($) +{ + var cat = 'forge.tests.webid'; + + // local alias + var forge = window.forge; + + $('#create').click(function() + { + var bits = $('#bits')[0].value; + var uri = $('#uri')[0].value; + var commonName = $('#commonName')[0].value; + forge.log.debug(cat, 'generating ' + bits + + '-bit RSA key-pair and certificate...'); + + // function to create cert + var createCert = function(keys) + { + try + { + var cert = forge.pki.createCertificate(); + cert.serialNumber = '01'; + cert.validity.notBefore = new Date(); + cert.validity.notAfter = new Date(); + cert.validity.notAfter.setFullYear( + cert.validity.notBefore.getFullYear() + 1); + var attrs = [{ + name: 'commonName', + value: commonName + }, { + name: 'countryName', + value: 'US' + }, { + shortName: 'ST', + value: 'Virginia' + }, { + name: 'localityName', + value: 'Blacksburg' + }, { + name: 'organizationName', + value: 'Test' + }, { + shortName: 'OU', + value: 'Test' + }]; + cert.setSubject(attrs); + cert.setIssuer(attrs); + cert.setExtensions([{ + name: 'basicConstraints', + cA: true + }, { + name: 'keyUsage', + keyCertSign: true, + digitalSignature: true, + nonRepudiation: true, + keyEncipherment: true, + dataEncipherment: true + }, { + name: 'subjectAltName', + altNames: [{ + type: 6, // URI + value: uri + }] + }]); + // FIXME: add subjectKeyIdentifier extension + // FIXME: add authorityKeyIdentifier extension + cert.publicKey = keys.publicKey; + + // self-sign certificate + cert.sign(keys.privateKey); + + // verify certificate + forge.log.debug('verified', cert.verify(cert)); + + forge.log.debug(cat, 'certificate:', cert); + //forge.log.debug(cat, + // forge.asn1.prettyPrint(forge.pki.certificateToAsn1(cert))); + var keyPem = forge.pki.privateKeyToPem(keys.privateKey); + var certPem = forge.pki.certificateToPem(cert); + forge.log.debug(cat, keyPem); + forge.log.debug(cat, certPem); + + forge.log.debug(cat, 'storing certificate and private key...'); + try + { + // get flash API + var flashApi = document.getElementById('socketPool'); + + // get web ids collection + var webids = forge.util.getItem( + flashApi, 'forge.test.webid', 'webids'); + webids = webids || {}; + + // add web id + webids[uri] = { + certificate: certPem, + privateKey: keyPem + }; + + // update web ids collection + forge.util.setItem( + flashApi, 'forge.test.webid', 'webids', webids); + + forge.log.debug(cat, 'certificate and private key stored'); + $('#show').click(); + } + catch(ex) + { + forge.log.error(cat, ex); + } + } + catch(ex) + { + forge.log.error(cat, ex, ex.message ? ex.message : ''); + } + }; + + // create key-generation state and function to step algorithm + var progress = $('#progress'); + progress.html('Generating ' + bits + '-bit key-pair.'); + var state = forge.pki.rsa.createKeyPairGenerationState(bits); + var kgTime = +new Date(); + var step = function() + { + // step key-generation + if(!forge.pki.rsa.stepKeyPairGenerationState(state, 1000)) + { + progress.html(progress.html() + '.'); + setTimeout(step, 1); + } + // key-generation complete + else + { + kgTime = +new Date() - kgTime; + forge.log.debug(cat, 'Total key-gen time', kgTime + 'ms'); + createCert(state.keys); + progress.html(progress.html() + 'done. Time=' + kgTime + 'ms'); + } + }; + + // run key-gen algorithm + setTimeout(step, 0); + }); + + $('#show').click(function() + { + forge.log.debug(cat, 'get stored web IDs...'); + try + { + // get flash API + var flashApi = document.getElementById('socketPool'); + + // get web ids collection + var webids = forge.util.getItem( + flashApi, 'forge.test.webid', 'webids'); + webids = webids || {}; + + var html = '<ul>'; + var webid, cert; + for(var key in webids) + { + webid = webids[key]; + cert = forge.pki.certificateFromPem(webid.certificate); + html += '<li><p>' + key + '</p>'; + + var attr; + for(var n = 0; n < cert.subject.attributes.length; ++n) + { + attr = cert.subject.attributes[n]; + html += attr.name + ': ' + attr.value + '<br/>'; + } + + //html += '<p>' + webid.certificate + '</p></li>'; + html += '</li>'; + } + if(html === '<ul>') + { + html = 'None'; + } + else + { + html += '</ul>'; + } + + $('#webids').html(html); + + forge.log.debug(cat, 'Web IDs retrieved'); + } + catch(ex) + { + forge.log.error(cat, ex); + } + }); + + $('#clear').click(function() + { + forge.log.debug(cat, 'clearing all web IDs...'); + try + { + // get flash API + var flashApi = document.getElementById('socketPool'); + forge.util.clearItems(flashApi, 'forge.test.webid'); + $('#webids').html('None'); + forge.log.debug(cat, 'Web IDs cleared'); + } + catch(ex) + { + forge.log.error(cat, ex); + } + }); + + $('#authenticate').click(function() + { + forge.log.debug(cat, 'doing Web ID authentication...'); + + try + { + // get flash API + var flashApi = document.getElementById('socketPool'); + + // get web ids collection + var webids = forge.util.getItem( + flashApi, 'forge.test.webid', 'webids'); + webids = webids || {}; + + var uri = $('#webid')[0].value; + var webid = webids[uri]; + + $.ajax( + { + type: 'GET', + url: '/', + success: function(data, textStatus, xhr) + { + if(data !== '') + { + forge.log.debug(cat, 'authentication completed'); + forge.log.debug(cat, data); + } + else + { + forge.log.error(cat, 'authentication failed'); + } + }, + error: function(xhr, textStatus, errorThrown) + { + forge.log.error(cat, 'authentication failed'); + }, + xhr: function() + { + return forge.xhr.create({ + // FIXME: change URL + url: 'https://localhost:4433', + connections: 10, + caCerts: [], + verify: function(c, verified, depth, certs) + { + // don't care about cert verification for test + return true; + }, + getCertificate: function(c) + { + //forge.log.debug(cat, 'using cert', webid.certificate); + return webid.certificate; + }, + getPrivateKey: function(c) + { + //forge.log.debug(cat, + // 'using private key', webid.privateKey); + return webid.privateKey; + } + }); + } + }); + } + catch(ex) + { + forge.log.error(cat, ex); + } + }); +}); |