Skip to content

der: support for duplicates in DER parsing #2376

Description

@UU-0665D27

How to ignore duplicates in sets or otherwise obtain certificates?

der hex:

3082312a06092a864886f70d010702a082311b30823117020101310f300d060960864801650304020105003077060a2b060104018237020104a06930673032060a2b06010401823702011e30240201010410f1100c0000000000c0000000000000460201000201000201000201000201003031300d060960864801650304020105000420b26ca9b8bdee8ba47929ec68847b1ea8efea0ac9c0cbb334293d0d9c587f28fda0820f56308207a73082058fa003020102020c59963ea276e894abb274d1d9300d06092a864886f70d01010b0500305c310b300906035504061302424531193017060355040a1310476c6f62616c5369676e206e762d73613132303006035504031329476c6f62616c5369676e204743432052343520455620436f64655369676e696e672043412032303230301e170d3235303931313134313232395a170d3238303931313134313232395a3082010b311d301b060355040f0c1450726976617465204f7267616e697a6174696f6e311630140603550405130d3132343737303035393532333031133011060b2b0601040182373c0201031302525531173015060b2b0601040182373c02010213064d6f73636f77310b3009060355040613025255310f300d060355040813064d6f73636f77310f300d060355040713064d6f73636f77312b3029060355040913224c656e696e67726164736b79206176652c203339202f206275696c64696e6720373931233021060355040a131a434f4d4d554e49434154494f4e20504c4154464f524d204c4c43312330210603550403131a434f4d4d554e49434154494f4e20504c4154464f524d204c4c4330820222300d06092a864886f70d01010105000382020f003082020a0282020100bc68e481e9ab22cccf4ca498f47e52f6337a5d2078e4d43767a2a400257b1ed871dab9837799dd8d11584a2077b0c14f1a9c38441b247b0275bcd56b849fc813d3a0315320fca4046d4c5164fe1649cea8546fd56214f6ea68537db5a378ccca1689b7ad93092c2194fe929c199ad22b48758d9bf5f09a9089d9ed345f46a968e92bfc929b8193492e420898cb7f0e36d54707f3285c04dca18bf8f1c35c15e698d4385ab41e1541b2d4ea83291e6c57ac3bb4916f869902c2d4d2645722a87f2b36f14f6e824af81a434760459190e607a48504123edfcdf6b18effc3f147efb99b3e1582e5fb89350ee4f5df068effbe984a6cc0124b2855ecbc1d2fe287c4c5067d1013bf3b06c7daf5a5148e77f6acc14d63c3c74ea4ce17124f88fd0d0bceada54e5f4d3c31df21020a097816f290e129af02db22a51e29c09138499c3c072316198a69704ad6a6047e0abd82dfe8afc01c01fbbfcf346943c934830d193ddbcccdcd42f629bd219ad22727728254a943f9d201258380121141d062b95dfc0e58721543cc93613ba756a542300971fe6e98bf2b23d17b0ee143641de2a8c1687a9fc7eb9ccd5a3269332b0458bac7cbf4acb4961f5412206d2edbc89d2d62fd9ce70cf701bc57f39d30b01673feb9de901ba620de6fc4d6aaba1cf645190b519b7e029dd340f16227548a78bd2f377a7ceed9c1277f6430bbd8e19977210203010001a38201b6308201b2300e0603551d0f0101ff04040302078030819f06082b0601050507010104819230818f304c06082b060105050730028640687474703a2f2f7365637572652e676c6f62616c7369676e2e636f6d2f6361636572742f67736763637234356576636f64657369676e6361323032302e637274303f06082b060105050730018633687474703a2f2f6f6373702e676c6f62616c7369676e2e636f6d2f67736763637234356576636f64657369676e63613230323030550603551d20044e304c304106092b06010401a03201023034303206082b06010505070201162668747470733a2f2f7777772e676c6f62616c7369676e2e636f6d2f7265706f7369746f72792f3007060567810c010330090603551d130402300030470603551d1f0440303e303ca03aa0388636687474703a2f2f63726c2e676c6f62616c7369676e2e636f6d2f67736763637234356576636f64657369676e6361323032302e63726c30130603551d25040c300a06082b06010505070303301f0603551d23041830168014259dd0fc59098663c5ecf3b1133b571c03923611301d0603551d0e04160414f6f5571113e991a338114592735b595750c61666300d06092a864886f70d01010b050003820201003c156bacb851c5b38d3b876472834c59385c40e7dcd4b07b37eba1e6c163b98dbf63681916e1492f1be217ec264e4ea33958f71fab540727ac28590dc7373b6d6cf9ade428578aedbb9fbb93f30a68b16a51984c13c0de1831a1fa955bcefb26fc50bd81ae190c23ea2e70a2e99275ce185962c09615a41328295f3b4db4950b53bb8bc7bd4d335cc170429386452e4f1543c65efe137579ddd761421f387df67ec17f0f048f665946853093439cb60343ce4b4e557216f14887d5f6b3783624fc6d01a37703fcfc51c9504d6176abd9b86a5618fe7b7002b6fd571c229b3c20707e19b9cc85fc367f06610563c5d2e4003ab4d240deb11dfe5064c25a6eb109919f9386a85e189b88b9323e385610c1c8cd1eee450bff1dac491fbfe070e5a0d8b76fe57dfd6bedcc63b3c3eeabc9e3545d1a0414f6620b66a2336ada4a0704868d9d5b0bafb3d4b2c582095c08592320cdbed6290d14c2620c528132010008b6f1644f262b1738b3e48e363da9da61238ccca69f96f45fb7e07bee95dcf67d8c7067c92d326810a552a1fd8a274b929ef3516f06565f5e983803a6b9707639a52a90679f5f568272f2a6424d0aef95d31f8206e46a4c94b2ee1f9590fa45958b1fbd6b6f7a4e1404a0d837b2a0eaaad917b6ca70a7f37b2487f8407062fd476c2ff3417c62b7eb6097543680e69dcf4b5c7fcb1ad00f31116bca81c0d4e361308207a73082058fa003020102020c59963ea276e894abb274d1d9300d06092a864886f70d01010b0500305c310b300906035504061302424531193017060355040a1310476c6f62616c5369676e206e762d73613132303006035504031329476c6f62616c5369676e204743432052343520455620436f64655369676e696e672043412032303230301e170d3235303931313134313232395a170d3238303931313134313232395a3082010b311d301b060355040f0c1450726976617465204f7267616e697a6174696f6e311630140603550405130d3132343737303035393532333031133011060b2b0601040182373c0201031302525531173015060b2b0601040182373c02010213064d6f73636f77310b3009060355040613025255310f300d060355040813064d6f73636f77310f300d060355040713064d6f73636f77312b3029060355040913224c656e696e67726164736b79206176652c203339202f206275696c64696e6720373931233021060355040a131a434f4d4d554e49434154494f4e20504c4154464f524d204c4c43312330210603550403131a434f4d4d554e49434154494f4e20504c4154464f524d204c4c4330820222300d06092a864886f70d01010105000382020f003082020a0282020100bc68e481e9ab22cccf4ca498f47e52f6337a5d2078e4d43767a2a400257b1ed871dab9837799dd8d11584a2077b0c14f1a9c38441b247b0275bcd56b849fc813d3a0315320fca4046d4c5164fe1649cea8546fd56214f6ea68537db5a378ccca1689b7ad93092c2194fe929c199ad22b48758d9bf5f09a9089d9ed345f46a968e92bfc929b8193492e420898cb7f0e36d54707f3285c04dca18bf8f1c35c15e698d4385ab41e1541b2d4ea83291e6c57ac3bb4916f869902c2d4d2645722a87f2b36f14f6e824af81a434760459190e607a48504123edfcdf6b18effc3f147efb99b3e1582e5fb89350ee4f5df068effbe984a6cc0124b2855ecbc1d2fe287c4c5067d1013bf3b06c7daf5a5148e77f6acc14d63c3c74ea4ce17124f88fd0d0bceada54e5f4d3c31df21020a097816f290e129af02db22a51e29c09138499c3c072316198a69704ad6a6047e0abd82dfe8afc01c01fbbfcf346943c934830d193ddbcccdcd42f629bd219ad22727728254a943f9d201258380121141d062b95dfc0e58721543cc93613ba756a542300971fe6e98bf2b23d17b0ee143641de2a8c1687a9fc7eb9ccd5a3269332b0458bac7cbf4acb4961f5412206d2edbc89d2d62fd9ce70cf701bc57f39d30b01673feb9de901ba620de6fc4d6aaba1cf645190b519b7e029dd340f16227548a78bd2f377a7ceed9c1277f6430bbd8e19977210203010001a38201b6308201b2300e0603551d0f0101ff04040302078030819f06082b0601050507010104819230818f304c06082b060105050730028640687474703a2f2f7365637572652e676c6f62616c7369676e2e636f6d2f6361636572742f67736763637234356576636f64657369676e6361323032302e637274303f06082b060105050730018633687474703a2f2f6f6373702e676c6f62616c7369676e2e636f6d2f67736763637234356576636f64657369676e63613230323030550603551d20044e304c304106092b06010401a03201023034303206082b06010505070201162668747470733a2f2f7777772e676c6f62616c7369676e2e636f6d2f7265706f7369746f72792f3007060567810c010330090603551d130402300030470603551d1f0440303e303ca03aa0388636687474703a2f2f63726c2e676c6f62616c7369676e2e636f6d2f67736763637234356576636f64657369676e6361323032302e63726c30130603551d25040c300a06082b06010505070303301f0603551d23041830168014259dd0fc59098663c5ecf3b1133b571c03923611301d0603551d0e04160414f6f5571113e991a338114592735b595750c61666300d06092a864886f70d01010b050003820201003c156bacb851c5b38d3b876472834c59385c40e7dcd4b07b37eba1e6c163b98dbf63681916e1492f1be217ec264e4ea33958f71fab540727ac28590dc7373b6d6cf9ade428578aedbb9fbb93f30a68b16a51984c13c0de1831a1fa955bcefb26fc50bd81ae190c23ea2e70a2e99275ce185962c09615a41328295f3b4db4950b53bb8bc7bd4d335cc170429386452e4f1543c65efe137579ddd761421f387df67ec17f0f048f665946853093439cb60343ce4b4e557216f14887d5f6b3783624fc6d01a37703fcfc51c9504d6176abd9b86a5618fe7b7002b6fd571c229b3c20707e19b9cc85fc367f06610563c5d2e4003ab4d240deb11dfe5064c25a6eb109919f9386a85e189b88b9323e385610c1c8cd1eee450bff1dac491fbfe070e5a0d8b76fe57dfd6bedcc63b3c3eeabc9e3545d1a0414f6620b66a2336ada4a0704868d9d5b0bafb3d4b2c582095c08592320cdbed6290d14c2620c528132010008b6f1644f262b1738b3e48e363da9da61238ccca69f96f45fb7e07bee95dcf67d8c7067c92d326810a552a1fd8a274b929ef3516f06565f5e983803a6b9707639a52a90679f5f568272f2a6424d0aef95d31f8206e46a4c94b2ee1f9590fa45958b1fbd6b6f7a4e1404a0d837b2a0eaaad917b6ca70a7f37b2487f8407062fd476c2ff3417c62b7eb6097543680e69dcf4b5c7fcb1ad00f31116bca81c0d4e3613182212c30822128020101306c305c310b300906035504061302424531193017060355040a1310476c6f62616c5369676e206e762d73613132303006035504031329476c6f62616c5369676e204743432052343520455620436f64655369676e696e672043412032303230020c59963ea276e894abb274d1d9300d06096086480165030402010500a081a13017060a2b06010401823702010c31093007a00581034d4158301906092a864886f70d010903310c060a2b060104018237020104301c06092a864886f70d010905310f170d3236303532383133353033315a301c060a2b06010401823702010b310e300c060a2b060104018237020115302f06092a864886f70d01090431220420895ffc14560f6efdc47f51625435cce6da832818e80f842395a7118445557f2e300d06092a864886f70d0101010500048202004da4fafa25ac9caaf36b6cbfd91533925d2cff177cae94ac918f7472f2d91e8b4be122bdccfb51b30f14786bf4b2f92a0eb71e71d86fa17ec388e41c21e2dbe01781d91f320ca7d1c0fb6c5eed15428389cf0fec2d1d5b8309988b8bf3ae0f035a6324c71be80224bc8d45b7b5d70b8eb10f4c4af3d7259daa02398124988833bc69354c6a594f6c2de66fa9b89c33f1ecaf08bd38619f308cb17fded97e4b56774daa7d70ec68c0f55c12bae019464e0d63e3f70b96fad1ef1394c4be0ccdc580e998cae94cccff6df8f5476aae72eb631bdb2410e1341f8d9050b20605686c280adec7378f34b5cbc35391e993af8bdde41848242873d67aac8c3bad9f9a217c06b2c994fab4e5a3f7cb375736c2d8534e25223e2e21cf5ad1835fd8161e99bbf73a3b7bfba7de3164a93e018ce82510eb419ebae655de23d4560e188903b6f792d522561240d869767db762fbdee66580973e73537929a981a5845b2ecdf8d98ad9c201b0cadfe6b85867cf48a70ba2d63d0c33a212fe6af3080cb91543d817e417037b7370c08538399bdd8f29e306326e1a78419d81d686b0a6bec36cbface99ecc215c6670ae02796bdd7f3d4bf4acd7fbc840053e406d13f02de1bdd7e2c05f3621dba2ba8e51afb7a725d0e49f0822bd6c93f809f4527546f867f09dce35521634332065f9b9f390511f706a0a04186a98b4aeaf59a13d616d52a573a1821ded30821de9060a2b06010401823703030131821dd930821dd506092a864886f70d010702a0821dc630821dc2020103310d300b06096086480165030402023081e4060b2a864886f70d0109100104a081d40481d13081ce020101060b2b06010401a032020302023031300d060960864801650304020105000420c31dfe28da0fec1c27978e9de02536e788b0d19ac02256b21e763a73fe9cf56702141f548b908eefde916c5b0ad9a3662d9f42cc0e59180f32303236303532383133353033375a3003020101a05da45b3059310b300906035504061302424531193017060355040a1310476c6f62616c5369676e206e762d7361312f302d06035504031326476c6f62616c7369676e205234352054534120666f7220436f64655369676e20323032353130a08219603082068a30820472a00302010202110084723fc195cc16f1db2ba2f660df2be4300d06092a864886f70d01010c0500305e310b300906035504061302424531193017060355040a1310476c6f62616c5369676e206e762d7361313430320603550403132b476c6f62616c5369676e204f66666c696e65205234352054696d657374616d70696e672043412032303235301e170d3235313031353037323530345a170d3337303131303030303030305a3059310b300906035504061302424531193017060355040a1310476c6f62616c5369676e206e762d7361312f302d06035504031326476c6f62616c7369676e205234352054534120666f7220436f64655369676e20323032353130308201a2300d06092a864886f70d01010105000382018f003082018a0282018100d14a8da18d86404828a309049cd913103cf2a88c4ff17f85228dad899ec27b4a7976803a312a343d1dc53aad50fca60cb5b0129d571b4b2c5858de0cd8fcf0368b022ce99cc29f1b21b634a1b0dd51cb346bcdce05abed31431eaa00350c9fdea6a8713fd28939dc33db9a90649140f2b4633bf6741fc3d595ca662003e4e46c0d3f40e98f34d24867a0a35f4b77c097e12f471a897b6104130458ac53e6fd94ed945b0aafc35435c0f685f588554155a069c79ecc2cbd349f21eec74227612ed1af9e0cded3619bbfb499ac69c9315ae75b98d4f1ed4c932ea7f977446a284396307821f6843a1437028e0bb42415b92584f76adbb11792e7a0f2a2ce9d10e654ed6bf81d723006e5e90b95d0bf8e3c1d5228100fa66205925989d12a226db52ac6c4f37a38dd23ecb040b51c5e2968830296b09e3a87ac23954e4056a4fb144058cd6093b7a85fed22d06cf1acd3605af2869a35fa3448bf9a02937de25b8407fc2e135960a6dadc90bcdb4250a9e7a3a0900258a6a62eba2f937ee782214d0203010001a38201c6308201c2300e0603551d0f0101ff04040302078030160603551d250101ff040c300a06082b06010505070308300c0603551d130101ff04023000301d0603551d0e0416041432fad3e1076827906b08d23f1d3c8c6536280619301f0603551d2304183016801477023b01310f1e7477c348c8c307635588a53ba23081a506082b06010505070101048198308195304206082b060105050730018636687474703a2f2f6f6373702e676c6f62616c7369676e2e636f6d2f67736f66666c696e6572343574696d657374616d70636132303235304f06082b060105050730028643687474703a2f2f7365637572652e676c6f62616c7369676e2e636f6d2f6361636572742f67736f66666c696e6572343574696d657374616d706361323032352e637274304a0603551d1f04433041303fa03da03b8639687474703a2f2f63726c2e676c6f62616c7369676e2e636f6d2f67736f66666c696e6572343574696d657374616d706361323032352e63726c30560603551d20044f304d3008060667810c010402304106092b06010401a032011e3034303206082b06010505070201162668747470733a2f2f7777772e676c6f62616c7369676e2e636f6d2f7265706f7369746f72792f300d06092a864886f70d01010c050003820201008eae70a68f4786918a6e9e2cfafd6166f75b3a2a39e190c29895b71fb60a4c06d961cac56788439f06f85cbe8150c3800e1c6f4d455bd9a640676a0e43b751ccdc9836d60455081c05c8fd444fc203c687e5631e4e0f848234b1eceaf0a0eab164353f35bfd672f2ed315f2dd66e837988afd26d398b1aa0ab00626284b2eb7c886f75dc15add072887b5e2f1823ba04fa250a20092a0117626a987d19042979d796ed6d3b9664bad052ce6fbe5da8f7c31d8eef72c894562f33d571491193d77cc41062eb7f0504e02ea377dcc938467277bbc1439af938218702076d9de9c53629828e5c0b1119b07f045f0893513c077f4a9eb2cb20ff65dd7061fbb34011e13c8e27642701ac9838033f5ce071373511420e2684c74f2ff17c54230a8f792825a55cc766a487407cda57bf68153cab639afbe3b03b08871797be7fd9beca1c986f0192a20588577860465f95c8aadc87c82fdf9147aff715cfc9f4fc23c64571a260967b3f5c0e3a061d90c0f68832956106f2e48c7fc42074fe548a2e7a84a057b37e69c225b1a000256cc0cb318491148edc4471073d69f6a59def883adb34bffc82462909b279956d2d31e740e4d8e1fe542894f6cfd7cb381f0bb5b3aed43976221d7362ac8b724c4c99b86b42e21086568ad0f9fba3e890e910f3edf94ec1cec1486cf3b23fcb2263948669015e0e7f5fc937c6d6541dc4766e16ce308206a030820488a00302010202110083da8637b79f0c840c947b840a52781f300d06092a864886f70d01010c05003053310b300906035504061302424531193017060355040a1310476c6f62616c5369676e206e762d73613129302706035504031320476c6f62616c5369676e2054696d657374616d70696e6720526f6f7420523435301e170d3235303731363033303530345a170d3431303731363030303030305a305e310b300906035504061302424531193017060355040a1310476c6f62616c5369676e206e762d7361313430320603550403132b476c6f62616c5369676e204f66666c696e65205234352054696d657374616d70696e67204341203230323530820222300d06092a864886f70d01010105000382020f003082020a0282020100a47716f8ed7d8be2dd0286456334bee57f9662f9d6a05a9701f8abd61ca78544dd1f8456d436fec8e9ab436ef98e5b10e9bce86779cdd023277195f8134421a69e90bf1dbbf9f9697f378c41a703ed5722594885dd32e2bbbc13d9b0424843549f785f18c1b83c9bd816f3b9a380c0d6236f1e11b8a12cdcb6876825f6f873c12355a842c3f34b8b3077adaf8d59eda064149a64aada33116debbeb2ab1ed17109e36c5e11d0e2c6a2fb19b76def53af40e417683f1740f73bbdaccfaa4c1b0f0d55097b1630115534198ec12799945969e2c803c75b45afe00ce4e6dec8d175088c0dfed8e1a4af47550575410f211e18156b61711d85f54bc2e87a1c118915d22b118e4aa06969a13fb804141ee17087e6cbf5e54a3e33bd952968cf039131de77c5242e0fe455b5491ea894249a22bb6767373ece09a94b2883f86704dae7504501db0e2ef87a75e06b3934fa4b691d9d59f284ef49a488444a2f5d22db1f7282f2e148917b9c97b5cf1fb64622b985f5e178ceea28e452149ecbd5eb490ba850f33e4f946cb9a06435023e51450417a169a36f8b11329b1f4e3762977aff8c7cae8e64286a19bace0b6c2fbc0147c8a95365b54776a362bb4bb96b64f50bd7524d19f2d7f8712f07312fd0563f340bc21b22c97a94ccceee0f4943f7e3d831ac54620a154b1a9be31bcf0a256a2cd69b23e5ad8c4cd87d0d0ffbab414c5b0203010001a38201623082015e300e0603551d0f0101ff04040302018630130603551d25040c300a06082b0601050507030830120603551d130101ff040830060101ff020100301d0603551d0e0416041477023b01310f1e7477c348c8c307635588a53ba2301f0603551d2304183016801446b21c77e17b15f0a539a170ded1c42eea6db2de30818e06082b06010505070101048181307f303706082b06010505073001862b687474703a2f2f6f6373702e676c6f62616c7369676e2e636f6d2f74696d657374616d70726f6f74723435304406082b060105050730028638687474703a2f2f7365637572652e676c6f62616c7369676e2e636f6d2f6361636572742f74696d657374616d70726f6f747234352e637274303f0603551d1f043830363034a032a030862e687474703a2f2f63726c2e676c6f62616c7369676e2e636f6d2f74696d657374616d70726f6f747234352e63726c30110603551d20040a300830060604551d2000300d06092a864886f70d01010c0500038202010032a3ee7ed16ee4663196585ea94c3d126847a5f59fffeab9718b55f3a916847d61ad392fde30d32c018de9721867fe9c007e099150ee050e7766b66e97e95bc5f0e40accf988cf11ff00b42e04e98af5d3953560d8e54d2111a1624a73586448de66e1da6c62d785ca4cc5415c17e74858287df267a55cbba1dad04039a1fccba62da32b68db4430976c534b8b998ed71291741d80cc01747f90b4d1be07ddde6c08e07c9e34ef03069330610c79390b58ce19f58fb750eb4ea68d50bb15db0e95d590b5eb686db988bd55b6f8f1100cb8e77e27508341f7084e4627092524cb6dae9f38ad9fff540658475ec162c703313e379a07d10a0d4402e927926321f7889ef3beb1074189d9cfb8b289f791d38fb5f232f2611598ed6c72469445b1e1480a72e34a2c32d75802dfc100cdd837b2de44df778cb0e2741d9353dcb4b2cadc5e0bda79cbbfde01324a58f917e5e77a0e10de324efb700983fe543b99ae4b5cecd69ca1357166728692ff1ad5a91c91d3b04190be8bc032d55cb33005ff4dbe3eaf773ae41edca40b6adcea148a35d4260bd9c5c8ba4d7efcb262f64d8cb6b569fef06e24ae75efcb610b4765d89ca10e4b83159ab482b233399f14ab821135d150d741b11f6bdde586291f16822e20d2b35832eabeef19b9c9b112e7f1a478cd9e74555d7fd9bf9290abca6efcc4283b3e830bbe27e7e3b96d2c2f4f9b20308206a33082048ba0030201020210784aaa8173669c900954e421c947ebc0300d06092a864886f70d01010c0500304c3120301e060355040b1317476c6f62616c5369676e20526f6f74204341202d20523631133011060355040a130a476c6f62616c5369676e311330110603550403130a476c6f62616c5369676e301e170d3230313230393030303030305a170d3334313231303030303030305a3053310b300906035504061302424531193017060355040a1310476c6f62616c5369676e206e762d73613129302706035504031320476c6f62616c5369676e2054696d657374616d70696e6720526f6f742052343530820222300d06092a864886f70d01010105000382020f003082020a0282020100ba7433ec27dc1238211bc5d36128d65abc4fdf8bcc9184432457bc6421bc3b1c1f3d4f8cad07b7f3c5d702e91114829aaab494723b710d1aef686b85798eaf66ea58980dbac17c79d2ffcdb36f3145d005740400726a277eb8373f3a88ed9783f5ab354d0f9f593bf52fdf59c57ca532766096c8edeef8047e195172a8bf44417abc7b1e3b009bbcbae096bf90fe8d9bc3728b0012f8203a6038f7c1cc858afb87792ea12b20e6cba0859123b6c428075428deec10314f8af2cd141f1edd551cea28314cf9216aa8cdf39667fa01419bcd0f0b687fbbdef143ea17e5b0dc7022b3693659746bc6e5892a7ce50b815dab3f8fb8d17672f37ca2a9e29741bfcc8c45fe61c9f66c070b0004e815234f822a2df6efc3fa113648a1d1fd7a393a345da32c0e9b7750203440ddb10331ad5fe9628773960361f794b0d95c6c4fe714c5e1f17b0d239ccd708c1d6ade4a2d8b2abbdb42140507aafb14dc31d3f61f6ccbbe686644704d6d17f971eb05738e919275eb685c1ef64461182962dd176688ec28ba496fdb3e77feb9311f751c18a2a647bdd8ee48853bfdb3e20f3f2a98c69afa826fb1a5a5861d5a3afaa46c740f7752616a7f8729de399b8beeb3456030249715122a85309326ac96a62de8706d0ba932ad2c9b280a7642f25561519894deedf6c5176f3c1510b00eadb0dec516f465d1cc2f5a5608cf99c4f05591c22c790203010001a382017830820174300e0603551d0f0101ff04040302018630130603551d25040c300a06082b06010505070308300f0603551d130101ff040530030101ff301d0603551d0e0416041446b21c77e17b15f0a539a170ded1c42eea6db2de301f0603551d23041830168014ae6c05a39313e2a2e7e2d71cd6c7f07fc86753a0307b06082b06010505070101046f306d302e06082b060105050730018622687474703a2f2f6f637370322e676c6f62616c7369676e2e636f6d2f726f6f747236303b06082b06010505073002862f687474703a2f2f7365637572652e676c6f62616c7369676e2e636f6d2f6361636572742f726f6f742d72362e63727430360603551d1f042f302d302ba029a0278625687474703a2f2f63726c2e676c6f62616c7369676e2e636f6d2f726f6f742d72362e63726c30470603551d200440303e303c0604551d20003034303206082b06010505070201162668747470733a2f2f7777772e676c6f62616c7369676e2e636f6d2f7265706f7369746f72792f300d06092a864886f70d01010c050003820201008b48ba36573c72c5da75f9ef32f586bddc1228e3882e4f365f2699ec0f012110969238c6706b6df3aed40ebd25ef867fe2898d95a57e2944034daa98a8f1b7dcea296321dcedcd880acb1069617929420c23bce9c5ef521e2f3337d54f667a66a9475433b1dd16f2d86471a33194e56ff64d4be2846cd0c925674fc84bd0ce4b05d63dfb7d41fa8ab1c021e07e08b0d9642bf9eaf2c70af4cf2e0c3460ee6cbb92f03ff17b521268775981f51c2ea43a8c39030dede5ccaf66487963d549b8ff4bd2254f484e933b9377b09a486cb6a01db3749e5fbd22043b7c370d85b5c39abbdd9c5a038db40d9f4c7634d585ad457bb59fbb2e89bbacc8bf926348c63fca17aa0dbc00115f8be8e343848a4334cdfd3bc0a27bdb1fb867c88c15de3fa67fc728efa16f6fb241cf0222eb01f84bc8d2766f25df5eda68683d7b4404c2416e493ba7985604edd1262b0494dbe4ed668e3d809da4a45579505ee3f81a1fc0166f90153c8aa648a10c7bba2ae0b1a98705469bed25553d376998ed46999885470a1e62dbfd9ce5c143428ebdcf6ff68c91fd82e49fecade3955505f3492f6d34f7ff67ee9940bbd39a804240da2389601f837192b5e9e6ca0af9ddc76cb258419c668d9b2a6f1f6f5704435c835d3b699cde39fa844d35f37b1b6d8bf16f03c12952e294bf7b548bdf407a0b7002773f2f8807020075d2afc6d6223219a33be8308205833082036ba003020102020e45e6bb038333c3856548e6ff4551300d06092a864886f70d01010c0500304c3120301e060355040b1317476c6f62616c5369676e20526f6f74204341202d20523631133011060355040a130a476c6f62616c5369676e311330110603550403130a476c6f62616c5369676e301e170d3134313231303030303030305a170d3334313231303030303030305a304c3120301e060355040b1317476c6f62616c5369676e20526f6f74204341202d20523631133011060355040a130a476c6f62616c5369676e311330110603550403130a476c6f62616c5369676e30820222300d06092a864886f70d01010105000382020f003082020a02820201009507e873ca66f9ec14ca7b3cf70d08f1b4450b2c82b448c6eb5b3cae83b841923314a46f7fe92accc6b0886bc5b689d1c6b2ff14ce511421ec4add1b5ac6d687ee4d3a1506ed64660b9280ca44de73944ef3a7897f4f786308c812506d42662f4db979284d521a8a1a80b719810e7ec48abc644c211c4368d73d3c8ac5b266d5909ab73106c5bee26d3206a61ef9b9ebaaa3b8bfbe826350d0f01889dfe40f79f5eaa21f2ad2702e7be7bc93bb6d53e2487c8c100738ff66b277617ee0ea8c3caab4a4f6f3954a12076dfd8cb289cfd0a06177c85874b0d4233af75d3acaa2db9d09de5d442d90f181cd5792fa7ebc50046334df6b9318be6b36b239e4ac2436b7f0efb61c135793b6deb2f8e285b773a2b835aa45f2e09d36a16f548af172566e2e88c55142441594eea3c538969b4e4e5a0b47f30636497730bc7137e5a6ec210875fce661163f77d5d99197840a6cd4024d74c014edfd39fb83f25e14a104b00be9feee8fe16e0bb208b36166096ab1063a659659c0f035fdc9da288d1a118770810aa89a751d9e3a8605009edb80d625f9dc059e27594c76395beaf9a5a1d8830fd1ffdf3011f985cf3348f5ca6d64142c7a584fd34b0849c595641a630e793df5b38cca58ad9c4245796e0e87195c54b165b6bf8c9bdc13e90d6fb82edc676ec98b11b584148a0019708379919791d41a27bf371e3207d814633c284caf0203010001a3633061300e0603551d0f0101ff040403020106300f0603551d130101ff040530030101ff301d0603551d0e04160414ae6c05a39313e2a2e7e2d71cd6c7f07fc86753a0301f0603551d23041830168014ae6c05a39313e2a2e7e2d71cd6c7f07fc86753a0300d06092a864886f70d01010c050003820201008325ede8d1fd9552cd9ec004a09169e65cd084dedcada24fe84778d66598a95ba83c877c028ad16eb71673e65fc05498d574bec1cde21191ad23183ddde1724496b4955ec07b8e99781643135657b3a2b33bb577dc4072aca3eb9b353eb10821a1e7c443377932beb5e79c2c4cbc4329998e30d3ac21e0e31dfad80733765400222ab94d202e7068dae553fc835cd39df2ff440c4466f2d2e3bd46001a6d02ba255d8da13151dd54461c4ddb9996ef1a1c045ca615ef78e079fe5ddb3eaa4c55fd9a15a96fe1a6fbdf7030e9c3ee4246edc2930589fa7d637b3fd071817c00e898ae0e7834c325fbaf0a9f206bdd3b138f128ce2411a487a73a07769c7b65c7f82c81efe581b282ba86cad5e6dc005d27bb7eb80fe2537fe029b68ac425dc3eef5ccdcf05075d236699ce67b04df6e0669b6de0a09485987eb7b14607a64aa6943ef91c74cec18dd6cef532d8c99e15ef2723ecf54c8bd67eca40f4c45ffd3b93023074c8f10bf8696d9995ab499571ca4ccbb158953ba2c050fe4c49e19b11834d54c9dbaedf71faf24950478a803bbee81e5da5f7c8b4aa1907425a7b33e4bc82c56bdc7c8ef38e25c92f079f79c84ba742d6101207e7ed1f24f07595f8b2d4352eb460c94e1f566477977d5545b1fad2437cb455a4ea04448c8d8b099c5158409f6d64949c065b8e61a716ea0a8f182e8453e6cd602d70a6783055ac9a410318203613082035d0201013073305e310b300906035504061302424531193017060355040a1310476c6f62616c5369676e206e762d7361313430320603550403132b476c6f62616c5369676e204f66666c696e65205234352054696d657374616d70696e67204341203230323502110084723fc195cc16f1db2ba2f660df2be4300b0609608648016503040202a0820141301a06092a864886f70d010903310d060b2a864886f70d0109100104302b06092a864886f70d010934311e301c300b0609608648016503040202a10d06092a864886f70d01010c0500303f06092a864886f70d01090431320430f4249fc98bdee3b523c7c7bc31bfb3f497018f84010b9c434038acb16e002a76c19d33c14cd790302d0241137e18d7513081b4060b2a864886f70d010910022f3181a43081a130819e30819b0420832ad72e523fdeac83fa4694bce7c6cc261764882866566588c8adca3a83855130773062a460305e310b300906035504061302424531193017060355040a1310476c6f62616c5369676e206e762d7361313430320603550403132b476c6f62616c5369676e204f66666c696e65205234352054696d657374616d70696e67204341203230323502110084723fc195cc16f1db2ba2f660df2be4300d06092a864886f70d01010c050004820180b839568214177e602b00a2cc2be16fd2ed2c1fe62e3d50a6f5d8670b69ed51d0ed4e1004493df8db4792361ff10c44bd6bbbfedd227de89ad3e16ebf99a84934ca7e2c8921a7fbb1f3dbb6d6b14f0bc4738e02f6f7bc65e881d9506c70526cc8fda495bda4fd2c2116fc6951796289d717a8bc427ed85bd4c482d1913e4b997b1691d37a1d90946425b8009615522f7d41700721fbdcf3b6cf78447caffaf7dbfa31c3b1d6ba8cec11bf36c61d60671363cf63a3fe1f394c5e9dcca91c1c0365a28b65b7527543b4edb4f1e8f4d23019e0c1b0d80b80e85ddc20377580e36cfe0f63f20007d29967e900c16e724e6a27f1721d8760833dcb0af928793b41d4ef276303063602f28764c7d791de7d2f283bb8c84730efbe7dd6ef38429522415084c3796d78592ddbe12c05ce4342dc8055cf4c71e6c9f901200d57ae644f59a6eb5c0d5bc9c61ad0d26e274a0af25f211985b89ac39868900c13ee409f3d330fe8f8c04513bfaa97c1694d3dfde64a04745f79725f0696f03c3d37979a16f15f

