/* * Copyright 2018 Scytl Secure Electronic Voting SA * * All rights reserved * * See our extended copyright notice in *file 'Copyright.txt' which is part of this source code package */ describe('Asymmetric service...', function() { 'use strict'; describe('should be able to ..', function() { var _plaintext = 'Ox2fUJq1gAbX'; var _privateKeyPem = '-----BEGIN RSA PRIVATE KEY-----MIIEowIBAAKCAQEAglypZU45bnf2opnRI+Y51VqouBpvDT33xIB/OtbwKzwVpi+JrjBFtfk33tE9t/dSRs79CK94HRhCWcOiLa2qWPrjeZ9SBiEyScrhIvRZVBF41zBgwQNuRvJCsKmAqlZaFNJDZxEP4repmlBn1CfVFmfrXmOKqwP5F7l9ZtucveRzsfmF1yVPFkW8TMuB3YqMiyymyqHlS8ujCsu5I8tpgPbwuxdMOY94fNhSXrYkY8IuX1g1zdq/Z1jluOaR/UqK4UpnbuJaH/F0VgDNiWh6cTD0DFGEk0b70i5wU4Q3L/S6XZQRvSuADoCbhwBKuFL5pW5n865oLVb5S3wuVdWaGwIDAQABAoIBAC/tn34Wf3kE9BGeGc1oFLVDaqqdVVz5/oEpeR2J7q0GnzMFYUpAhzC7WvY52cYsUPyll1Q9Jx0TUTmteo/uvKWQQFfz4nVMeS+2PoXabolBDzuWlsv/1eiRo0FOYHa/3siu8YcQN9X0DpAkpbfTmT1uoZOHZ3EuucMmOFu7vGn38Grw8bSxpR0uvTtnb8ygC+aB51y38RMyhzQQanrM8FMeAfDAy6IB0Yo7b0c50Cxa6Ax4nqn9LXyGakr5WeAMkgTIOA/GId9SZD4e5eRpq+628pOeR4O9datFltgl6r1+A4ii2VrJsDqeatGtODlX6KRKqwFHoGIa2TjgSZLuorECgYEAxeSZDOOgFsI5mB7RkRzZaQ9znJ15sgdyZiAFZAOUah4hSGdAXNAnZTlrdacduXEu3EfkpuPToX7xZSv5FRYwfBwMwCLeytlGLPjQzWejZGbo4+KqgzWb9fECDYVtDPlJ/+yLih9nt67BHweJKxYydl18rVigdVyy22X86NijSykCgYEAqKPUrXZAo+TJvmTw4tgsibJgvXBYBhmsej8mGNQw+Nyp2gV28sgm61ifIeXKS8teq+MFwGA6cHQedbsCqhMHokdhESZmlbWxhSFLihQcewBxwvrBwbaxI23yXRzwMewznZFL032PpcbqrmwFmcSSEZ3nmbvTH6ShqLW+pzDNp6MCgYBQLzdgxJ7qedqSa/JohTMG4e7rh9d2rpPJE7J7ewPZF8pOpx+qO+Gqn2COdJ+Ts2vUcAETKn9nEaPIZc/wnmQY9dioxbhWo0FPGaaphBPtq9Ez/XUv4zoFppk5V1X/isdUPsmvttf00oeIBiqrXbwmv+yz5JRn2Z7TTXjz9Ev+OQKBgQCUuoCMRzl1EgcXIqEL/0kwW6BUEqufHa9u1Ri9Vw6lvL8T6DPipMEmWK9nzuid9gtVns/ovTVtDgv7GuabplLaPQePf4WDzY11c0rSyS/hDyBFrK+LL5uEOqhAlJAGB2HyOj1clWVF+GvrTpuV5LZKUS/79pmZU7G7QCaX/0Ow7wKBgC/kDH7cmWQnWvvJ5izrx/7PogQVPOLELeUIGLu/hjsSdDKiFCxCUZ948+9NuG+DnpXDWzw//r8mPBRRGGsqFws5Aipp7yjQ3kRDCCzGelPCVhHyfmKqA+8ewXPulKS3/wIyHIvaXmsuAtTfurHtpRyzjKmCBK1Y6WQ3trIXvo7s-----END RSA PRIVATE KEY-----'; var _publicKeyPem = '-----BEGIN PUBLIC KEY-----MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAglypZU45bnf2opnRI+Y51VqouBpvDT33xIB/OtbwKzwVpi+JrjBFtfk33tE9t/dSRs79CK94HRhCWcOiLa2qWPrjeZ9SBiEyScrhIvRZVBF41zBgwQNuRvJCsKmAqlZaFNJDZxEP4repmlBn1CfVFmfrXmOKqwP5F7l9ZtucveRzsfmF1yVPFkW8TMuB3YqMiyymyqHlS8ujCsu5I8tpgPbwuxdMOY94fNhSXrYkY8IuX1g1zdq/Z1jluOaR/UqK4UpnbuJaH/F0VgDNiWh6cTD0DFGEk0b70i5wU4Q3L/S6XZQRvSuADoCbhwBKuFL5pW5n865oLVb5S3wuVdWaGwIDAQAB-----END PUBLIC KEY-----'; it('return a key pair', function() { // Note: Key size here is set to value lower than minimum value // allowed by policy in order to keep test time reasonable. var keyBitLength = 1024; var f = function(box) { var encryptionKeyPair = box.asymmetric.service.getKeyPairForEncryption(); expect(encryptionKeyPair).toBeDefined(); }; f.policies = { asymmetric: { keypair: { encryption: { algorithm: Config.asymmetric.keypair.encryption.algorithm.RSA, provider: Config.asymmetric.keypair.encryption.provider.FORGE, keyLength: keyBitLength, publicExponent: Config.asymmetric.keypair.encryption.publicExponent.F4 }, secureRandom: { provider: Config.asymmetric.keypair.secureRandom.provider.SCYTL } } } }; cryptolib('asymmetric.service', f); }); it('return a signature and verify it', function() { cryptolib('asymmetric.service', 'commons.utils', function(box) { var converters = new box.commons.utils.Converters(); var dataB64; dataB64 = converters.base64Encode(_plaintext); var arrayDataBase64 = [dataB64]; var signatureBase64 = box.asymmetric.service.sign(_privateKeyPem, arrayDataBase64); var verified = box.asymmetric.service.verifySignature( signatureBase64, _publicKeyPem, arrayDataBase64); expect(verified).toBeTruthy(); }); }); it('encrypts and decrypts data', function() { cryptolib('asymmetric.service', 'commons.utils', function(box) { var converters = new box.commons.utils.Converters(); var dataB64 = converters.base64Encode(_plaintext); var encryptedDataB64 = box.asymmetric.service.encrypt(_publicKeyPem, dataB64); var decryptedDataB64 = box.asymmetric.service.decrypt(_privateKeyPem, encryptedDataB64); expect(decryptedDataB64).toBe(dataB64); }); }); it('verifies a signed xml', function() { cryptolib('asymmetric.service', 'commons.utils', function(box) { var inStream = [ '', '', ' testTransactionId', ' en', ' ', ' XICOqyVby006j6ziAkGhRV4mjqy0xcLHlTrhj0YpBag=dNqz4wgVx4Ofp11kxuW2YABryNZdPpxWZskI0hevRMJVNh0MzY2hJd23nKajF9m6QOk+nRJW3ez9', 'KO2bG6vgSvoHmyRdpsi1yuzMk6zWGY2lwwJ4JFXFq/9R/ii64Y1GCJlg2JJWx4JCDZxwV8lCCgnp', '3N44Izt09pyT8441dHw=t+qknJd/Kdo09fvQrRThqh/3EyDQj8zT1ZT7uXmivni4Vaysf6zHv+oORIvAt9ntZE2ZCif9v6CC', 'W+hmRFkdgRoVpmD2TErjykzowx6Ffyf5BkVnVB89+g/ZqNyyvXiBe8SmpBrRLOMifnbacyrJcsrH', 'fwlCnuyGKXj1LfzDcR8=AQAB', ' ', ' ', ' ELECTION_EVENT_1', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' Default Message_3_1', ' Mensaje por Defecto_3_1', ' Missatge per Defecte_3_1', ' Message par defaut_3_1', ' ', ' ', ' Default Message', ' Mensaje por Defecto', ' Missatge per Defecte', ' Message par defaut', ' ', ' ', ' ', ' true', ' ', ' ', ' ', ' ', '' ].join('\n'); var publicKeyPem = [ '-----BEGIN CERTIFICATE-----', 'MIICcTCCAVmgAwIBAgIBATANBgkqhkiG9w0BAQQFADA+MQswCQYDVQQGEwJFUzEbMBkGA1UEChMS', 'U2N5dGwgVU5JVCBURVNUIENBMRIwEAYDVQQLEwlVTklUIFRFU1QwHhcNMDYwMzAyMTEwOTEyWhcN', 'MzAwNDA2MTEwOTEyWjA+MQswCQYDVQQGEwJFUzEbMBkGA1UEChMSU2N5dGwgVU5JVCBURVNUIENB', 'MRIwEAYDVQQLEwlVTklUIFRFU1QwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBALfqpJyXfyna', 'NPX70K0U4aof9xMg0I/M09WU+7l5or54uFWsrH+sx7/qDkSLwLfZ7WRNmQon/b+gglvoZkRZHYEa', 'FaZg9kxK48pM6MMehX8n+QZFZ1QfPfoP2ajcsr14gXvEpqQa0SzjIn522nMqyXLKx38JQp7shil4', '9S38w3EfAgMBAAEwDQYJKoZIhvcNAQEEBQADggEBAJrtSsuqdB3RvGZMriETpO0pqQsBhZ+JRYqs', '5dFIiC+bdJE+dUB6v8fpv1exSQ0+i+e1oTs2I9Wd4eIQ4rlZCG9K6EYBKP9Z59OBDTf6luaisoul', '6gnKW7+kUfQQkBfJJw/4RA7FbaAmYNGEEfXTwDMU+ZoqIO/PV+JsfOtFUdPcwv1hPQHTE+KR1DtR', 'AC+A4Ak+fOoaRnyTprvbT4inaPdn6D9fBrIpO6hQSAtM5K9+/VaskMSFqw03DkADRyxHacdz9JLp', '5ChDbRrXCDdT/a832acPDViS3nG/GhuSTK8mlrXeHjpG6vaSbKiXNXwrwz80k/XoNh3k5jlfrzUM', 'CQ4=', '-----END CERTIFICATE-----' ].join('\n'); var signatureParentNode = 'EML/Seal/Signature'; // get the public key var abCert = box.forge.pki.certificateFromPem(publicKeyPem, true); var publicKey = abCert.publicKey; // test it var verified = box.asymmetric.service.verifyXmlSignature( publicKey, inStream, signatureParentNode); expect(verified).toBeTruthy(); }); }); it('verifies a second signed xml', function() { cryptolib( 'asymmetric.service', 'commons.utils', function(box) { var inStream = [ '', '', ' ', ' 330', ' 1', ' 1', ' Set20131125', ' ', ' ', ' 2013-11-25', ' ', ' BbEhPY/Q2JegRUtLYUR/9I0ColZlnKVG4kZ9U2fjh6k=vXdMpLJB1ECStXim5aO0bpOq/Em6OA/zH/uAPI4nWTUjoRPeMHO/YkeJl4jfL/ImQtisTVG6mBpa', 'LejeM6PKBv9G5zTnymZn+1mn2iRpKkW5MB+cbifPfh6ut7RHWfA4N3ZAxYz+Zh5WEMDZLPapuLTM', 'qbczC9THziQRgdvEcn0=', ' ', ' ', ' MILITARY_NOTOVERSEAS', ' ', ' ', ' Sebastian', ' ', ' ', ' ', ' ', ' 2013-12-24', ' 2013-12-24', ' ', ' ', ' add', ' ', ' ', ' ', ' ', ' ', ' ', ' Steven', ' ', ' Perez', ' ', ' ', ' ', ' ', ' ', ' 1434 N 34th St ', ' Fort Smith, AR', ' 72904', ' 123 man line 1 address ', ' somewheretown, OR ', ' 11236-5456', ' ballotsafe-test+ARvoter11@scytl.com', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' 1983-03-16', ' en-US', ' Republican', ' ', ' 1-A.01', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' Sebastian', ' ', ' ', ' ', ' 1-A.1', ' ', ' ', ' ', ' ', ' add', ' ', ' ', ' ', ' ', ' ', ' ', ' Mingkhone', ' ', ' Ratsamy', ' ', ' ', ' ', ' ', ' ', ' 1443 N 44th St ', ' Fort Smith, AR', ' 72904', ' Line 1 address length in all address fields for ', ' somewheretown, CA ', ' 11123-4567', ' ballotsafe-test+ARvoter12@scytl.com', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' 1987-03-23', ' en-US', ' Democratic', ' ', ' 1-A.01', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' Sebastian', ' ', ' ', ' ', ' 1-A.1', ' ', ' ', ' ', ' ', ' add', ' ', ' ', ' ', ' ', ' ', ' ', ' James', ' Maxwell', ' Smith', ' Sr ', ' ', ' ', ' ', ' ', ' 1534 N 49th St ', ' Fort Smith, AR', ' 72904', ' ', 'test address length in all address fields for scyt ', ' somewheretownusa, mt ', ' 21453-3335', ' ballotsafe-test+ARvoter13@scytl.com', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' 1956-02-29', ' en-US', ' Optional', ' ', ' 1-A.01', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' Sebastian', ' ', ' ', ' ', ' 1-A.1', ' ', ' ', ' ', ' ', ' add', ' ', ' ', ' ', ' ', ' ', ' ', ' Jordan', ' Elizabeth', ' Stephenson', ' ', ' ', ' ', ' ', ' ', ' 700 N Albert Pike, Apt 1204 ', ' Fort Smith, AR', ' 72903', ' test address length in all address fields for scyt Line 2 address length in all address fields for Line 3 address length in all address fields for Line 4 address length in all address fields for ', ' somewheretown, cn ', ' 11123-4555', ' ballotsafe-test+ARvoter14@scytl.com', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' 1992-08-31', ' en-US', ' Optional', ' ', ' 1-A.01', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' Sebastian', ' ', ' ', ' ', ' 1-A.1', ' ', ' ', ' ', ' ', ' add', ' ', ' ', ' ', ' ', ' ', ' ', ' Donna', ' S', ' Van Evera', ' ', ' ', ' ', ' ', ' ', ' 4420 Kinkead ', ' Fort Smith, AR', ' 72903', ' test address length in all address fields for scyt Line 3 address length in all address fields for sc ', ' anywheretown, vt ', ' 12546-3333', ' ballotsafe-test+ARvoter15@scytl.com', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' 1952-12-21', ' en-US', ' Optional', ' ', ' 1-A.01', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' Sebastian', ' ', ' ', ' ', ' 1-A.1', ' ', ' ', ' ', ' ', '' ].join('\n'); var publicKeyPem = [ '-----BEGIN CERTIFICATE-----', 'MIICfjCCAeegAwIBAgIJAJQ9YClOoquEMA0GCSqGSIb3DQEBBQUAMFgxCzAJBgNV', 'BAYTAlVTMQwwCgYDVQQIDANXQVMxDDAKBgNVBAcMA1dBUzEMMAoGA1UECgwDU09F', 'MQ8wDQYDVQQLDAZTT0VfUUExDjAMBgNVBAMMBVRlc3QyMB4XDTE0MTExMjE0MDA0', 'MVoXDTE1MTExMjE0MDA0MVowWDELMAkGA1UEBhMCVVMxDDAKBgNVBAgMA1dBUzEM', 'MAoGA1UEBwwDV0FTMQwwCgYDVQQKDANTT0UxDzANBgNVBAsMBlNPRV9RQTEOMAwG', 'A1UEAwwFVGVzdDIwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAL/9d+ZKlFSn', 'j7hJTGTOStQv+4TCc4cdKjGeCTOqj8J6ShxBfB03x/PVZgv4bWdZjjz7TT+adLq9', 'FhTn064mZJW6PL+6Dv1EENMDp/RavvFbQG0Egkqg6Gxo7ttp2dGzt2AXN9veH2UB', 'alkIFG85dTQ6nb+W3nyJCs1k80eSGFfPAgMBAAGjUDBOMB0GA1UdDgQWBBQBXb/9', 'TEOHKOqgrIG3wXsspccXMjAfBgNVHSMEGDAWgBQBXb/9TEOHKOqgrIG3wXsspccX', 'MjAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBBQUAA4GBAJiUTSthh3SAJIDxhCoe', '20xFwdjXEEU8MMODEh3ibHzFcf9JXqkTAhZ8ExtFsMzpDEi7YBNB+FkBpFEtkzRA', 'BLK7JmLkje7lg3aXz6PRRd/LegrRmT1klFUHmqKEBJt5185UE2B8mDXWJEdptLsR', '8AEw5IwDqHQWPA6gk8XyQ5s6', '-----END CERTIFICATE-----' ].join('\n'); var signatureParentNode = 'EML/EMLHeader/Signature'; // get the public key var abCert = box.forge.pki.certificateFromPem(publicKeyPem, true); var publicKey = abCert.publicKey; // test it var verified = box.asymmetric.service.verifyXmlSignature( publicKey, inStream, signatureParentNode); expect(verified).toBeTruthy(); }); }); it('verifies a third signed xml', function() { /*jshint smarttabs:true */ cryptolib('asymmetric.service', 'commons.utils', function(box) { var inStream = [ '', '', ' ', ' ', ' NSW State General Election 2015', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' Albury', ' ', ' ', ' Auburn', ' ', ' ', ' Ballina', ' ', ' ', ' Balmain', ' ', ' ', ' Bankstown', ' ', ' ', ' Barwon', ' ', ' ', ' Bathurst', ' ', ' ', ' Baulkham Hills', ' ', ' ', ' Bega', ' ', ' ', ' Blacktown', ' ', ' ', ' Blue Mountains', ' ', ' ', ' Burrinjuck', ' ', ' ', ' Cabramatta', ' ', ' ', ' Camden', ' ', ' ', ' Campbelltown', ' ', ' ', ' Canterbury', ' ', ' ', ' Castle Hill', ' ', ' ', ' Cessnock', ' ', ' ', ' Charlestown', ' ', ' ', ' Clarence', ' ', ' ', ' Coffs Harbour', ' ', ' ', ' Coogee', ' ', ' ', ' Cronulla', ' ', ' ', ' Davidson', ' ', ' ', ' Drummoyne', ' ', ' ', ' Dubbo', ' ', ' ', ' East Hills', ' ', ' ', ' Epping', ' ', ' ', ' Fairfield', ' ', ' ', ' Gosford', ' ', ' ', ' Goulburn', ' ', ' ', ' Granville', ' ', ' ', ' Hawkesbury', ' ', ' ', ' Heathcote', ' ', ' ', ' Heffron', ' ', ' ', ' Hornsby', ' ', ' ', ' Keira', ' ', ' ', ' Kiama', ' ', ' ', ' Kogarah', ' ', ' ', ' Ku-ring-gai', ' ', ' ', ' Lake Macquarie', ' ', ' ', ' Lakemba', ' ', ' ', ' Lane Cove', ' ', ' ', ' Lismore', ' ', ' ', ' Liverpool', ' ', ' ', ' Londonderry', ' ', ' ', ' Macquarie Fields', ' ', ' ', ' Maitland', ' ', ' ', ' Manly', ' ', ' ', ' Maroubra', ' ', ' ', ' Marrickville', ' ', ' ', ' Menai', ' ', ' ', ' Miranda', ' ', ' ', ' Monaro', ' ', ' ', ' Mount Druitt', ' ', ' ', ' Mulgoa', ' ', ' ', ' Murray-Darling', ' ', ' ', ' Murrumbidgee', ' ', ' ', ' Myall Lakes', ' ', ' ', ' Newcastle', ' ', ' ', ' North Shore', ' ', ' ', ' Northern Tablelands', ' ', ' ', ' Oatley', ' ', ' ', ' Orange', ' ', ' ', ' Oxley', ' ', ' ', ' Parramatta', ' ', ' ', ' Penrith', ' ', ' ', ' Pittwater', ' ', ' ', ' Port Macquarie', ' ', ' ', ' Port Stephens', ' ', ' ', ' Riverstone', ' ', ' ', ' Rockdale', ' ', ' ', ' Ryde', ' ', ' ', ' Shellharbour', ' ', ' ', ' Smithfield', ' ', ' ', ' South Coast', ' ', ' ', ' Strathfield', ' ', ' ', ' Swansea', ' ', ' ', ' Sydney', ' ', ' ', ' Tamworth', ' ', ' ', ' Terrigal', ' ', ' ', ' The Entrance', ' ', ' ', ' Toongabbie', ' ', ' ', ' Tweed', ' ', ' ', ' Upper Hunter', ' ', ' ', ' Vaucluse', ' ', ' ', ' Wagga Wagga', ' ', ' ', ' Wakehurst', ' ', ' ', ' Wallsend', ' ', ' ', ' Willoughby', ' ', ' ', ' Wollondilly', ' ', ' ', ' Wollongong', ' ', ' ', ' Wyong', ' ', ' ', ' KRK0/Hnx6VMJdEycg9JSKM5RbCL/iXbvrXKdfjoAXpU=ah0dEIsFANQFtXXNghqQ39ll6l6Nh4tE16/Tm0BnEaWd/GhdtzrGBszed+ugnpcqFYje4rm2fW8a', 'BihAsFz7A748B27fu8yBQbqG6qiSGkiH+51aRJtLl7MxYEB1w614Lq4t1zzVjWLu/9BaS2Op3dSg', 'wcw1xDVBaJg5k9gGiQ0qDbMcQfMFmycwShWpu45O62ezUsEn8Jw54qap5Tfg+7vklSSqh7OURnrb', '84+3GOjwy4ML3kLRbNI8iksjoQUSa8j5zYOsTdWIewnjgb5jn/YgIUZPcZFnca5SE+i1IkmzZxD5', 'ztCMeqxKpFcQpIVHGL81fpwxL5cterxDq8uzwA==', '' ].join('\n'); var publicKeyPem = [ '-----BEGIN PUBLIC KEY-----', 'MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2yUCdVp5rCWUae2wpR3f', 'r6TNFj/sz7to9ATk++gQ69iEHLTqHz38JLT4So74peGXX1VzVNGLOi1o5kTGmoDN', 'erj0bO8h2FTyXTn73R0C8oyNGfI+WcloO8uHLn5GktMxweYtVfAgvkm0k9P44K2K', 'WMQq1jkdvNu2ItZN4DXdADfeEstB3d/XtRZ6Q2xaQCgGytSGeejnToNMEzid7vr2', 'zctWfcLYJ9ljon33pzJbkfu14I4/amLd8bVNxAZ55JyDRUghjll0xz41AyGpXApu', 'MeChOJkKYl4UfYH330syGHcqETEGh9akJJg+kUXeDVwn4qS08EnG4qOhEDs1Od8K', 'qQIDAQAB', '-----END PUBLIC KEY-----' ].join('\n'); var signatureParentNode = 'xml/ElectionEvent/Signature'; // get the public key var publicKey = forge.pki.publicKeyFromPem(publicKeyPem); // test it var verified = box.asymmetric.service.verifyXmlSignature( publicKey, inStream, signatureParentNode); expect(verified).toBeTruthy(); }); }); it('verifies a xml using public key', function() { cryptolib('asymmetric.service', 'commons.utils', function(box) { var inStream = [ '', '', ' 5.04100001228337', ' 78', ' 94', ' Summer-Hill', ' ', ' Returning Office for Summer Hill', ' ', ' ', ' Summer Hill Returning Office', ' Ground Floor Suite 1', ' 109 Jessie Street', ' Summer Hill', ' NSW', ' 2378', ' Australia', ' ', ' ', ' ', ' Returning Officer for Summer Hill', ' ', ' ', ' Peter', ' Dooley', ' ', ' ', ' ', ' ', ' ', ' Summer Hill Returning Officer Office', ' PO Box 629', ' Summer Hill', ' NSW', ' 2378', ' Australia', ' ', ' ', ' RO.Summer_Hill@elections.nsw.gov.au', ' ', ' 0267727755', ' ', ' ', ' 1300135736', ' ', ' ', ' ', ' ', ' 2014-11-17', ' ', ' ', ' Summer Hill', ' NSW State General Election 2014', ' ', ' ', ' ', ' ', ' Legislative Assembly Election', ' Parliamentary', ' ', ' ', ' Ballot Paper', ' ', ' ', ' ', ' Summer Hill', ' ', ' ', ' DIRECTIONS FOR VOTING PLEASE READ CAREFULLY', ' Write the number 1 in the square next to the candidate of your choice. You can show more choices, if you want to, by writing numbers in the other squares, starting with the number 2.', ' Fold this ballot paper so your vote cannot be seen and place it in the ballot box (or in the envelope provided).', ' ', ' OPV', ' 7', '', ' 1', ' ', 'REN GeorgeGeorgeRENINDEPENDENTParty', 'TOMLINSON RichardRichardTOMLINSONDEMOCRATIC PARTYParty', 'WILLIAMS MarkMarkWILLIAMSTHE KHAKI PARTYParty', 'ADCOCK BenBenADCOCKCONSERVATIVESParty', 'YONG MikeMikeYONGAUSTRALIANS FOR ADVANCEMENTParty', 'WITHERS JohnJohnWITHERSTHE RELIGIOUS PARTYParty', 'CALLAGHAN PaulPaulCALLAGHANWORKING PARTYParty', ' ', ' Election of Member of Parliamant', ' 1', ' ', ' 2014-11-17T16:28:01', ' ', ' ', ' ', ' ', ' ', ' ', 'mhCdaEEiuFgKJd0sBooryGBx2b9xwsF1rlX3MSDu83c=Gu87GxyWKAu9D3fhQkjy3EcgaycGylVEmTOqW6HRXvTy+XbduWaazTfnnTjR/C7wig8+kbckXEkz', 'B81FBCmUJibugK6eRWkcrJPmrds5LwCQXL+4zmwmISA1pKyuGhLoGlcdupKCdT98pLmD7cauje8P', 'bOstRTTz5mgBqbQN9O91RMzjdov6mq53l3m4BVG4lFmxoG5L/PQ989G7vMM/K3yPQ1fCVWqguzBN', 'Dve+OtbiIOSF2kGmXtQ+qAUCdXNmYt+JamoU6BIsHgIiyRk9C0NKs5S2lvewJonJtf+9lLkU2OLU', 'FN5hFpgtWNCglHJsg0rtIFJN4fLJwK6RNpi29A==' ].join('\n'); var publicKeyPem = [ '-----BEGIN PUBLIC KEY-----', 'MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAj8ZhcZnHuNfFc+C7KpSR', 'oaDmUf1XbT8haRQADcQF/04r5hbAsF6Kf+Nj+ulRNK6RGxeLhtlYTyqTCdJeZUQj', '5lHuIAK99D2rknytEZ7tAM4u36SGlICdAanz7DxGMUFGa+xUCFmTaSfX1BJGn3Qi', '/vB/LMdPjrOd/7UISHH93D2fB5iX2qGxw4D3iVWUOXJunx48nduC3AFqCLDmlX6F', 'ongfsOBImQwgcpM3nEtYr3JWAC7D66Y6ocBXQ/OATwCbJ5jGRY6RjldMjc207iOw', 'HxTpZeIPHM9UyGeqd3QbKPHQquzBF8ytgssfFwGLIxhRQFwGy9kpy6l8HIHHRf7l', 'BQIDAQAB', '-----END PUBLIC KEY-----' ].join('\n'); var publicKey = forge.pki.publicKeyFromPem(publicKeyPem); var signatureParentNode = 'EML/Signature'; // test it var verified = box.asymmetric.service.verifyXmlSignature( publicKey, inStream, signatureParentNode); expect(verified).toBeTruthy(); }); }); it('verifies the same xml as previous test, but signed with a different private key', function() { cryptolib('asymmetric.service', 'commons.utils', function(box) { var inStream = [ '', '', ' 5.04100001228337', ' 78', ' 94', ' Summer-Hill', ' ', ' Returning Office for Summer Hill', ' ', ' ', ' Summer Hill Returning Office', ' Ground Floor Suite 1', ' 109 Jessie Street', ' Summer Hill', ' NSW', ' 2378', ' Australia', ' ', ' ', ' ', ' Returning Officer for Summer Hill', ' ', ' ', ' Peter', ' Dooley', ' ', ' ', ' ', ' ', ' ', ' Summer Hill Returning Officer Office', ' PO Box 629', ' Summer Hill', ' NSW', ' 2378', ' Australia', ' ', ' ', ' RO.Summer_Hill@elections.nsw.gov.au', ' ', ' 0267727755', ' ', ' ', ' 1300135736', ' ', ' ', ' ', ' ', ' 2014-11-17', ' ', ' ', ' Summer Hill', ' NSW State General Election 2014', ' ', ' ', ' ', ' ', ' Legislative Assembly Election', ' Parliamentary', ' ', ' ', ' Ballot Paper', ' ', ' ', ' ', ' Summer Hill', ' ', ' ', ' DIRECTIONS FOR VOTING PLEASE READ CAREFULLY', ' Write the number 1 in the square next to the candidate of your choice. You can show more choices, if you want to, by writing numbers in the other squares, starting with the number 2.', ' Fold this ballot paper so your vote cannot be seen and place it in the ballot box (or in the envelope provided).', ' ', ' OPV', ' 7', '', ' 1', ' ', 'REN GeorgeGeorgeRENINDEPENDENTParty', 'TOMLINSON RichardRichardTOMLINSONDEMOCRATIC PARTYParty', 'WILLIAMS MarkMarkWILLIAMSTHE KHAKI PARTYParty', 'ADCOCK BenBenADCOCKCONSERVATIVESParty', 'YONG MikeMikeYONGAUSTRALIANS FOR ADVANCEMENTParty', 'WITHERS JohnJohnWITHERSTHE RELIGIOUS PARTYParty', 'CALLAGHAN PaulPaulCALLAGHANWORKING PARTYParty', ' ', ' Election of Member of Parliamant', ' 1', ' ', ' 2014-11-17T16:28:01', ' ', ' ', ' ', ' ', ' ', ' ', 'mhCdaEEiuFgKJd0sBooryGBx2b9xwsF1rlX3MSDu83c=AKJSep65koofOLMS3qjTc1m7qdFxj9atHmMbCdjiMDhUp26kxRjuP7XEETs6njU/Hg9IdYNUAxJi', '0lwsK7cA0tI8MjS6JbRBXaewSTLOrZQAfqQiGJA/99qSJqPFus66XQTplzzLdzSVn7y2O4bwqU4m', 'knuxU4J5kI9dX+OSLl0=' ].join('\n'); var publicKeyPem = [ '-----BEGIN PUBLIC KEY-----', 'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDEv0nlMpUDbILYCdCttYa6xrqN', 'upJeMdNjs7Z9UBLnjYYK520yuCbDGoOoUUA0FImG8rQ66xSOR7HoyZLebFS3tPuu', 'NCnYUIvGiMARRTLbFtE7QeGGdZRDfixtQqEznfEAY4lDb/+JsDV3gGC1pPV1kkWp', 'HW4qwJ35m3mseEM2dQIDAQAB', '-----END PUBLIC KEY-----' ].join('\n'); var publicKey = forge.pki.publicKeyFromPem(publicKeyPem); var signatureParentNode = 'EML/Signature'; // test it var verified = box.asymmetric.service.verifyXmlSignature( publicKey, inStream, signatureParentNode); expect(verified).toBeTruthy(); }); }); }); });