blob: 7d0880e65a1808430ac9de0f9813e5e94a2631eb [file] [log] [blame]
(function() {
function Tests(ASSERT, ASN1, UTIL) {
describe('asn1', function() {
// TODO: add more ASN.1 coverage
it('should convert an OID to DER', function() {
ASSERT.equal(ASN1.oidToDer('1.2.840.113549').toHex(), '2a864886f70d');
});
it('should convert an OID from DER', function() {
var der = UTIL.hexToBytes('2a864886f70d');
ASSERT.equal(ASN1.derToOid(der), '1.2.840.113549');
});
it('should convert INTEGER 0 to DER', function() {
ASSERT.equal(ASN1.integerToDer(0).toHex(), '00');
});
it('should convert INTEGER 1 to DER', function() {
ASSERT.equal(ASN1.integerToDer(1).toHex(), '01');
});
it('should convert INTEGER 127 to DER', function() {
ASSERT.equal(ASN1.integerToDer(127).toHex(), '7f');
});
it('should convert INTEGER 128 to DER', function() {
ASSERT.equal(ASN1.integerToDer(128).toHex(), '0080');
});
it('should convert INTEGER 256 to DER', function() {
ASSERT.equal(ASN1.integerToDer(256).toHex(), '0100');
});
it('should convert INTEGER -128 to DER', function() {
ASSERT.equal(ASN1.integerToDer(-128).toHex(), '80');
});
it('should convert INTEGER -129 to DER', function() {
ASSERT.equal(ASN1.integerToDer(-129).toHex(), 'ff7f');
});
it('should convert INTEGER 32768 to DER', function() {
ASSERT.equal(ASN1.integerToDer(32768).toHex(), '008000');
});
it('should convert INTEGER -32768 to DER', function() {
ASSERT.equal(ASN1.integerToDer(-32768).toHex(), '8000');
});
it('should convert INTEGER -32769 to DER', function() {
ASSERT.equal(ASN1.integerToDer(-32769).toHex(), 'ff7fff');
});
it('should convert INTEGER 8388608 to DER', function() {
ASSERT.equal(ASN1.integerToDer(8388608).toHex(), '00800000');
});
it('should convert INTEGER -8388608 to DER', function() {
ASSERT.equal(ASN1.integerToDer(-8388608).toHex(), '800000');
});
it('should convert INTEGER -8388609 to DER', function() {
ASSERT.equal(ASN1.integerToDer(-8388609).toHex(), 'ff7fffff');
});
it('should convert INTEGER 2147483647 to DER', function() {
ASSERT.equal(ASN1.integerToDer(2147483647).toHex(), '7fffffff');
});
it('should convert INTEGER -2147483648 to DER', function() {
ASSERT.equal(ASN1.integerToDer(-2147483648).toHex(), '80000000');
});
it('should convert INTEGER 0 from DER', function() {
var der = UTIL.hexToBytes('00');
ASSERT.equal(ASN1.derToInteger(der), 0);
});
it('should convert INTEGER 1 from DER', function() {
var der = UTIL.hexToBytes('01');
ASSERT.equal(ASN1.derToInteger(der), 1);
});
it('should convert INTEGER 127 from DER', function() {
var der = UTIL.hexToBytes('7f');
ASSERT.equal(ASN1.derToInteger(der), 127);
});
it('should convert INTEGER 128 from DER', function() {
var der = UTIL.hexToBytes('0080');
ASSERT.equal(ASN1.derToInteger(der), 128);
});
it('should convert INTEGER 256 from DER', function() {
var der = UTIL.hexToBytes('0100');
ASSERT.equal(ASN1.derToInteger(der), 256);
});
it('should convert INTEGER -128 from DER', function() {
var der = UTIL.hexToBytes('80');
ASSERT.equal(ASN1.derToInteger(der), -128);
});
it('should convert INTEGER -129 from DER', function() {
var der = UTIL.hexToBytes('ff7f');
ASSERT.equal(ASN1.derToInteger(der), -129);
});
it('should convert INTEGER 32768 from DER', function() {
var der = UTIL.hexToBytes('008000');
ASSERT.equal(ASN1.derToInteger(der), 32768);
});
it('should convert INTEGER -32768 from DER', function() {
var der = UTIL.hexToBytes('8000');
ASSERT.equal(ASN1.derToInteger(der), -32768);
});
it('should convert INTEGER -32769 from DER', function() {
var der = UTIL.hexToBytes('ff7fff');
ASSERT.equal(ASN1.derToInteger(der), -32769);
});
it('should convert INTEGER 8388608 from DER', function() {
var der = UTIL.hexToBytes('00800000');
ASSERT.equal(ASN1.derToInteger(der), 8388608);
});
it('should convert INTEGER -8388608 from DER', function() {
var der = UTIL.hexToBytes('800000');
ASSERT.equal(ASN1.derToInteger(der), -8388608);
});
it('should convert INTEGER -8388609 from DER', function() {
var der = UTIL.hexToBytes('ff7fffff');
ASSERT.equal(ASN1.derToInteger(der), -8388609);
});
it('should convert INTEGER 2147483647 from DER', function() {
var der = UTIL.hexToBytes('7fffffff');
ASSERT.equal(ASN1.derToInteger(der), 2147483647);
});
it('should convert INTEGER -2147483648 from DER', function() {
var der = UTIL.hexToBytes('80000000');
ASSERT.equal(ASN1.derToInteger(der), -2147483648);
});
(function() {
var tests = [{
in: '20110223123400',
out: 1298464440000
}, {
in: '20110223123400.1',
out: 1298464440100
}, {
in: '20110223123400.123',
out: 1298464440123
}];
for(var i = 0; i < tests.length; ++i) {
var test = tests[i];
it('should convert local generalized time "' + test.in + '" to a Date', function() {
var d = ASN1.generalizedTimeToDate(test.in);
var localOffset = d.getTimezoneOffset() * 60000;
ASSERT.equal(d.getTime(), test.out + localOffset);
});
}
})();
(function() {
var tests = [{
in: '20110223123400Z', // Wed Feb 23 12:34:00.000 UTC 2011
out: 1298464440000
}, {
in: '20110223123400.1Z', // Wed Feb 23 12:34:00.100 UTC 2011
out: 1298464440100
}, {
in: '20110223123400.123Z', // Wed Feb 23 12:34:00.123 UTC 2011
out: 1298464440123
}, {
in: '20110223123400+0200', // Wed Feb 23 10:34:00.000 UTC 2011
out: 1298457240000
}, {
in: '20110223123400.1+0200', // Wed Feb 23 10:34:00.100 UTC 2011
out: 1298457240100
}, {
in: '20110223123400.123+0200', // Wed Feb 23 10:34:00.123 UTC 2011
out: 1298457240123
}, {
in: '20110223123400-0200', // Wed Feb 23 14:34:00.000 UTC 2011
out: 1298471640000
}, {
in: '20110223123400.1-0200', // Wed Feb 23 14:34:00.100 UTC 2011
out: 1298471640100
}, {
in: '20110223123400.123-0200', // Wed Feb 23 14:34:00.123 UTC 2011
out: 1298471640123
}];
for(var i = 0; i < tests.length; ++i) {
var test = tests[i];
it('should convert utc generalized time "' + test.in + '" to a Date', function() {
var d = ASN1.generalizedTimeToDate(test.in);
ASSERT.equal(d.getTime(), test.out);
});
}
})();
(function() {
var tests = [{
in: '1102231234Z', // Wed Feb 23 12:34:00 UTC 2011
out: 1298464440000
}, {
in: '1102231234+0200', // Wed Feb 23 10:34:00 UTC 2011
out: 1298457240000
}, {
in: '1102231234-0200', // Wed Feb 23 14:34:00 UTC 2011
out: 1298471640000
}, {
in: '110223123456Z', // Wed Feb 23 12:34:56 UTC 2011
out: 1298464496000
}, {
in: '110223123456+0200', // Wed Feb 23 10:34:56 UTC 2011
out: 1298457296000
}, {
in: '110223123456-0200', // Wed Feb 23 14:34:56 UTC 2011
out: 1298471696000
}];
for(var i = 0; i < tests.length; ++i) {
var test = tests[i];
it('should convert utc time "' + test.in + '" to a Date', function() {
var d = ASN1.utcTimeToDate(test.in);
ASSERT.equal(d.getTime(), test.out);
});
}
})();
});
}
// check for AMD
if(typeof define === 'function') {
define([
'forge/asn1',
'forge/util'
], function(ASN1, UTIL) {
Tests(
// Global provided by test harness
ASSERT,
ASN1(),
UTIL()
);
});
} else if(typeof module === 'object' && module.exports) {
// assume NodeJS
Tests(
require('assert'),
require('../../js/asn1')(),
require('../../js/util')());
}
})();