code:

fn parse_signed_data(raw: &[u8]) {
    let ci = ContentInfo::from_der(raw).expect("invalid");
    let signed = ci.content.decode_as::<SignedData>().expect("no SignedData");

    println!("version: {:?}", signed.version);

    if let Some(certs) = &signed.certificates {
        println!("certs: {}", certs.0.len()); // теперь просто Vec
    }

    for (i, signer) in signed.signer_infos.0.iter().enumerate() {
        println!(
            "sig #{}: id {:?}, sig_len {}",
            i + 1,
            signer.sid,
            signer.signature.len()
        );
    }
}

error:
no SignedData: Error { kind: SetDuplicate, position: None }

osslsigncode verify -in msi/31e63c5bc7d81dc94dd868b254c468aff91f59a3b5a9574e6327df6d1310b438e1f2182b1dd36197e795541a6a15fdddbdb080bc4a15088b935b62fe1d54624c.msi

Warning: MsiDigitalSignatureEx stream doesn't exist

Signature Index: 0  (Primary Signature)

Message digest algorithm         : SHA256
Current DigitalSignature         : B26CA9B8BDEE8BA47929EC68847B1EA8EFEA0AC9C0CBB334293D0D9C587F28FD 
Calculated DigitalSignature      : B26CA9B8BDEE8BA47929EC68847B1EA8EFEA0AC9C0CBB334293D0D9C587F28FD 
Calculated message digest        : 74F8E96E1BDA87060AC832B813A6840C0CF66C15575ECA24774195006FEE88BA 

