react / wstein / node_modules / browserify / node_modules / crypto-browserify / node_modules / public-encrypt / node_modules / parse-asn1 / node_modules / asn1.js / rfc / 3280 / test / basic-test.js
80677 viewsvar assert = require('assert');1var asn1 = require('../../../');2var rfc3280 = require('..');34var Buffer = require('buffer').Buffer;56describe('asn1.js RFC3280', function() {7it('should decode Certificate', function() {8var data = new Buffer(9'308204763082035ea0030201020208462e4256bb1194dc300d06092a864886f70d0101' +10'0505003049310b300906035504061302555331133011060355040a130a476f6f676c65' +11'20496e63312530230603550403131c476f6f676c6520496e7465726e65742041757468' +12'6f72697479204732301e170d3134303733303132303434305a170d3134313032383030' +13'303030305a3068310b30090603550406130255533113301106035504080c0a43616c69' +14'666f726e69613116301406035504070c0d4d6f756e7461696e20566965773113301106' +15'0355040a0c0a476f6f676c6520496e633117301506035504030c0e7777772e676f6f67' +16'6c652e636f6d30820122300d06092a864886f70d01010105000382010f003082010a02' +17'82010100b7894e02f9ba01e07889d670fd3618d6022efc96c9d9deae2e800aa19f4b17' +18'20c371b9996b2efc12fa191b60a92afe76e80e5d9d47280cbc46a4cd9cf454503fefcf' +19'cd2e1c8b113a89bcd1f1427ae793bbd0d1e077bc963ff2ceb2b0c9ab68196fce1b2f40' +20'0dc77d6294a7c0d50ff104cf92ee837d5c484a3ba0ce76b9c018cf96545f7e27518232' +21'57874945f87b69bac902ce4b378746953c619db909e73fd2f5e2dd009c5c748ec22fcb' +22'd6648fe60a5805e98ab8cd65ab0eb0772d7a19aefdc24c9a3933692ca695e7b493f8ac' +23'7aab8e5d1229f071cf08ac0b6c641704a74747faacfb857b68359fc1a98c777fb5eb3e' +24'9c90d6a13b78f42d6d797fd74f03c30203010001a38201413082013d301d0603551d25' +25'0416301406082b0601050507030106082b0601050507030230190603551d1104123010' +26'820e7777772e676f6f676c652e636f6d306806082b06010505070101045c305a302b06' +27'082b06010505073002861f687474703a2f2f706b692e676f6f676c652e636f6d2f4749' +28'4147322e637274302b06082b06010505073001861f687474703a2f2f636c69656e7473' +29'312e676f6f676c652e636f6d2f6f637370301d0603551d0e04160414e43d6cc20c12e9' +30'7c1920533676ef287737d8884a300c0603551d130101ff04023000301f0603551d2304' +31'18301680144add06161bbcf668b576f581b6bb621aba5a812f30170603551d20041030' +32'0e300c060a2b06010401d67902050130300603551d1f042930273025a023a021861f68' +33'7474703a2f2f706b692e676f6f676c652e636f6d2f47494147322e63726c300d06092a' +34'864886f70d010105050003820101002d5501bd33f7b6e06117e53ccf21703565f29ab7' +35'8642a771effa4369f32938b45f04208d88a1046ba0a726622e864143c8dac38392430d' +36'fbea1b7d41c1e27dd43438a47d36c4a048de318be442abed5f60373687d01b7fefc43e' +37'0aacf620b11a69fb237aaa4dc33b97bc0eb39b1abe6902b1518253addda25037389c26' +38'0ef2808be7f702f47a6466d6f3b35764f088c94e0a2b9ee403602ae21cbad3fd8e873e' +39'9e817945a3d23fd2b35579cce19ea7f8815d166f3e46d53eed25ef391a912bb715af64' +40'e43e124f98be487f9d222954a5bebc8d5ca384c7128c6dabffb11150a7d2a62ce565b8' +41'a02a6c4c8ecfc7ac7065c1979cb8d50eabd5d36c72a5396e712e',42'hex');4344var res = rfc3280.Certificate.decode(data, 'der');4546var tbs = res.tbsCertificate;47assert.equal(tbs.version, 'v3');48assert.deepEqual(tbs.serialNumber,49new asn1.bignum('462e4256bb1194dc', 16));50assert.equal(tbs.signature.algorithm.join('.'),51'1.2.840.113549.1.1.5');52assert.equal(tbs.signature.parameters.toString('hex'), '0500');53});54it('should decode ECC Certificate', function() {55/*56Symantec Class 3 ECC 256 bit Extended Validation CA from57https://knowledge.symantec.com/support/ssl-certificates-support/index?page=content&actp=CROSSLINK&id=AR190858*/59var data = new Buffer(60'308203e33082036aa00302010202104d955d20af85c49f6925fbab7c665f89300a0608' +61'2a8648ce3d0403033081ca310b300906035504061302555331173015060355040a130e' +62'566572695369676e2c20496e632e311f301d060355040b1316566572695369676e2054' +63'72757374204e6574776f726b313a3038060355040b1331286329203230303720566572' +64'695369676e2c20496e632e202d20466f7220617574686f72697a656420757365206f6e' +65'6c79314530430603550403133c566572695369676e20436c6173732033205075626c69' +66'63205072696d6172792043657274696669636174696f6e20417574686f72697479202d' +67'204734301e170d3132313232303030303030305a170d3232313231393233353935395a' +68'30818b310b3009060355040613025553311d301b060355040a131453796d616e746563' +69'20436f72706f726174696f6e311f301d060355040b131653796d616e74656320547275' +70'7374204e6574776f726b313c303a0603550403133353796d616e74656320436c617373' +71'203320454343203235362062697420457874656e6465642056616c69646174696f6e20' +72'43413059301306072a8648ce3d020106082a8648ce3d03010703420004dd043db2f290' +73'9397c6e9bbbc91db51f0a386edfbc6d38593320549e00483619651ff5721ae0bda0ee7' +74'04a17fdb2a1cbdca9835c5717340cde86aab54844326e2a382016d3082016930120603' +75'551d130101ff040830060101ff02010030370603551d1f0430302e302ca02aa0288626' +76'687474703a2f2f63726c2e77732e73796d616e7465632e636f6d2f706361332d67342e' +77'63726c300e0603551d0f0101ff040403020106303706082b06010505070101042b3029' +78'302706082b06010505073001861b687474703a2f2f6f6373702e77732e73796d616e74' +79'65632e636f6d30650603551d20045e305c305a0604551d20003052302606082b060105' +80'05070201161a687474703a2f2f7777772e73796d617574682e636f6d2f637073302806' +81'082b06010505070202301c1a1a687474703a2f2f7777772e73796d617574682e636f6d' +82'2f727061302a0603551d1104233021a41f301d311b30190603550403131253594d432d' +83'4543432d43412d703235362d33301d0603551d0e041604144813651794ec9e162a2a74' +84'5ce8532db4fb83eb8e301f0603551d23041830168014b31691fdeea66ee4b52e498f87' +85'788180ece5b1b5300a06082a8648ce3d040303036700306402305c9bee83a3764d8c2d' +86'054c8234bab3bece8fe8c33481fb4077e8346c5b172b3badd5a7a3d2f366c24fb2b0c8' +87'76988fbf02304fc22fce92c5a9bdce7d4ed41b3b6624ea4ecd82af544a88efe3bf3a93' +88'6354217d1230d232cdabc981b0a711437b4566',89'hex');90var SubjectPublicKeyInfo = rfc3280.SubjectPublicKeyInfo;91var res = rfc3280.Certificate.decode(data, 'der');9293var tbs = res.tbsCertificate;94assert.equal(tbs.version, 'v3');95assert.deepEqual(tbs.serialNumber,96new asn1.bignum('4d955d20af85c49f6925fbab7c665f89', 16));97assert.equal(tbs.signature.algorithm.join('.'),98'1.2.840.10045.4.3.3'); // RFC575499var spki = SubjectPublicKeyInfo.encode(tbs.subjectPublicKeyInfo, 'der');100// spki check to the output of101// openssl x509 -in ecc_cert.pem -pubkey -noout |102// openssl pkey -pubin -outform der | openssl base64103assert.equal(spki.toString('base64'),104'MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE3QQ9svKQk5fG6bu8kdtR8KO' +105'G7fvG04WTMgVJ4ASDYZZR/1chrgvaDucEoX/bKhy9ypg1xXFzQM3oaqtUhE' +106'Mm4g=='107);108});109110it('should decode AuthorityInfoAccess', function() {111var data = new Buffer('305a302b06082b06010505073002861f687474703a2f2f70' +112'6b692e676f6f676c652e636f6d2f47494147322e63727430' +113'2b06082b06010505073001861f687474703a2f2f636c6965' +114'6e7473312e676f6f676c652e636f6d2f6f637370',115'hex');116117var info = rfc3280.AuthorityInfoAccessSyntax.decode(data, 'der');118119assert(info[0].accessMethod);120});121});122123124