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