Signer's certificate:
	------------------
	Signer #0:
		Subject: CN=COMMUNICATION PLATFORM LLC,O=COMMUNICATION PLATFORM LLC,street=Leningradsky ave\, 39 / building 79,L=Moscow,ST=Moscow,C=RU,jurisdictionST=Moscow,jurisdictionC=RU,serialNumber=1247700595230,businessCategory=Private Organization
		Issuer : CN=GlobalSign GCC R45 EV CodeSigning CA 2020,O=GlobalSign nv-sa,C=BE
		Serial : 59963EA276E894ABB274D1D9
		Certificate expiration date:
			notBefore : Sep 11 14:12:29 2025 GMT
			notAfter : Sep 11 14:12:29 2028 GMT

Message digest algorithm: SHA256

Authenticated attributes:
	Text description: MAX
	Signing time: May 28 13:50:31 2026 GMT
	Microsoft Individual Code Signing purpose
	Message digest: 895FFC14560F6EFDC47F51625435CCE6DA832818E80F842395A7118445557F2E 

Countersignatures:
	Timestamp time: May 28 13:50:37 2026 GMT
	Signing time: N/A
	Hash Algorithm: sha384
	Issuer: CN=GlobalSign Offline R45 Timestamping CA 2025,O=GlobalSign nv-sa,C=BE
	Serial: 84723FC195CC16F1DB2BA2F660DF2BE4

