diff --git a/asn1.js b/asn1.js index 2a92fda..7fc3697 100644 --- a/asn1.js +++ b/asn1.js @@ -134,8 +134,8 @@ Stream.prototype.parseInteger = function (start, end) { len, s = ''; // skip unuseful bits (not allowed in DER) - while (v == pad && start < end) - v = this.get(++start); + while (v == pad && ++start < end) + v = this.get(start); len = end - start; if (len === 0) return neg ? -1 : 0; diff --git a/test.js b/test.js index 1f87bf5..1221d8e 100755 --- a/test.js +++ b/test.js @@ -32,6 +32,8 @@ tests = [ ['0208FFFFFFFFFFFFFC18', '-1000', 'Negative 1000 (8)'], ['0210FFFFFFFFFFFFFFFFFFFFFFFFFFFFFC18', '-1000', 'Negative 1000 (16)'], ['0203800001', '-8388607', 'Negative 8388607'], + ['02020000', '0', 'Zero (2)'], + ['0204FFFFFFFF', '-1', 'Negative 1 (4)'], ]; tests.forEach(function (t) { -- 2.51.2 From 12b3f8400770599dbc80963151bced26fe70a1ef Mon Sep 17 00:00:00 2001 From: Lapo Luchini Date: Tue, 12 Aug 2014 09:14:31 +0000 Subject: [PATCH 02/10] Use UNIX line-endings to fix shebang usage. --- test.js | 108 ++++++++++++++++++++++++++++---------------------------- 1 file changed, 54 insertions(+), 54 deletions(-) diff --git a/test.js b/test.js index 1221d8e..50edca3 100755 --- a/test.js +++ b/test.js @@ -1,54 +1,54 @@ -#!/usr/bin/env node -/*jshint node: true, strict: true, globalstrict: true, indent: 4, immed: true, undef: true, unused: true */ -'use strict'; - -var Hex = require('./hex.js'), - ASN1 = require('./asn1.js'), - tests; - -tests = [ - // http://luca.ntop.org/Teaching/Appunti/asn1.html - // actually reports the string as "011011100101110111" - ['03 04 06 6e 5d c0', '(18 bit)\n111011101001110110', 'DER encoding'], - ['03 04 06 6e 5d e0', '(18 bit)\n111011101001110110', 'padded with "100000"'], - ['03 81 04 06 6e 5d c0', '(18 bit)\n111011101001110110', 'long form of length octets'], - ['23 09 03 03 00 6e 5d 03 02 06 c0', '(18 bit)\n111011101001110110', 'constructed encoding: "0110111001011101" + "11"'], - // http://msdn.microsoft.com/en-us/library/windows/desktop/aa379076(v=vs.85).aspx - ['30820319308202820201003023310F300D0603550403130654657374434E3110300E060355040A1307546573744F726730819F300D06092A864886F70D010101050003818D00308189028181008FE2412A08E851A88CB3E853E7D54950B3278A2BCBEAB54273EA0257CC6533EE882061A11756C12418E3A808D3BED931F3370B94B8CC43080B7024F79CB18D5DD66D82D0540984F89F970175059C89D4D5C91EC913D72A6B309119D6D442E0C49D7C9271E1B22F5C8DEEF0F1171ED25F315BB19CBC2055BF3A37424575DC90650203010001A08201B4301A060A2B0601040182370D0203310C160A362E302E353336312E323042060A2B0601040182370D0201313430321E260043006500720074006900660069006300610074006500540065006D0070006C0061007400651E080055007300650072305706092B0601040182371514314A30480201090C237669636833642E6A646F6D6373632E6E74746573742E6D6963726F736F66742E636F6D0C154A444F4D4353435C61646D696E6973747261746F720C07636572747265713074060A2B0601040182370D0202316630640201011E5C004D006900630072006F0073006F0066007400200045006E00680061006E006300650064002000430072007900700074006F0067007200610070006800690063002000500072006F00760069006400650072002000760031002E003003010030818206092A864886F70D01090E31753073301706092B0601040182371402040A1E08005500730065007230290603551D2504223020060A2B0601040182370A030406082B0601050507030406082B06010505070302300E0603551D0F0101FF0404030205A0301D0603551D0E041604143C0F73DAF8EF41D83AEABE922A5D2C966A7B9454300D06092A864886F70D01010505000381810047EB995ADF9E700DFBA73132C15F5C24C2E0BFC624AF15660EB86A2EAB2BC4971FE3CBDC63A525ECC7B428616636A1311BBFDDD0FCBF1794901DE55EC7115EC9559FEBA33E14C799A6CBBAA1460F39D444C4C84B760E205D6DA9349ED4D58742EB2426511490B40F065E5288327A9520A0FDF7E57D60DD72689BF57B058F6D1E', - '(3 elem)', 'PKCS#10 request'], - // Int10 - ['060C69C7C79AB78084C289F9870D', '2.25.84478768945400492475277', 'Big OID arc'], - ['02102FA176B36EE9F049F444B40099661945', '(126 bit)\n63312083136615639753586560173617846597', 'Big integer (126 bit)'], - ['028181008953097086EE6147C5F4D5FFAF1B498A3D11EC5518E964DC52126B2614F743883F64CA51377ABB530DFD20464A48BD67CD27E7B29AEC685C5D10825E605C056E4AB8EEA460FA27E55AA62C498B02D7247A249838A12ECDF37C6011CF4F0EDEA9CEE687C1CB4A51C6AE62B2EFDB000723A01C99D6C23F834880BA8B42D5414E6F', - '(1024 bit)\n96432446964907009840023644401994013457468837455140331578268642517697945390319089463541388080569398374873228752921897678940332050406994011437231634303608704223145390228074087922901239478374991949372306413157758278029522534299413919735715864599284769202556071242381348472464716517735026291259010477833523908207', - 'Big integer (1024 bit)'], - ['02820201009BA9ABBF614A97AF2F97669A745FD0D996FDCFE2E466EF1F1F4733C244A3DF9ADE1FB554DD157C6935116FBBC80C8E6A181ED88FD916BC1048365CF063B3905A5C2437D7A3D6CB0971B9F1017284B07DDB4D80CDFCD36FC9F8DAB60E82D24585A81B68A83DE8F4446CBDA1C2CB03BE8C3E130084DF4A48C0E3220AE8E937A7184CB1090D23567F044DD9178418A5C8DA409473EBCE0E573C03813A9D0AA1574369AC576D799078E5B5B43BD8BC4C8D28A1A7A3A7BA024E25D12AAEEDAE0322B86B200F302854957FE0EECE0A669DD1402D6E22AF9D1AC10519D26FC0F29FF87BB30242FB50A91D2D930F23ABC6C10F92FFD0A215F55309711CFF451384E6265EF8E0881C0AFC16B6A87306B8F0638402A0C65AECE774DF70AEA38325EAD6C7978793A7C68A8A33976037103E973E6E2915D6A10FD1882C129F6FAAA4C642EB41A2E39543D301856D8EBB3BF32336C7FE3BE0A1250748ABC98974FF088F80BFC09665F3EEEC4B68BD9D88C331B340F1E8CFF638BB9CE4D17FD4E5589B7CFAD4F30E9B7591E4BA522E197ED1F5CD5A19FCBA06F6FB52A84B9904DDF8F9B48B50A34E6289F08724FA8342C187FAD52D292A5A717A646AD72760630DDBCE49F58D1F90893217F87343B8D25A938661D6E1750AEA796676884F71EB0425D60A5A7A93E5B94B17400FB1B6B9F5DE4FDCE0B3AC3B117060844A436E9920C029710AC065', - '(4096 bit)\n635048724432704421127930570668665246853305382538324205739741643121831497295424070220821366244137115920753022123888627038218427491681054376713237422498116573180444839575827154645186734602336866679804832661256616738257119870932328599495025506292424741581222812593482590762754785441060866630543522468678295806775919446210955958208696766307578451905771148370694894591388931494246786732600822191966681852303750991082312180670980233382216493445574638820565887523903118457551295241540793541306271618874366356869335229283992012581380459991160410157116077111142487644315609688092841697874946124416376553323373756926990721842430477982958383467149331238064901788481621489266725616974850293388387825359434286033332681714766010619113405542747712973535303497912234899589502990216128180823653963322406352206636893824027962569732222882297210841939793442415179615290739900774082858983244011679281115202763730964934473392333219986431517733237277686866318351054204026883453068392486990840498271719737813876367239342153571643327128417739316281558041652406500713712661305061745568036561978158652008943224271511931676512028205883718704503533046383542018858616087454820845906934069146870330990447993387221061968484774662499598623702280426558025111180066917', - 'Big integer (4096 bit)'], - ['0202007F', '127', 'Padded 127'], - ['0202FF7F', '-129', 'Negative 129'], - ['0202FC18', '-1000', 'Negative 1000 (2)'], - ['0204FFFFFC18', '-1000', 'Negative 1000 (4)'], - ['0208FFFFFFFFFFFFFC18', '-1000', 'Negative 1000 (8)'], - ['0210FFFFFFFFFFFFFFFFFFFFFFFFFFFFFC18', '-1000', 'Negative 1000 (16)'], - ['0203800001', '-8388607', 'Negative 8388607'], - ['02020000', '0', 'Zero (2)'], - ['0204FFFFFFFF', '-1', 'Negative 1 (4)'], -]; - -tests.forEach(function (t) { - var input = t[0], - expected = t[1], - comment = t[2], - result = null; - try { - result = ASN1.decode(Hex.decode(input)).content(); - //TODO: check structure, not only first level content - } catch (e) { - result = 'Exception:\n' + e; - } - if (result == expected) - console.log('\x1B[1m\x1B[32mOK \x1B[39m\x1B[22m ' + comment); - else - console.log('\x1B[1m\x1B[31mERR\x1B[39m\x1B[22m ' + comment + '\n' + result); -}); +#!/usr/bin/env node +/*jshint node: true, strict: true, globalstrict: true, indent: 4, immed: true, undef: true, unused: true */ +'use strict'; + +var Hex = require('./hex.js'), + ASN1 = require('./asn1.js'), + tests; + +tests = [ + // http://luca.ntop.org/Teaching/Appunti/asn1.html + // actually reports the string as "011011100101110111" + ['03 04 06 6e 5d c0', '(18 bit)\n111011101001110110', 'DER encoding'], + ['03 04 06 6e 5d e0', '(18 bit)\n111011101001110110', 'padded with "100000"'], + ['03 81 04 06 6e 5d c0', '(18 bit)\n111011101001110110', 'long form of length octets'], + ['23 09 03 03 00 6e 5d 03 02 06 c0', '(18 bit)\n111011101001110110', 'constructed encoding: "0110111001011101" + "11"'], + // http://msdn.microsoft.com/en-us/library/windows/desktop/aa379076(v=vs.85).aspx + ['30820319308202820201003023310F300D0603550403130654657374434E3110300E060355040A1307546573744F726730819F300D06092A864886F70D010101050003818D00308189028181008FE2412A08E851A88CB3E853E7D54950B3278A2BCBEAB54273EA0257CC6533EE882061A11756C12418E3A808D3BED931F3370B94B8CC43080B7024F79CB18D5DD66D82D0540984F89F970175059C89D4D5C91EC913D72A6B309119D6D442E0C49D7C9271E1B22F5C8DEEF0F1171ED25F315BB19CBC2055BF3A37424575DC90650203010001A08201B4301A060A2B0601040182370D0203310C160A362E302E353336312E323042060A2B0601040182370D0201313430321E260043006500720074006900660069006300610074006500540065006D0070006C0061007400651E080055007300650072305706092B0601040182371514314A30480201090C237669636833642E6A646F6D6373632E6E74746573742E6D6963726F736F66742E636F6D0C154A444F4D4353435C61646D696E6973747261746F720C07636572747265713074060A2B0601040182370D0202316630640201011E5C004D006900630072006F0073006F0066007400200045006E00680061006E006300650064002000430072007900700074006F0067007200610070006800690063002000500072006F00760069006400650072002000760031002E003003010030818206092A864886F70D01090E31753073301706092B0601040182371402040A1E08005500730065007230290603551D2504223020060A2B0601040182370A030406082B0601050507030406082B06010505070302300E0603551D0F0101FF0404030205A0301D0603551D0E041604143C0F73DAF8EF41D83AEABE922A5D2C966A7B9454300D06092A864886F70D01010505000381810047EB995ADF9E700DFBA73132C15F5C24C2E0BFC624AF15660EB86A2EAB2BC4971FE3CBDC63A525ECC7B428616636A1311BBFDDD0FCBF1794901DE55EC7115EC9559FEBA33E14C799A6CBBAA1460F39D444C4C84B760E205D6DA9349ED4D58742EB2426511490B40F065E5288327A9520A0FDF7E57D60DD72689BF57B058F6D1E', + '(3 elem)', 'PKCS#10 request'], + // Int10 + ['060C69C7C79AB78084C289F9870D', '2.25.84478768945400492475277', 'Big OID arc'], + ['02102FA176B36EE9F049F444B40099661945', '(126 bit)\n63312083136615639753586560173617846597', 'Big integer (126 bit)'], + ['028181008953097086EE6147C5F4D5FFAF1B498A3D11EC5518E964DC52126B2614F743883F64CA51377ABB530DFD20464A48BD67CD27E7B29AEC685C5D10825E605C056E4AB8EEA460FA27E55AA62C498B02D7247A249838A12ECDF37C6011CF4F0EDEA9CEE687C1CB4A51C6AE62B2EFDB000723A01C99D6C23F834880BA8B42D5414E6F', + '(1024 bit)\n96432446964907009840023644401994013457468837455140331578268642517697945390319089463541388080569398374873228752921897678940332050406994011437231634303608704223145390228074087922901239478374991949372306413157758278029522534299413919735715864599284769202556071242381348472464716517735026291259010477833523908207', + 'Big integer (1024 bit)'], + ['02820201009BA9ABBF614A97AF2F97669A745FD0D996FDCFE2E466EF1F1F4733C244A3DF9ADE1FB554DD157C6935116FBBC80C8E6A181ED88FD916BC1048365CF063B3905A5C2437D7A3D6CB0971B9F1017284B07DDB4D80CDFCD36FC9F8DAB60E82D24585A81B68A83DE8F4446CBDA1C2CB03BE8C3E130084DF4A48C0E3220AE8E937A7184CB1090D23567F044DD9178418A5C8DA409473EBCE0E573C03813A9D0AA1574369AC576D799078E5B5B43BD8BC4C8D28A1A7A3A7BA024E25D12AAEEDAE0322B86B200F302854957FE0EECE0A669DD1402D6E22AF9D1AC10519D26FC0F29FF87BB30242FB50A91D2D930F23ABC6C10F92FFD0A215F55309711CFF451384E6265EF8E0881C0AFC16B6A87306B8F0638402A0C65AECE774DF70AEA38325EAD6C7978793A7C68A8A33976037103E973E6E2915D6A10FD1882C129F6FAAA4C642EB41A2E39543D301856D8EBB3BF32336C7FE3BE0A1250748ABC98974FF088F80BFC09665F3EEEC4B68BD9D88C331B340F1E8CFF638BB9CE4D17FD4E5589B7CFAD4F30E9B7591E4BA522E197ED1F5CD5A19FCBA06F6FB52A84B9904DDF8F9B48B50A34E6289F08724FA8342C187FAD52D292A5A717A646AD72760630DDBCE49F58D1F90893217F87343B8D25A938661D6E1750AEA796676884F71EB0425D60A5A7A93E5B94B17400FB1B6B9F5DE4FDCE0B3AC3B117060844A436E9920C029710AC065', + '(4096 bit)\n635048724432704421127930570668665246853305382538324205739741643121831497295424070220821366244137115920753022123888627038218427491681054376713237422498116573180444839575827154645186734602336866679804832661256616738257119870932328599495025506292424741581222812593482590762754785441060866630543522468678295806775919446210955958208696766307578451905771148370694894591388931494246786732600822191966681852303750991082312180670980233382216493445574638820565887523903118457551295241540793541306271618874366356869335229283992012581380459991160410157116077111142487644315609688092841697874946124416376553323373756926990721842430477982958383467149331238064901788481621489266725616974850293388387825359434286033332681714766010619113405542747712973535303497912234899589502990216128180823653963322406352206636893824027962569732222882297210841939793442415179615290739900774082858983244011679281115202763730964934473392333219986431517733237277686866318351054204026883453068392486990840498271719737813876367239342153571643327128417739316281558041652406500713712661305061745568036561978158652008943224271511931676512028205883718704503533046383542018858616087454820845906934069146870330990447993387221061968484774662499598623702280426558025111180066917', + 'Big integer (4096 bit)'], + ['0202007F', '127', 'Padded 127'], + ['0202FF7F', '-129', 'Negative 129'], + ['0202FC18', '-1000', 'Negative 1000 (2)'], + ['0204FFFFFC18', '-1000', 'Negative 1000 (4)'], + ['0208FFFFFFFFFFFFFC18', '-1000', 'Negative 1000 (8)'], + ['0210FFFFFFFFFFFFFFFFFFFFFFFFFFFFFC18', '-1000', 'Negative 1000 (16)'], + ['0203800001', '-8388607', 'Negative 8388607'], + ['02020000', '0', 'Zero (2)'], + ['0204FFFFFFFF', '-1', 'Negative 1 (4)'], +]; + +tests.forEach(function (t) { + var input = t[0], + expected = t[1], + comment = t[2], + result = null; + try { + result = ASN1.decode(Hex.decode(input)).content(); + //TODO: check structure, not only first level content + } catch (e) { + result = 'Exception:\n' + e; + } + if (result == expected) + console.log('\x1B[1m\x1B[32mOK \x1B[39m\x1B[22m ' + comment); + else + console.log('\x1B[1m\x1B[31mERR\x1B[39m\x1B[22m ' + comment + '\n' + result); +}); -- 2.51.2 From 7d22aaf5430f832bff75507f3b09b598d53de755 Mon Sep 17 00:00:00 2001 From: Lapo Luchini Date: Fri, 5 Sep 2014 07:59:39 +0000 Subject: [PATCH 03/10] Fix ambiguity in `reTime`. Closes #10 on GitHub. --- asn1.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/asn1.js b/asn1.js index 7fc3697..d8fc24f 100644 --- a/asn1.js +++ b/asn1.js @@ -20,7 +20,8 @@ var Int10 = (typeof module !== 'undefined') ? require('./int10.js') : window.Int10, ellipsis = "\u2026", - reTime = /^((?:1[89]|2\d)?\d\d)(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])([01]\d|2[0-3])(?:([0-5]\d)(?:([0-5]\d)(?:[.,](\d{1,3}))?)?)?(Z|[-+](?:[0]\d|1[0-2])([0-5]\d)?)?$/; + reTimeS = /^(\d\d)(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])([01]\d|2[0-3])(?:([0-5]\d)(?:([0-5]\d)(?:[.,](\d{1,3}))?)?)?(Z|[-+](?:[0]\d|1[0-2])([0-5]\d)?)?$/, + reTimeL = /^(\d\d\d\d)(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])([01]\d|2[0-3])(?:([0-5]\d)(?:([0-5]\d)(?:[.,](\d{1,3}))?)?)?(Z|[-+](?:[0]\d|1[0-2])([0-5]\d)?)?$/; function stringCut(str, len) { if (str.length > len) @@ -99,7 +100,7 @@ Stream.prototype.parseStringBMP = function (start, end) { }; Stream.prototype.parseTime = function (start, end, shortYear) { var s = this.parseStringISO(start, end), - m = reTime.exec(s); + m = (shortYear ? reTimeS : reTimeL).exec(s); if (!m) return "Unrecognized time: " + s; if (shortYear) { -- 2.51.2 From 28fea411494668bde2c3bd5c511b27497aa7f8a1 Mon Sep 17 00:00:00 2001 From: Lapo Luchini Date: Wed, 28 Jan 2015 09:55:00 +0000 Subject: [PATCH 04/10] Sync with latest changes from Peter Gutmann's website. --- oids.js | 141 ++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 137 insertions(+), 4 deletions(-) diff --git a/oids.js b/oids.js index 31371de..0a9ce0d 100644 --- a/oids.js +++ b/oids.js @@ -144,6 +144,8 @@ oids = { "0.4.0.127.0.7.1.1": { "d": "bsifieldType", "c": "BSI TR-03111", "w": false }, "0.4.0.127.0.7.1.1.1": { "d": "bsiPrimeField", "c": "BSI TR-03111", "w": false }, "0.4.0.127.0.7.1.1.2": { "d": "bsiCharacteristicTwoField", "c": "BSI TR-03111", "w": false }, +"0.4.0.127.0.7.1.1.2.2": { "d": "bsiECTLVKeyFormat", "c": "BSI TR-03111", "w": false }, +"0.4.0.127.0.7.1.1.2.2.1": { "d": "bsiECTLVPublicKey", "c": "BSI TR-03111", "w": false }, "0.4.0.127.0.7.1.1.2.3": { "d": "bsiCharacteristicTwoBasis", "c": "BSI TR-03111", "w": false }, "0.4.0.127.0.7.1.1.2.3.1": { "d": "bsiGnBasis", "c": "BSI TR-03111", "w": false }, "0.4.0.127.0.7.1.1.2.3.2": { "d": "bsiTpBasis", "c": "BSI TR-03111", "w": false }, @@ -155,6 +157,31 @@ oids = { "0.4.0.127.0.7.1.1.4.1.4": { "d": "bsiEcdsaWithSHA384", "c": "BSI TR-03111", "w": false }, "0.4.0.127.0.7.1.1.4.1.5": { "d": "bsiEcdsaWithSHA512", "c": "BSI TR-03111", "w": false }, "0.4.0.127.0.7.1.1.4.1.6": { "d": "bsiEcdsaWithRIPEMD160", "c": "BSI TR-03111", "w": false }, +"0.4.0.127.0.7.1.1.5.1.1": { "d": "bsiEckaEgX963KDF", "c": "BSI TR-03111", "w": false }, +"0.4.0.127.0.7.1.1.5.1.1.1": { "d": "bsiEckaEgX963KDFWithSHA1", "c": "BSI TR-03111", "w": false }, +"0.4.0.127.0.7.1.1.5.1.1.2": { "d": "bsiEckaEgX963KDFWithSHA224", "c": "BSI TR-03111", "w": false }, +"0.4.0.127.0.7.1.1.5.1.1.3": { "d": "bsiEckaEgX963KDFWithSHA256", "c": "BSI TR-03111", "w": false }, +"0.4.0.127.0.7.1.1.5.1.1.4": { "d": "bsiEckaEgX963KDFWithSHA384", "c": "BSI TR-03111", "w": false }, +"0.4.0.127.0.7.1.1.5.1.1.5": { "d": "bsiEckaEgX963KDFWithSHA512", "c": "BSI TR-03111", "w": false }, +"0.4.0.127.0.7.1.1.5.1.1.6": { "d": "bsiEckaEgX963KDFWithRIPEMD160", "c": "BSI TR-03111", "w": false }, +"0.4.0.127.0.7.1.1.5.1.2": { "d": "bsiEckaEgSessionKDF", "c": "BSI TR-03111", "w": false }, +"0.4.0.127.0.7.1.1.5.1.2.1": { "d": "bsiEckaEgSessionKDFWith3DES", "c": "BSI TR-03111", "w": false }, +"0.4.0.127.0.7.1.1.5.1.2.2": { "d": "bsiEckaEgSessionKDFWithAES128", "c": "BSI TR-03111", "w": false }, +"0.4.0.127.0.7.1.1.5.1.2.3": { "d": "bsiEckaEgSessionKDFWithAES192", "c": "BSI TR-03111", "w": false }, +"0.4.0.127.0.7.1.1.5.1.2.4": { "d": "bsiEckaEgSessionKDFWithAES256", "c": "BSI TR-03111", "w": false }, +"0.4.0.127.0.7.1.1.5.2": { "d": "bsiEckaDH", "c": "BSI TR-03111", "w": false }, +"0.4.0.127.0.7.1.1.5.2.1": { "d": "bsiEckaDHX963KDF", "c": "BSI TR-03111", "w": false }, +"0.4.0.127.0.7.1.1.5.2.1.1": { "d": "bsiEckaDHX963KDFWithSHA1", "c": "BSI TR-03111", "w": false }, +"0.4.0.127.0.7.1.1.5.2.1.2": { "d": "bsiEckaDHX963KDFWithSHA224", "c": "BSI TR-03111", "w": false }, +"0.4.0.127.0.7.1.1.5.2.1.3": { "d": "bsiEckaDHX963KDFWithSHA256", "c": "BSI TR-03111", "w": false }, +"0.4.0.127.0.7.1.1.5.2.1.4": { "d": "bsiEckaDHX963KDFWithSHA384", "c": "BSI TR-03111", "w": false }, +"0.4.0.127.0.7.1.1.5.2.1.5": { "d": "bsiEckaDHX963KDFWithSHA512", "c": "BSI TR-03111", "w": false }, +"0.4.0.127.0.7.1.1.5.2.1.6": { "d": "bsiEckaDHX963KDFWithRIPEMD160", "c": "BSI TR-03111", "w": false }, +"0.4.0.127.0.7.1.1.5.2.2": { "d": "bsiEckaDHSessionKDF", "c": "BSI TR-03111", "w": false }, +"0.4.0.127.0.7.1.1.5.2.2.1": { "d": "bsiEckaDHSessionKDFWith3DES", "c": "BSI TR-03111", "w": false }, +"0.4.0.127.0.7.1.1.5.2.2.2": { "d": "bsiEckaDHSessionKDFWithAES128", "c": "BSI TR-03111", "w": false }, +"0.4.0.127.0.7.1.1.5.2.2.3": { "d": "bsiEckaDHSessionKDFWithAES192", "c": "BSI TR-03111", "w": false }, +"0.4.0.127.0.7.1.1.5.2.2.4": { "d": "bsiEckaDHSessionKDFWithAES256", "c": "BSI TR-03111", "w": false }, "0.4.0.127.0.7.1.2": { "d": "bsiEcKeyType", "c": "BSI TR-03111", "w": false }, "0.4.0.127.0.7.1.2.1": { "d": "bsiEcPublicKey", "c": "BSI TR-03111", "w": false }, "0.4.0.127.0.7.1.5.1": { "d": "bsiKaeg", "c": "BSI TR-03111", "w": false }, @@ -239,7 +266,25 @@ oids = { "0.4.0.127.0.7.3.1.4.1": { "d": "bsiAuxDataBirthday", "c": "BSI TR-03110", "w": false }, "0.4.0.127.0.7.3.1.4.2": { "d": "bsiAuxDataExpireDate", "c": "BSI TR-03110", "w": false }, "0.4.0.127.0.7.3.1.4.3": { "d": "bsiAuxDataCommunityID", "c": "BSI TR-03110", "w": false }, -"0.4.0.127.0.7.3.2.1": { "d": "bsiSecObj", "c": "BSI TR-03110", "w": false }, +"0.4.0.127.0.7.3.1.5": { "d": "bsiDefectList", "c": "BSI TR-03110", "w": false }, +"0.4.0.127.0.7.3.1.5.1": { "d": "bsiDefectAuthDefect", "c": "BSI TR-03110", "w": false }, +"0.4.0.127.0.7.3.1.5.1.1": { "d": "bsiDefectCertRevoked", "c": "BSI TR-03110", "w": false }, +"0.4.0.127.0.7.3.1.5.1.2": { "d": "bsiDefectCertReplaced", "c": "BSI TR-03110", "w": false }, +"0.4.0.127.0.7.3.1.5.1.3": { "d": "bsiDefectChipAuthKeyRevoked", "c": "BSI TR-03110", "w": false }, +"0.4.0.127.0.7.3.1.5.1.4": { "d": "bsiDefectActiveAuthKeyRevoked", "c": "BSI TR-03110", "w": false }, +"0.4.0.127.0.7.3.1.5.2": { "d": "bsiDefectEPassportDefect", "c": "BSI TR-03110", "w": false }, +"0.4.0.127.0.7.3.1.5.2.1": { "d": "bsiDefectEPassportDGMalformed", "c": "BSI TR-03110", "w": false }, +"0.4.0.127.0.7.3.1.5.2.2": { "d": "bsiDefectSODInvalid", "c": "BSI TR-03110", "w": false }, +"0.4.0.127.0.7.3.1.5.3": { "d": "bsiDefectEIDDefect", "c": "BSI TR-03110", "w": false }, +"0.4.0.127.0.7.3.1.5.3.1": { "d": "bsiDefectEIDDGMalformed", "c": "BSI TR-03110", "w": false }, +"0.4.0.127.0.7.3.1.5.3.2": { "d": "bsiDefectEIDIntegrity", "c": "BSI TR-03110", "w": false }, +"0.4.0.127.0.7.3.1.5.4": { "d": "bsiDefectDocumentDefect", "c": "BSI TR-03110", "w": false }, +"0.4.0.127.0.7.3.1.5.4.1": { "d": "bsiDefectCardSecurityMalformed", "c": "BSI TR-03110", "w": false }, +"0.4.0.127.0.7.3.1.5.4.2": { "d": "bsiDefectChipSecurityMalformed", "c": "BSI TR-03110", "w": false }, +"0.4.0.127.0.7.3.1.5.4.3": { "d": "bsiDefectPowerDownReq", "c": "BSI TR-03110", "w": false }, +"0.4.0.127.0.7.3.1.6": { "d": "bsiListContentDescription", "c": "BSI TR-03110", "w": false }, +"0.4.0.127.0.7.3.2.1": { "d": "bsiSecurityObject", "c": "BSI TR-03110", "w": false }, +"0.4.0.127.0.7.3.2.2": { "d": "bsiBlackList", "c": "BSI TR-03110", "w": false }, "0.4.0.1862": { "d": "etsiQcsProfile", "c": "ETSI TS 101 862 qualified certificates", "w": false }, "0.4.0.1862.1": { "d": "etsiQcs", "c": "ETSI TS 101 862 qualified certificates", "w": false }, "0.4.0.1862.1.1": { "d": "etsiQcsCompliance", "c": "ETSI TS 101 862 qualified certificates", "w": false }, @@ -493,6 +538,9 @@ oids = { "1.2.840.10065.2.2": { "d": "?", "c": "ASTM 31.20", "w": false }, "1.2.840.10065.2.3": { "d": "healthcareLicense", "c": "ASTM 31.20", "w": false }, "1.2.840.10065.2.3.1.1": { "d": "license?", "c": "ASTM 31.20 healthcare license type", "w": false }, +"1.2.840.10070.": { "d": "iec62351", "c": "IEC 62351", "w": false }, +"1.2.840.10070.8": { "d": "iec62351_8", "c": "IEC 62351-8", "w": false }, +"1.2.840.10070.8.1": { "d": "iecUserRoles", "c": "IEC 62351-8", "w": false }, "1.2.840.113533.7": { "d": "nsn", "c": "", "w": false }, "1.2.840.113533.7.65": { "d": "nsn-ce", "c": "", "w": false }, "1.2.840.113533.7.65.0": { "d": "entrustVersInfo", "c": "Nortel Secure Networks ce", "w": false }, @@ -794,6 +842,7 @@ oids = { "1.2.840.114021.1.6.1": { "d": "Identrus unknown policyIdentifier", "c": "Identrus", "w": false }, "1.2.840.114021.4.1": { "d": "identrusOCSP", "c": "Identrus", "w": false }, "1.2.840.113556.1.2.241": { "d": "deliveryMechanism", "c": "Microsoft Exchange Server - attribute", "w": false }, +"1.2.840.113556.1.2.281": { "d": "ntSecurityDescriptor", "c": "Microsoft Cert Template - attribute", "w": false }, "1.2.840.113556.1.3.0": { "d": "site-Addressing", "c": "Microsoft Exchange Server - object class", "w": false }, "1.2.840.113556.1.3.13": { "d": "classSchema", "c": "Microsoft Exchange Server - object class", "w": false }, "1.2.840.113556.1.3.14": { "d": "attributeSchema", "c": "Microsoft Exchange Server - object class", "w": false }, @@ -801,7 +850,6 @@ oids = { "1.2.840.113556.1.3.22": { "d": "mailbox", "c": "Microsoft Exchange Server - object class", "w": false }, "1.2.840.113556.1.3.23": { "d": "container", "c": "Microsoft Exchange Server - object class", "w": false }, "1.2.840.113556.1.3.46": { "d": "mailRecipient", "c": "Microsoft Exchange Server - object class", "w": false }, -"1.2.840.113556.1.2.281": { "d": "ntSecurityDescriptor", "c": "Microsoft Cert Template - attribute", "w": false }, "1.2.840.113556.1.4.145": { "d": "revision", "c": "Microsoft Cert Template - attribute", "w": false }, "1.2.840.113556.1.4.1327": { "d": "pKIDefaultKeySpec", "c": "Microsoft Cert Template - attribute", "w": false }, "1.2.840.113556.1.4.1328": { "d": "pKIKeyUsage", "c": "Microsoft Cert Template - attribute", "w": false }, @@ -925,6 +973,12 @@ oids = { "1.3.6.1.4.1.311.2.1.26": { "d": "spcMinimalCriteriaInfo", "c": "Microsoft code signing", "w": false }, "1.3.6.1.4.1.311.2.1.27": { "d": "spcFinancialCriteriaInfo", "c": "Microsoft code signing", "w": false }, "1.3.6.1.4.1.311.2.1.28": { "d": "spcLink (type 3)", "c": "Microsoft code signing. Also known as \"glue extension\"", "w": false }, +"1.3.6.1.4.1.311.2.1.29": { "d": "spcHashInfoObjID", "c": "Microsoft code signing", "w": false }, +"1.3.6.1.4.1.311.2.1.30": { "d": "spcSipInfoObjID", "c": "Microsoft code signing", "w": false }, +"1.3.6.1.4.1.311.2.2": { "d": "ctl", "c": "Microsoft CTL", "w": false }, +"1.3.6.1.4.1.311.2.2.1": { "d": "ctlTrustedCodesigningCAList", "c": "Microsoft CTL", "w": false }, +"1.3.6.1.4.1.311.2.2.2": { "d": "ctlTrustedClientAuthCAList", "c": "Microsoft CTL", "w": false }, +"1.3.6.1.4.1.311.2.2.3": { "d": "ctlTrustedServerAuthCAList", "c": "Microsoft CTL", "w": false }, "1.3.6.1.4.1.311.3.2.1": { "d": "timestampRequest", "c": "Microsoft code signing", "w": false }, "1.3.6.1.4.1.311.10.1": { "d": "certTrustList", "c": "Microsoft contentType", "w": false }, "1.3.6.1.4.1.311.10.1.1": { "d": "sortedCtl", "c": "Microsoft contentType", "w": false }, @@ -962,6 +1016,11 @@ oids = { "1.3.6.1.4.1.311.10.11.28": { "d": "certIssuerSerialNumberMd5HashPropId", "c": "Microsoft", "w": false }, "1.3.6.1.4.1.311.10.11.29": { "d": "certSubjectNameMd5HashPropId", "c": "Microsoft", "w": false }, "1.3.6.1.4.1.311.10.12.1": { "d": "anyApplicationPolicy", "c": "Microsoft attribute", "w": false }, +"1.3.6.1.4.1.311.12": { "d": "catalog", "c": "Microsoft attribute", "w": false }, +"1.3.6.1.4.1.311.12.1.1": { "d": "catalogList", "c": "Microsoft attribute", "w": false }, +"1.3.6.1.4.1.311.12.1.2": { "d": "catalogListMember", "c": "Microsoft attribute", "w": false }, +"1.3.6.1.4.1.311.12.2.1": { "d": "catalogNameValueObjID", "c": "Microsoft attribute", "w": false }, +"1.3.6.1.4.1.311.12.2.2": { "d": "catalogMemberInfoObjID", "c": "Microsoft attribute", "w": false }, "1.3.6.1.4.1.311.13.1": { "d": "renewalCertificate", "c": "Microsoft attribute", "w": false }, "1.3.6.1.4.1.311.13.2.1": { "d": "enrolmentNameValuePair", "c": "Microsoft attribute", "w": false }, "1.3.6.1.4.1.311.13.2.2": { "d": "enrolmentCSP", "c": "Microsoft attribute", "w": false }, @@ -977,10 +1036,10 @@ oids = { "1.3.6.1.4.1.311.20.2.3": { "d": "universalPrincipalName", "c": "Microsoft UPN", "w": false }, "1.3.6.1.4.1.311.20.3": { "d": "certManifold", "c": "Microsoft", "w": false }, "1.3.6.1.4.1.311.21.1": { "d": "cAKeyCertIndexPair", "c": "Microsoft attribute. Also known as certsrvCaVersion", "w": false }, -"1.3.6.1.4.1.311.21.5": { "d": "caExchange", "c": "Microsoft extended key usage", "w": true }, "1.3.6.1.4.1.311.21.2": { "d": "certSrvPreviousCertHash", "c": "Microsoft", "w": false }, "1.3.6.1.4.1.311.21.3": { "d": "crlVirtualBase", "c": "Microsoft", "w": false }, "1.3.6.1.4.1.311.21.4": { "d": "crlNextPublish", "c": "Microsoft", "w": false }, +"1.3.6.1.4.1.311.21.5": { "d": "caExchange", "c": "Microsoft extended key usage", "w": true }, "1.3.6.1.4.1.311.21.6": { "d": "keyRecovery", "c": "Microsoft extended key usage", "w": true }, "1.3.6.1.4.1.311.21.7": { "d": "certificateTemplate", "c": "Microsoft CAPICOM certificate template, V2", "w": false }, "1.3.6.1.4.1.311.21.9": { "d": "rdnDummySigner", "c": "Microsoft", "w": false }, @@ -1005,7 +1064,13 @@ oids = { "1.3.6.1.4.1.311.60.2.1.1": { "d": "jurisdictionOfIncorporationL", "c": "Microsoft (???)", "w": false }, "1.3.6.1.4.1.311.60.2.1.2": { "d": "jurisdictionOfIncorporationSP", "c": "Microsoft (???)", "w": false }, "1.3.6.1.4.1.311.60.2.1.3": { "d": "jurisdictionOfIncorporationC", "c": "Microsoft (???)", "w": false }, -"1.3.6.1.4.1.311.88.2.1": { "d": "originalFilename", "c": "Microsoft attribute", "w": false }, +"1.3.6.1.4.1.311.88": { "d": "capiCom", "c": "Microsoft attribute", "w": false }, +"1.3.6.1.4.1.311.88.1": { "d": "capiComVersion", "c": "Microsoft attribute", "w": false }, +"1.3.6.1.4.1.311.88.2": { "d": "capiComAttribute", "c": "Microsoft attribute", "w": false }, +"1.3.6.1.4.1.311.88.2.1": { "d": "capiComDocumentName", "c": "Microsoft attribute", "w": false }, +"1.3.6.1.4.1.311.88.2.2": { "d": "capiComDocumentDescription", "c": "Microsoft attribute", "w": false }, +"1.3.6.1.4.1.311.88.3": { "d": "capiComEncryptedData", "c": "Microsoft attribute", "w": false }, +"1.3.6.1.4.1.311.88.3.1": { "d": "capiComEncryptedContent", "c": "Microsoft attribute", "w": false }, "1.3.6.1.4.1.188.7.1.1": { "d": "ascom", "c": "Ascom Systech", "w": false }, "1.3.6.1.4.1.188.7.1.1.1": { "d": "ideaECB", "c": "Ascom Systech", "w": false }, "1.3.6.1.4.1.188.7.1.1.2": { "d": "ideaCBC", "c": "Ascom Systech", "w": false }, @@ -1473,6 +1538,54 @@ oids = { "1.3.132.0.37": { "d": "sect409r1", "c": "SECG (Certicom) named elliptic curve", "w": false }, "1.3.132.0.38": { "d": "sect571k1", "c": "SECG (Certicom) named elliptic curve", "w": false }, "1.3.132.0.39": { "d": "sect571r1", "c": "SECG (Certicom) named elliptic curve", "w": false }, +"1.3.133.16.840.9.84": { "d": "x984", "c": "X9.84", "w": false }, +"1.3.133.16.840.9.84.0": { "d": "x984Module", "c": "X9.84", "w": false }, +"1.3.133.16.840.9.84.0.1": { "d": "x984Biometrics", "c": "X9.84 Module", "w": false }, +"1.3.133.16.840.9.84.0.2": { "d": "x984CMS", "c": "X9.84 Module", "w": false }, +"1.3.133.16.840.9.84.0.3": { "d": "x984Identifiers", "c": "X9.84 Module", "w": false }, +"1.3.133.16.840.9.84.1": { "d": "x984Biometric", "c": "X9.84", "w": false }, +"1.3.133.16.840.9.84.1.0": { "d": "biometricUnknownType", "c": "X9.84 Biometric", "w": false }, +"1.3.133.16.840.9.84.1.1": { "d": "biometricBodyOdor", "c": "X9.84 Biometric", "w": false }, +"1.3.133.16.840.9.84.1.2": { "d": "biometricDNA", "c": "X9.84 Biometric", "w": false }, +"1.3.133.16.840.9.84.1.3": { "d": "biometricEarShape", "c": "X9.84 Biometric", "w": false }, +"1.3.133.16.840.9.84.1.4": { "d": "biometricFacialFeatures", "c": "X9.84 Biometric", "w": false }, +"1.3.133.16.840.9.84.1.5": { "d": "biometricFingerImage", "c": "X9.84 Biometric", "w": false }, +"1.3.133.16.840.9.84.1.6": { "d": "biometricFingerGeometry", "c": "X9.84 Biometric", "w": false }, +"1.3.133.16.840.9.84.1.7": { "d": "biometricHandGeometry", "c": "X9.84 Biometric", "w": false }, +"1.3.133.16.840.9.84.1.8": { "d": "biometricIrisFeatures", "c": "X9.84 Biometric", "w": false }, +"1.3.133.16.840.9.84.1.9": { "d": "biometricKeystrokeDynamics", "c": "X9.84 Biometric", "w": false }, +"1.3.133.16.840.9.84.1.10": { "d": "biometricPalm", "c": "X9.84 Biometric", "w": false }, +"1.3.133.16.840.9.84.1.11": { "d": "biometricRetina", "c": "X9.84 Biometric", "w": false }, +"1.3.133.16.840.9.84.1.12": { "d": "biometricSignature", "c": "X9.84 Biometric", "w": false }, +"1.3.133.16.840.9.84.1.13": { "d": "biometricSpeechPattern", "c": "X9.84 Biometric", "w": false }, +"1.3.133.16.840.9.84.1.14": { "d": "biometricThermalImage", "c": "X9.84 Biometric", "w": false }, +"1.3.133.16.840.9.84.1.15": { "d": "biometricVeinPattern", "c": "X9.84 Biometric", "w": false }, +"1.3.133.16.840.9.84.1.16": { "d": "biometricThermalFaceImage", "c": "X9.84 Biometric", "w": false }, +"1.3.133.16.840.9.84.1.17": { "d": "biometricThermalHandImage", "c": "X9.84 Biometric", "w": false }, +"1.3.133.16.840.9.84.1.18": { "d": "biometricLipMovement", "c": "X9.84 Biometric", "w": false }, +"1.3.133.16.840.9.84.1.19": { "d": "biometricGait", "c": "X9.84 Biometric", "w": false }, +"1.3.133.16.840.9.84.3": { "d": "x984MatchingMethod", "c": "X9.84", "w": false }, +"1.3.133.16.840.9.84.4": { "d": "x984FormatOwner", "c": "X9.84", "w": false }, +"1.3.133.16.840.9.84.4.0": { "d": "x984CbeffOwner", "c": "X9.84 Format Owner", "w": false }, +"1.3.133.16.840.9.84.4.1": { "d": "x984IbiaOwner", "c": "X9.84 Format Owner", "w": false }, +"1.3.133.16.840.9.84.4.1.1": { "d": "ibiaOwnerSAFLINK", "c": "X9.84 IBIA Format Owner", "w": false }, +"1.3.133.16.840.9.84.4.1.2": { "d": "ibiaOwnerBioscrypt", "c": "X9.84 IBIA Format Owner", "w": false }, +"1.3.133.16.840.9.84.4.1.3": { "d": "ibiaOwnerVisionics", "c": "X9.84 IBIA Format Owner", "w": false }, +"1.3.133.16.840.9.84.4.1.4": { "d": "ibiaOwnerInfineonTechnologiesAG", "c": "X9.84 IBIA Format Owner", "w": false }, +"1.3.133.16.840.9.84.4.1.5": { "d": "ibiaOwnerIridianTechnologies", "c": "X9.84 IBIA Format Owner", "w": false }, +"1.3.133.16.840.9.84.4.1.6": { "d": "ibiaOwnerVeridicom", "c": "X9.84 IBIA Format Owner", "w": false }, +"1.3.133.16.840.9.84.4.1.7": { "d": "ibiaOwnerCyberSIGN", "c": "X9.84 IBIA Format Owner", "w": false }, +"1.3.133.16.840.9.84.4.1.8": { "d": "ibiaOwnereCryp", "c": "X9.84 IBIA Format Owner", "w": false }, +"1.3.133.16.840.9.84.4.1.9": { "d": "ibiaOwnerFingerprintCardsAB", "c": "X9.84 IBIA Format Owner", "w": false }, +"1.3.133.16.840.9.84.4.1.10": { "d": "ibiaOwnerSecuGen", "c": "X9.84 IBIA Format Owner", "w": false }, +"1.3.133.16.840.9.84.4.1.11": { "d": "ibiaOwnerPreciseBiometric", "c": "X9.84 IBIA Format Owner", "w": false }, +"1.3.133.16.840.9.84.4.1.12": { "d": "ibiaOwnerIdentix", "c": "X9.84 IBIA Format Owner", "w": false }, +"1.3.133.16.840.9.84.4.1.13": { "d": "ibiaOwnerDERMALOG", "c": "X9.84 IBIA Format Owner", "w": false }, +"1.3.133.16.840.9.84.4.1.14": { "d": "ibiaOwnerLOGICO", "c": "X9.84 IBIA Format Owner", "w": false }, +"1.3.133.16.840.9.84.4.1.15": { "d": "ibiaOwnerNIST", "c": "X9.84 IBIA Format Owner", "w": false }, +"1.3.133.16.840.9.84.4.1.16": { "d": "ibiaOwnerA3Vision", "c": "X9.84 IBIA Format Owner", "w": false }, +"1.3.133.16.840.9.84.4.1.17": { "d": "ibiaOwnerNEC", "c": "X9.84 IBIA Format Owner", "w": false }, +"1.3.133.16.840.9.84.4.1.18": { "d": "ibiaOwnerSTMicroelectronics", "c": "X9.84 IBIA Format Owner", "w": false }, "2.5.4.0": { "d": "objectClass", "c": "X.520 DN component", "w": false }, "2.5.4.1": { "d": "aliasedEntryName", "c": "X.520 DN component", "w": false }, "2.5.4.2": { "d": "knowledgeInformation", "c": "X.520 DN component", "w": false }, @@ -2042,6 +2155,26 @@ oids = { "2.23.42.9.38": { "d": "Gemplus", "c": "SET vendor", "w": false }, "2.23.42.10": { "d": "national", "c": "SET", "w": false }, "2.23.42.10.392": { "d": "Japan", "c": "SET national", "w": false }, +"2.23.133": { "d": "tCPA", "c": "TCPA", "w": false }, +"2.23.133.1": { "d": "tcpaSpecVersion", "c": "TCPA", "w": false }, +"2.23.133.2": { "d": "tcpaAttribute", "c": "TCPA", "w": false }, +"2.23.133.2.1": { "d": "tcpaTpmManufacturer", "c": "TCPA Attribute", "w": false }, +"2.23.133.2.2": { "d": "tcpaTpmModel", "c": "TCPA Attribute", "w": false }, +"2.23.133.2.3": { "d": "tcpaTpmVersion", "c": "TCPA Attribute", "w": false }, +"2.23.133.2.4": { "d": "tcpaPlatformManufacturer", "c": "TCPA Attribute", "w": false }, +"2.23.133.2.5": { "d": "tcpaPlatformModel", "c": "TCPA Attribute", "w": false }, +"2.23.133.2.6": { "d": "tcpaPlatformVersion", "c": "TCPA Attribute", "w": false }, +"2.23.133.2.7": { "d": "tcpaComponentManufacturer", "c": "TCPA Attribute", "w": false }, +"2.23.133.2.8": { "d": "tcpaComponentModel", "c": "TCPA Attribute", "w": false }, +"2.23.133.2.9": { "d": "tcpaComponentVersion", "c": "TCPA Attribute", "w": false }, +"2.23.133.2.10": { "d": "tcpaSecurityQualities", "c": "TCPA Attribute", "w": false }, +"2.23.133.2.11": { "d": "tcpaTpmProtectionProfile", "c": "TCPA Attribute", "w": false }, +"2.23.133.2.12": { "d": "tcpaTpmSecurityTarget", "c": "TCPA Attribute", "w": false }, +"2.23.133.2.13": { "d": "tcpaFoundationProtectionProfile", "c": "TCPA Attribute", "w": false }, +"2.23.133.2.14": { "d": "tcpaFoundationSecurityTarget", "c": "TCPA Attribute", "w": false }, +"2.23.133.2.15": { "d": "tcpaTpmIdLabel", "c": "TCPA Attribute", "w": false }, +"2.23.133.3": { "d": "tcpaProtocol", "c": "TCPA", "w": false }, +"2.23.133.3.1": { "d": "tcpaPrttTpmIdProtocol", "c": "TCPA Protocol", "w": false }, "2.23.134.1.4.2.1": { "d": "postSignumRootQCA ", "c": "PostSignum CA", "w": false }, "2.23.134.1.2.2.3": { "d": "postSignumPublicCA ", "c": "PostSignum CA", "w": false }, "2.23.134.1.2.1.8.210": { "d": "postSignumCommercialServerPolicy", "c": "PostSignum CA", "w": false }, -- 2.51.2 From 386cef168e44e3e74649282d6a025a6320b0f94a Mon Sep 17 00:00:00 2001 From: Lapo Luchini Date: Wed, 28 Jan 2015 09:56:35 +0000 Subject: [PATCH 05/10] Add missing file to the release ZIP (thanks to Jens Potschadtke for the heads up). --- release.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/release.sh b/release.sh index 7ebd569..9933bdb 100755 --- a/release.sh +++ b/release.sh @@ -1,7 +1,7 @@ #!/bin/sh set -e FILES=" - asn1.js oids.js base64.js hex.js dom.js test.js + asn1.js oids.js base64.js hex.js int10.js dom.js test.js index.css index.js index.html README.md LICENSE update.sh check.sh -- 2.51.2 From b938d3f5b5ebe60c526efd54c4e4c4567208d9fe Mon Sep 17 00:00:00 2001 From: Lapo Luchini Date: Wed, 28 Jan 2015 10:04:10 +0000 Subject: [PATCH 06/10] In FreeBSD GNU coreutils are now g-prefixed. --- check.sh | 3 ++- release.sh | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/check.sh b/check.sh index c151a07..849f884 100755 --- a/check.sh +++ b/check.sh @@ -1,2 +1,3 @@ #!/bin/sh -gpg -o - sha256sums.asc | sha256sum -c --quiet +sha256sum /dev/null 2>&1 && SHA256=sha256sum || SHA256=gsha256sum +gpg -o - sha256sums.asc | $SHA256 -c --quiet diff --git a/release.sh b/release.sh index 9933bdb..6f2bc87 100755 --- a/release.sh +++ b/release.sh @@ -6,6 +6,7 @@ FILES=" README.md LICENSE update.sh check.sh " -sha256sum -t $FILES | gpg --clearsign > sha256sums.asc +sha256sum /dev/null 2>&1 && SHA256=sha256sum || SHA256=gsha256sum +$SHA256 -t $FILES | gpg --clearsign > sha256sums.asc 7z a -tzip -mx=9 asn1js.zip $FILES sha256sums.asc rsync -Pvrtz asn1js.zip lapo.it:www/asn1js/ -- 2.51.2 From 66941db32bb1fd465dd8dbb9ca244e627a872bca Mon Sep 17 00:00:00 2001 From: Lapo Luchini Date: Sat, 18 Apr 2015 10:51:23 +0000 Subject: [PATCH 07/10] BIT STRINGs with unused bits can't be used to encapsulate ASN.1 data. Closes #9 on GitHub. --- asn1.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/asn1.js b/asn1.js index 7fc3697..e6093c9 100644 --- a/asn1.js +++ b/asn1.js @@ -416,9 +416,11 @@ ASN1.decode = function (stream) { // must have valid content getSub(); } else if (tag.isUniversal() && ((tag.tagNumber == 0x03) || (tag.tagNumber == 0x04))) { - if (tag.tagNumber == 0x03) stream.get(); // skip BitString unused bits, must be in [0, 7] - // sometimes BitString and OctetString do contain ASN.1 + // sometimes BitString and OctetString are used to encapsulate ASN.1 try { + if (tag.tagNumber == 0x03) + if (stream.get() != 0) + throw "BIT STRINGs with unused bits cannot encapsulate."; getSub(); for (var i = 0; i < sub.length; ++i) if (sub[i].tag.isEOC()) -- 2.51.2 From 6b51c2bd3997810587f23c1936b3a110e428e24a Mon Sep 17 00:00:00 2001 From: Lapo Luchini Date: Wed, 22 Apr 2015 12:14:45 +0000 Subject: [PATCH 08/10] Add some sanity limits in URL length. --- index.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/index.js b/index.js index 9101796..d34ab52 100644 --- a/index.js +++ b/index.js @@ -23,9 +23,9 @@ function decode(der) { dump.appendChild(asn1.toHexDOM()); if (id('pem').value === '') id('pem').value = hex; - // update URL hash (does this have length limits we should avoid?) - hash = '#' + hex; - window.location.hash = hash; + // update URL hash + if (hex.length < 10240) + hash = window.location.hash = '#' + hex; } catch (e) { tree.innerHTML = toHTML(e); } -- 2.51.2 From d8d3053029d2b4c80612c4f602c91c567141dda9 Mon Sep 17 00:00:00 2001 From: Lapo Luchini Date: Wed, 22 Apr 2015 12:44:23 +0000 Subject: [PATCH 09/10] Limit length of DOM hex dump for big data fields. --- dom.js | 22 ++++++++++++++++++---- index.css | 1 + 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/dom.js b/dom.js index 9877c8d..05e9e0c 100644 --- a/dom.js +++ b/dom.js @@ -149,10 +149,24 @@ ASN1.prototype.toHexDOM = function (root) { }; this.toHexDOM_sub(node, "tag", this.stream, this.posStart(), this.posStart() + 1); this.toHexDOM_sub(node, (this.length >= 0) ? "dlen" : "ulen", this.stream, this.posStart() + 1, this.posContent()); - if (this.sub === null) - node.appendChild(DOM.text( - this.stream.hexDump(this.posContent(), this.posEnd()))); - else if (this.sub.length > 0) { + if (this.sub === null) { + var start = this.posContent(); + var end = this.posEnd(); + if (end - start < 10 * 16) + node.appendChild(DOM.text( + this.stream.hexDump(start, end))); + else { + var end1 = start + 5 * 16 - (start & 0xF); + var start2 = end - 16 - (end & 0xF); + node.appendChild(DOM.text( + this.stream.hexDump(start, end1))); + var sub = DOM.tag("span", "skip"); + sub.appendChild(DOM.text("\u2026 skipping " + (start2 - end1) + " bytes \u2026\n")); + node.appendChild(sub); + node.appendChild(DOM.text( + this.stream.hexDump(start2, end))); + } + } else if (this.sub.length > 0) { var first = this.sub[0]; var last = this.sub[this.sub.length - 1]; this.toHexDOM_sub(node, "intro", this.stream, this.posContent(), first.posStart()); diff --git a/index.css b/index.css index 1e9ed1a..af68be9 100644 --- a/index.css +++ b/index.css @@ -85,6 +85,7 @@ html, body { #dump .ulen { color: darkgreen; } #dump .intro { color: blue; } #dump .outro { color: darkgreen; } +#dump .skip { color: #666666; } #dump .hexCurrent { background-color: #808080; } #dump .hexCurrent .hex { background-color: #A0A0A0; } #file { display: none; } -- 2.51.2 From 6b63e0c94b4a3847c34ea9c2a796367b5cfc06bc Mon Sep 17 00:00:00 2001 From: Lapo Luchini Date: Wed, 22 Apr 2015 13:59:32 +0000 Subject: [PATCH 10/10] Add native support for binary strings to Stream. This should also help with #12 on GitHub. --- asn1.js | 3 ++- index.js | 7 ++----- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/asn1.js b/asn1.js index 8a39be3..d2034a9 100644 --- a/asn1.js +++ b/asn1.js @@ -34,6 +34,7 @@ function Stream(enc, pos) { this.enc = enc.enc; this.pos = enc.pos; } else { + // enc should be an array or a binary string this.enc = enc; this.pos = pos; } @@ -43,7 +44,7 @@ Stream.prototype.get = function (pos) { pos = this.pos++; if (pos >= this.enc.length) throw 'Requesting byte offset ' + pos + ' on a stream of length ' + this.enc.length; - return this.enc[pos]; + return (typeof this.enc == "string") ? this.enc.charCodeAt(pos) : this.enc[pos]; }; Stream.prototype.hexDigits = "0123456789ABCDEF"; Stream.prototype.hexByte = function (b) { diff --git a/index.js b/index.js index d34ab52..32ed599 100644 --- a/index.js +++ b/index.js @@ -49,11 +49,8 @@ function decodeBinaryString(str) { der = Hex.decode(str); else if (Base64.re.test(str)) der = Base64.unarmor(str); - else { - der = []; - for (var i = 0; i < str.length; ++i) - der[der.length] = str.charCodeAt(i); - } + else + der = str; decode(der); } catch (e) { id('tree').innerHTML = 'Cannot decode file.';