/*
* 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();
});
});
});
});