CAfile: /etc/ssl/certs/ca-certificates.crt
TSA's certificates file: /etc/ssl/certs/ca-certificates.crt

Timestamp verified using:
	------------------
	Signer #3:
		Subject: CN=GlobalSign,O=GlobalSign,OU=GlobalSign Root CA - R6
		Issuer : CN=GlobalSign,O=GlobalSign,OU=GlobalSign Root CA - R6
		Serial : 45E6BB038333C3856548E6FF4551
		Certificate expiration date:
			notBefore : Dec 10 00:00:00 2014 GMT
			notAfter : Dec 10 00:00:00 2034 GMT

	------------------
	Signer #2:
		Subject: CN=GlobalSign Timestamping Root R45,O=GlobalSign nv-sa,C=BE
		Issuer : CN=GlobalSign,O=GlobalSign,OU=GlobalSign Root CA - R6
		Serial : 784AAA8173669C900954E421C947EBC0
		Certificate expiration date:
			notBefore : Dec  9 00:00:00 2020 GMT
			notAfter : Dec 10 00:00:00 2034 GMT

	------------------
	Signer #1:
		Subject: CN=GlobalSign Offline R45 Timestamping CA 2025,O=GlobalSign nv-sa,C=BE
		Issuer : CN=GlobalSign Timestamping Root R45,O=GlobalSign nv-sa,C=BE
		Serial : 83DA8637B79F0C840C947B840A52781F
		Certificate expiration date:
			notBefore : Jul 16 03:05:04 2025 GMT
			notAfter : Jul 16 00:00:00 2041 GMT

	------------------
	Signer #0:
		Subject: CN=Globalsign R45 TSA for CodeSign 202510,O=GlobalSign nv-sa,C=BE
		Issuer : CN=GlobalSign Offline R45 Timestamping CA 2025,O=GlobalSign nv-sa,C=BE
		Serial : 84723FC195CC16F1DB2BA2F660DF2BE4
		Certificate expiration date:
			notBefore : Oct 15 07:25:04 2025 GMT
			notAfter : Jan 10 00:00:00 2037 GMT

TSA's CRL distribution point: http://crl.globalsign.com/gsoffliner45timestampca2025.crl
Connecting to http://crl.globalsign.com/gsoffliner45timestampca2025.crl

Certificate Revocation List verified using:
	------------------
	Signer #3:
		Subject: CN=GlobalSign,O=GlobalSign,OU=GlobalSign Root CA - R6
		Issuer : CN=GlobalSign,O=GlobalSign,OU=GlobalSign Root CA - R6
		Serial : 45E6BB038333C3856548E6FF4551
		Certificate expiration date:
			notBefore : Dec 10 00:00:00 2014 GMT
			notAfter : Dec 10 00:00:00 2034 GMT

	------------------
	Signer #2:
		Subject: CN=GlobalSign Timestamping Root R45,O=GlobalSign nv-sa,C=BE
		Issuer : CN=GlobalSign,O=GlobalSign,OU=GlobalSign Root CA - R6
		Serial : 784AAA8173669C900954E421C947EBC0
		Certificate expiration date:
			notBefore : Dec  9 00:00:00 2020 GMT
			notAfter : Dec 10 00:00:00 2034 GMT

	------------------
	Signer #1:
		Subject: CN=GlobalSign Offline R45 Timestamping CA 2025,O=GlobalSign nv-sa,C=BE
		Issuer : CN=GlobalSign Timestamping Root R45,O=GlobalSign nv-sa,C=BE
		Serial : 83DA8637B79F0C840C947B840A52781F
		Certificate expiration date:
			notBefore : Jul 16 03:05:04 2025 GMT
			notAfter : Jul 16 00:00:00 2041 GMT

	------------------
	Signer #0:
		Subject: CN=Globalsign R45 TSA for CodeSign 202510,O=GlobalSign nv-sa,C=BE
		Issuer : CN=GlobalSign Offline R45 Timestamping CA 2025,O=GlobalSign nv-sa,C=BE
		Serial : 84723FC195CC16F1DB2BA2F660DF2BE4
		Certificate expiration date:
			notBefore : Oct 15 07:25:04 2025 GMT
			notAfter : Jan 10 00:00:00 2037 GMT

Timestamp Server Signature CRL verification: ok
Timestamp serial number: 1F548B908EEFDE916C5B0AD9A3662D9F42CC0E59

Timestamp Server Signature verification: ok
Signature verification time: May 28 13:50:37 2026 GMT
Signing certificate chain verified using:
	------------------
	Signer #0:
		Subject: CN=COMMUNICATION PLATFORM LLC,O=COMMUNICATION PLATFORM LLC,street=Leningradsky ave\, 39 / building 79,L=Moscow,ST=Moscow,C=RU,jurisdictionST=Moscow,jurisdictionC=RU,serialNumber=1247700595230,businessCategory=Private Organization
		Issuer : CN=GlobalSign GCC R45 EV CodeSigning CA 2020,O=GlobalSign nv-sa,C=BE
		Serial : 59963EA276E894ABB274D1D9
		Certificate expiration date:
			notBefore : Sep 11 14:12:29 2025 GMT
			notAfter : Sep 11 14:12:29 2028 GMT

	Error: unable to get local issuer certificate

PKCS7_verify error
Failed signing certificate chain retrieved from the signature:
	------------------
	Signer #0:
		Subject: CN=COMMUNICATION PLATFORM LLC,O=COMMUNICATION PLATFORM LLC,street=Leningradsky ave\, 39 / building 79,L=Moscow,ST=Moscow,C=RU,jurisdictionST=Moscow,jurisdictionC=RU,serialNumber=1247700595230,businessCategory=Private Organization
		Issuer : CN=GlobalSign GCC R45 EV CodeSigning CA 2020,O=GlobalSign nv-sa,C=BE
		Serial : 59963EA276E894ABB274D1D9
		Certificate expiration date:
			notBefore : Sep 11 14:12:29 2025 GMT
			notAfter : Sep 11 14:12:29 2028 GMT

	------------------
	Signer #1:
		Subject: CN=COMMUNICATION PLATFORM LLC,O=COMMUNICATION PLATFORM LLC,street=Leningradsky ave\, 39 / building 79,L=Moscow,ST=Moscow,C=RU,jurisdictionST=Moscow,jurisdictionC=RU,serialNumber=1247700595230,businessCategory=Private Organization
		Issuer : CN=GlobalSign GCC R45 EV CodeSigning CA 2020,O=GlobalSign nv-sa,C=BE
		Serial : 59963EA276E894ABB274D1D9
		Certificate expiration date:
			notBefore : Sep 11 14:12:29 2025 GMT
			notAfter : Sep 11 14:12:29 2028 GMT

00327FFFE97F0000:error:10800075:PKCS7 routines:PKCS7_verify:certificate verify error:crypto/pkcs7/pk7_smime.c:298:Verify error: unable to get local issuer certificate
Signature verification: failed

Number of verified signatures: 1
Failed

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions