我需要帮助从C ++的特定文件中提取X.509证书。 我想从'addressbook.acrodata'文件中提取X.509证书,该文件附带Adobe Acrobat Reader DC,并包含Adobe受信任的Root-CA-Certificates。
我用这种方式用C ++尝试过。我只读取证书存储在文件中的特定字节范围。整个文件包含更多信息。证书数据作为DER编码字符串存储在那里。
ifstream input(addressbook.acrodata, ios::binary);
if (input) {
input.seekg (0, input.end);
int length = input.tellg();
input.seekg (STARTPOSITION, input.beg);
char * buffer = new char [length];
input.read (buffer,ENDPOSITION);
input.close();
cout << buffer; // for testing only
}
但我没有得到我期望的结果。当我使用十六进制编辑器打开原始文件'adedressbook.acrodata'时,我看到存储证书的条目上出现了一些字符(\r
,\n
和\\
)它没有出现在我通过Adobe Reader DC界面提取的提取证书中。这个提取的我可以在我的Windows机器上使用Windows CertManager,但是用C ++提取的on i包含这些字符,当我尝试在带有CertManager的Windows中打开它时,我得到的消息是它没有有效的证书。
以下是Adobe Reader中提取的证书的Hex-Dumps,第二个是'adedressbook.acrodata'特定代码的Hex-Dump,它与我在C ++中读取的内容相同
Offset(h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
00000000 30 82 04 A1 30 82 03 89 A0 03 02 01 02 02 04 3E 0‚.¡0‚.‰ ......>
00000010 1C BD 28 30 0D 06 09 2A 86 48 86 F7 0D 01 01 05 .½(0...*†H†÷....
00000020 05 00 30 69 31 0B 30 09 06 03 55 04 06 13 02 55 ..0i1.0...U....U
00000030 53 31 23 30 21 06 03 55 04 0D 13 1A 41 64 6F 62 S1#0!..U....Adob
00000040 65 20 53 79 73 74 65 6D 73 20 49 6E 63 6F 72 70 e Systems Incorp
00000050 6F 72 61 74 65 64 31 1D 30 1B 06 03 55 04 0B 13 orated1.0...U...
00000060 14 41 64 6F 62 65 20 54 72 75 73 74 20 53 65 72 .Adobe Trust Ser
00000070 76 69 63 65 73 31 16 30 14 06 03 55 04 03 13 0D vices1.0...U....
00000080 41 64 6F 62 65 20 52 6F 6F 74 20 43 41 30 1E 17 Adobe Root CA0..
00000090 0D 30 33 30 31 30 38 32 33 33 37 32 33 5A 17 0D .030108233723Z..
000000A0 32 33 30 31 30 39 30 30 30 37 32 33 5A 30 69 31 230109000723Z0i1
000000B0 0B 30 09 06 03 55 04 06 13 02 55 53 31 23 30 21 .0...U....US1#0!
000000C0 06 03 55 04 0D 13 1A 41 64 6F 62 65 20 53 79 73 ..U....Adobe Sys
000000D0 74 65 6D 73 20 49 6E 63 6F 72 70 6F 72 61 74 65 tems Incorporate
000000E0 64 31 1D 30 1B 06 03 55 04 0B 13 14 41 64 6F 62 d1.0...U....Adob
000000F0 65 20 54 72 75 73 74 20 53 65 72 76 69 63 65 73 e Trust Services
00000100 31 16 30 14 06 03 55 04 03 13 0D 41 64 6F 62 65 1.0...U....Adobe
00000110 20 52 6F 6F 74 20 43 41 30 82 01 22 30 0D 06 09 Root CA0‚."0...
00000120 2A 86 48 86 F7 0D 01 01 01 05 00 03 82 01 0F 00 *†H†÷.......‚...
00000130 30 82 01 0D 02 82 01 01 00 CC 4F 54 84 F7 A7 A2 0‚...‚...ÌOT„÷§¢
00000140 E7 33 53 7F 3F 9C 12 88 6B 2C 99 47 67 7E 0F 1E ç3S.?œ.ˆk,™Gg~..
00000150 B9 AD 14 88 F9 C3 10 D8 1D F0 F0 D5 9F 69 0D 2F ¹..ˆùÃ.Ø.ððÕŸi./
00000160 59 35 B0 CC 6C A9 4C 9C 15 A0 9F CE 20 BF A0 CF Y5°Ìl©Lœ. ŸÎ ¿ Ï
00000170 54 E2 E0 20 66 45 3F 39 86 38 7E 9C C4 8E 07 22 Tâà fE?9†8~œÄŽ."
00000180 C6 24 F6 01 12 B0 35 DF 55 EA 69 90 B0 DB 85 37 Æ$ö..°5ßUêi.°Û…7
00000190 1E E2 4E 07 B2 42 A1 6A 13 69 A0 66 EA 80 91 11 .âN.²B¡j.i fꀑ.
000001A0 59 2A 9B 08 79 5A 20 44 2D C9 BD 73 38 8B 3C 2F Y*›.yZ D-ɽs8‹</
000001B0 E0 43 1B 5D B3 0B F0 AF 35 1A 29 FE EF A6 92 DD àC.]³.ð¯5.)þ漣Ý
000001C0 81 4C 9D 3D 59 8E AD 31 3C 40 7E 9B 91 36 06 FC .L.=YŽ.1<@~›‘6.ü
000001D0 E2 5C 8D D1 8D 26 D5 5C 45 CF AF 65 3F B1 AA D2 â\.Ñ.&Õ\Eϯe?±ªÒ
000001E0 62 96 F4 A8 38 EA BA 60 42 F4 F4 1C 4A 35 15 CE b–ô¨8êº`Bôô.J5.Î
000001F0 F8 4E 22 56 0F 95 18 C5 F8 96 9F 9F FB B0 B7 78 øN"V.•.Åø–ŸŸû°·x
00000200 25 E9 80 6B BD D6 0D F0 C6 74 94 9D F3 0F 50 DB %é€k½Ö.ðÆt”.ó.PÛ
00000210 9A 77 CE 4B 70 83 23 8D A0 CA 78 20 44 5C 3C 54 šwÎKpƒ#. Êx D\<T
00000220 64 F1 EA A2 30 19 9F EA 4C 06 4D 06 78 4B 5E 92 dñê¢0.ŸêL.M.xK^’
00000230 DF 22 D2 C9 67 B3 7A D2 01 02 03 01 00 01 A3 82 ß"ÒÉg³zÒ......£‚
00000240 01 4F 30 82 01 4B 30 11 06 09 60 86 48 01 86 F8 .O0‚.K0...`†H.†ø
00000250 42 01 01 04 04 03 02 00 07 30 81 8E 06 03 55 1D B........0.Ž..U.
00000260 1F 04 81 86 30 81 83 30 81 80 A0 7E A0 7C A4 7A ...†0.ƒ0.€ ~ |¤z
00000270 30 78 31 0B 30 09 06 03 55 04 06 13 02 55 53 31 0x1.0...U....US1
00000280 23 30 21 06 03 55 04 0D 13 1A 41 64 6F 62 65 20 #0!..U....Adobe
00000290 53 79 73 74 65 6D 73 20 49 6E 63 6F 72 70 6F 72 Systems Incorpor
000002A0 61 74 65 64 31 1D 30 1B 06 03 55 04 0B 13 14 41 ated1.0...U....A
000002B0 64 6F 62 65 20 54 72 75 73 74 20 53 65 72 76 69 dobe Trust Servi
000002C0 63 65 73 31 16 30 14 06 03 55 04 03 13 0D 41 64 ces1.0...U....Ad
000002D0 6F 62 65 20 52 6F 6F 74 20 43 41 31 0D 30 0B 06 obe Root CA1.0..
000002E0 03 55 04 03 13 04 43 52 4C 31 30 2B 06 03 55 1D .U....CRL10+..U.
000002F0 10 04 24 30 22 80 0F 32 30 30 33 30 31 30 38 32 ..$0"€.200301082
00000300 33 33 37 32 33 5A 81 0F 32 30 32 33 30 31 30 39 33723Z..20230109
00000310 30 30 30 37 32 33 5A 30 0B 06 03 55 1D 0F 04 04 000723Z0...U....
00000320 03 02 01 06 30 1F 06 03 55 1D 23 04 18 30 16 80 ....0...U.#..0.€
00000330 14 82 B7 38 4A 93 AA 9B 10 EF 80 BB D9 54 E2 F1 .‚·8J“ª›.ÙTâñ
00000340 0F FB 80 9C DE 30 1D 06 03 55 1D 0E 04 16 04 14 .û€œÞ0...U......
00000350 82 B7 38 4A 93 AA 9B 10 EF 80 BB D9 54 E2 F1 0F ‚·8J“ª›.ÙTâñ.
00000360 FB 80 9C DE 30 0C 06 03 55 1D 13 04 05 30 03 01 û€œÞ0...U....0..
00000370 01 FF 30 1D 06 09 2A 86 48 86 F6 7D 07 41 00 04 .ÿ0...*†H†ö}.A..
00000380 10 30 0E 1B 08 56 36 2E 30 3A 34 2E 30 03 02 04 .0...V6.0:4.0...
00000390 90 30 0D 06 09 2A 86 48 86 F7 0D 01 01 05 05 00 .0...*†H†÷......
000003A0 03 82 01 01 00 32 DA 9F 43 75 C1 FA 6F C9 6F DB .‚...2ÚŸCuÁúoÉoÛ
000003B0 AB 1D 36 37 3E BC 61 19 36 B7 02 3C 1D 23 59 98 «.67>¼a.6·.<.#Y˜
000003C0 6C 9E EE 4D 85 E7 54 C8 20 1F A7 D4 BB E2 BF 00 lžîM…çTÈ .§Ô»â¿.
000003D0 77 7D 24 6B 70 2F 5C C1 3A 76 49 B5 D3 E0 23 84 w}$kp/\Á:vIµÓà#„
000003E0 2A 71 6A 22 F3 C1 27 29 98 15 F6 35 90 E4 04 4C *qj"óÁ')˜.ö5.ä.L
000003F0 C3 8D BC 9F 61 1C E7 FD 24 8C D1 44 43 8C 16 BA Ã.¼Ÿa.çý$ŒÑDCŒ.º
00000400 9B 4D A5 D4 35 2F BC 11 CE BD F7 51 37 8D 9F 90 ›M¥Ô5/¼.ν÷Q7.Ÿ.
00000410 E4 14 F1 18 3F BE E9 59 12 35 F9 33 92 F3 9E E0 ä.ñ.?¾éY.5ù3’óžà
00000420 D5 6B 9A 71 9B 99 4B C8 71 C3 E1 B1 61 09 C4 E5 Õkšq›™KÈqÃá±a.Äå
00000430 FA 91 F0 42 3A 37 7D 34 F9 72 E8 CD AA 62 1C 21 ú‘ðB:7}4ùrèͪb.!
00000440 E9 D5 F4 82 10 E3 7B 05 B6 2D 68 56 0B 7E 7E 92 éÕô‚.ã{.¶-hV.~~’
00000450 2C 6F 4D 72 82 0C ED 56 74 B2 9D B9 AB 2D 2B 1D ,oMr‚.íVt².¹«-+.
00000460 10 5F DB 27 75 70 8F FD 1D D7 E2 02 A0 79 E5 1C ._Û'up.ý.×â. yå.
00000470 E5 FF AF 64 40 51 2D 9E 9B 47 DB 42 A5 7C 1F C2 åÿ¯d@Q-ž›GÛB¥|.Â
00000480 A6 48 B0 D7 BE 92 69 4D A4 F6 29 57 C5 78 11 18 ¦H°×¾’iM¤ö)WÅx..
00000490 DC 87 51 CA 13 B2 62 9D 4F 2B 32 BD 31 A5 C1 FA ܇QÊ.²b.O+2½1¥Áú
000004A0 52 AB 05 88 C8 R«.ˆÈ
Offset(h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
00003080 30 82 04 A1 0‚.¡
00003090 30 82 03 89 A0 03 02 01 02 02 04 3E 1C BD 5C 28 0‚.‰ ......>.½\(
000030A0 30 5C 72 06 09 2A 86 48 86 F7 5C 72 01 01 05 05 0\r..*†H†÷\r....
000030B0 00 30 69 31 0B 30 09 06 03 55 04 06 13 02 55 53 .0i1.0...U....US
000030C0 31 23 30 21 06 03 55 04 5C 6E 13 1A 41 64 6F 62 1#0!..U.\n..Adob
000030D0 65 20 53 79 73 74 65 6D 73 20 49 6E 63 6F 72 70 e Systems Incorp
000030E0 6F 72 61 74 65 64 31 1D 30 1B 06 03 55 04 0B 13 orated1.0...U...
000030F0 14 41 64 6F 62 65 20 54 72 75 73 74 20 53 65 72 .Adobe Trust Ser
00003100 76 69 63 65 73 31 16 30 14 06 03 55 04 03 13 5C vices1.0...U...\
00003110 72 41 64 6F 62 65 20 52 6F 6F 74 20 43 41 30 1E rAdobe Root CA0.
00003120 17 5C 72 30 33 30 31 30 38 32 33 33 37 32 33 5A .\r030108233723Z
00003130 17 5C 72 32 33 30 31 30 39 30 30 30 37 32 33 5A .\r230109000723Z
00003140 30 69 31 0B 30 09 06 03 55 04 06 13 02 55 53 31 0i1.0...U....US1
00003150 23 30 21 06 03 55 04 5C 6E 13 1A 41 64 6F 62 65 #0!..U.\n..Adobe
00003160 20 53 79 73 74 65 6D 73 20 49 6E 63 6F 72 70 6F Systems Incorpo
00003170 72 61 74 65 64 31 1D 30 1B 06 03 55 04 0B 13 14 rated1.0...U....
00003180 41 64 6F 62 65 20 54 72 75 73 74 5C 0D 20 53 65 Adobe Trust\. Se
00003190 72 76 69 63 65 73 31 16 30 14 06 03 55 04 03 13 rvices1.0...U...
000031A0 5C 72 41 64 6F 62 65 20 52 6F 6F 74 20 43 41 30 \rAdobe Root CA0
000031B0 82 01 22 30 5C 72 06 09 2A 86 48 86 F7 5C 72 01 ‚."0\r..*†H†÷\r.
000031C0 01 01 05 00 03 82 01 0F 00 30 82 01 5C 6E 02 82 .....‚...0‚.\n.‚
000031D0 01 01 00 CC 4F 54 84 F7 A7 A2 E7 33 53 7F 3F 9C ...ÌOT„÷§¢ç3S.?œ
000031E0 12 88 6B 2C 99 47 67 7E 0F 1E B9 AD 14 88 F9 C3 .ˆk,™Gg~..¹..ˆùÃ
000031F0 10 D8 1D F0 F0 D5 9F 69 5C 6E 2F 59 35 B0 CC 6C .Ø.ððÕŸi\n/Y5°Ìl
00003200 A9 4C 9C 15 A0 9F CE 20 BF A0 CF 54 E2 E0 20 66 ©Lœ. ŸÎ ¿ ÏTâà f
00003210 45 3F 39 86 38 7E 9C C4 8E 07 22 C6 24 F6 01 12 E?9†8~œÄŽ."Æ$ö..
00003220 B0 35 DF 55 EA 69 90 B0 DB 85 37 1E E2 4E 07 B2 °5ßUêi.°Û…7.âN.²
00003230 42 A1 6A 13 69 A0 66 EA 80 91 11 59 2A 9B 08 79 B¡j.i fꀑ.Y*›.y
00003240 5A 20 44 2D C9 BD 73 38 8B 3C 2F E0 43 1B 5D B3 Z D-ɽs8‹</àC.]³
00003250 0B F0 AF 35 1A 5C 29 FE EF A6 92 DD 81 4C 9D 3D .ð¯5.\)þ漣Ý.L.=
00003260 59 8E AD 31 3C 40 7E 9B 91 36 06 FC E2 5C 5C 8D YŽ.1<@~›‘6.üâ\\.
00003270 D1 8D 26 D5 5C 5C 45 CF AF 65 3F B1 AA D2 62 96 Ñ.&Õ\\Eϯe?±ªÒb–
00003280 F4 A8 38 EA BA 60 42 F4 F4 1C 4A 35 5C 0D 15 CE ô¨8êº`Bôô.J5\..Î
00003290 F8 4E 22 56 0F 95 18 C5 F8 96 9F 9F FB B0 B7 78 øN"V.•.Åø–ŸŸû°·x
000032A0 25 E9 80 6B BD D6 5C 6E F0 C6 74 94 9D F3 0F 50 %é€k½Ö\nðÆt”.ó.P
000032B0 DB 9A 77 CE 4B 70 83 23 8D A0 CA 78 20 44 5C 5C ÛšwÎKpƒ#. Êx D\\
000032C0 3C 54 64 F1 EA A2 30 19 9F EA 4C 06 4D 06 78 4B <Tdñê¢0.ŸêL.M.xK
000032D0 5E 92 DF 22 D2 C9 67 B3 7A D2 01 02 03 01 00 01 ^’ß"ÒÉg³zÒ......
000032E0 A3 82 01 4F 30 82 01 4B 30 11 06 09 60 86 48 01 £‚.O0‚.K0...`†H.
000032F0 86 F8 42 01 01 04 04 03 02 00 07 30 81 8E 06 03 †øB........0.Ž..
00003300 55 1D 1F 04 81 86 30 81 83 30 81 80 A0 7E A0 7C U....†0.ƒ0.€ ~ |
00003310 A4 7A 30 78 31 0B 30 09 06 03 55 04 06 13 02 55 ¤z0x1.0...U....U
00003320 53 31 23 30 21 06 03 55 04 5C 6E 13 1A 41 64 6F S1#0!..U.\n..Ado
00003330 62 65 20 53 79 73 74 65 6D 73 20 49 6E 63 6F 72 be Systems Incor
00003340 70 6F 72 61 74 65 64 31 1D 30 1B 06 03 55 04 0B porated1.0...U..
00003350 13 14 41 64 6F 62 65 20 54 72 75 73 74 20 53 65 ..Adobe Trust Se
00003360 72 76 69 63 65 73 31 16 30 14 06 03 55 04 03 13 rvices1.0...U...
00003370 5C 72 41 64 6F 62 65 20 52 6F 6F 74 20 43 41 31 \rAdobe Root CA1
00003380 5C 72 30 0B 06 03 55 04 03 13 04 43 52 5C 0D 4C \r0...U....CR\.L
00003390 31 30 2B 06 03 55 1D 10 04 24 30 22 80 0F 32 30 10+..U...$0"€.20
000033A0 30 33 30 31 30 38 32 33 33 37 32 33 5A 81 0F 32 030108233723Z..2
000033B0 30 32 33 30 31 30 39 30 30 30 37 32 33 5A 30 0B 0230109000723Z0.
000033C0 06 03 55 1D 0F 04 04 03 02 01 06 30 1F 06 03 55 ..U........0...U
000033D0 1D 23 04 18 30 16 80 14 82 B7 38 4A 93 AA 9B 10 .#..0.€.‚·8J“ª›.
000033E0 EF 80 BB D9 54 E2 F1 0F FB 80 9C DE 30 1D 06 03 ÙTâñ.û€œÞ0...
000033F0 55 1D 0E 04 16 04 14 82 B7 38 4A 93 AA 9B 10 EF U......‚·8J“ª›.ï
00003400 80 BB D9 54 E2 F1 0F FB 80 9C DE 30 0C 06 03 55 €»ÙTâñ.û€œÞ0...U
00003410 1D 13 04 05 30 03 01 01 FF 30 1D 06 09 2A 86 48 ....0...ÿ0...*†H
00003420 86 F6 7D 07 41 00 04 10 30 0E 1B 08 56 36 2E 30 †ö}.A...0...V6.0
00003430 3A 34 2E 30 03 02 04 90 30 5C 72 06 09 2A 86 48 :4.0....0\r..*†H
00003440 86 F7 5C 72 01 01 05 05 00 03 82 01 01 00 32 DA †÷\r......‚...2Ú
00003450 9F 43 75 C1 FA 6F C9 6F DB AB 1D 36 37 3E BC 61 ŸCuÁúoÉoÛ«.67>¼a
00003460 19 36 B7 02 3C 1D 23 59 98 6C 9E EE 4D 85 E7 54 .6·.<.#Y˜lžîM…çT
00003470 C8 20 1F A7 D4 BB E2 BF 00 77 7D 24 6B 70 2F 5C È .§Ô»â¿.w}$kp/\
00003480 5C C1 3A 76 49 B5 D3 E0 23 84 2A 71 6A 22 5C 0D \Á:vIµÓà#„*qj"\.
00003490 F3 C1 27 5C 29 98 15 F6 35 90 E4 04 4C C3 8D BC óÁ'\)˜.ö5.ä.LÃ.¼
000034A0 9F 61 1C E7 FD 24 8C D1 44 43 8C 16 BA 9B 4D A5 Ÿa.çý$ŒÑDCŒ.º›M¥
000034B0 D4 35 2F BC 11 CE BD F7 51 37 8D 9F 90 E4 14 F1 Ô5/¼.ν÷Q7.Ÿ.ä.ñ
000034C0 18 3F BE E9 59 12 35 F9 33 92 F3 9E E0 D5 6B 9A .?¾éY.5ù3’óžàÕkš
000034D0 71 9B 99 4B C8 71 C3 E1 B1 61 09 C4 E5 FA 91 F0 q›™KÈqÃá±a.Äåú‘ð
000034E0 42 3A 37 7D 34 F9 72 E8 CD AA 62 1C 21 E9 D5 F4 B:7}4ùrèͪb.!éÕô
000034F0 82 10 E3 7B 05 B6 2D 68 56 0B 7E 7E 92 2C 6F 4D ‚.ã{.¶-hV.~~’,oM
00003500 72 82 0C ED 56 74 B2 9D B9 AB 2D 2B 1D 10 5F DB r‚.íVt².¹«-+.._Û
00003510 27 75 70 8F FD 1D D7 E2 02 A0 79 E5 1C E5 FF AF 'up.ý.×â. yå.åÿ¯
00003520 64 40 51 2D 9E 9B 47 DB 42 A5 7C 1F C2 A6 48 B0 d@Q-ž›GÛB¥|.¦H°
00003530 D7 BE 92 69 4D A4 F6 5C 29 57 C5 78 11 18 DC 87 ×¾’iM¤ö\)WÅx..܇
00003540 51 CA 13 B2 62 9D 4F 2B 32 BD 31 A5 C1 FA 52 AB QÊ.²b.O+2½1¥ÁúR«
00003550 05 88 C8 .ˆÈ
以下是我对出现的角色的意思的两个例子:
第二个转储中的第3行:5C 72
(\r
)而不是0D
(.
)在第二个转储中的第一个转储行2中:5C
( \
)而不是frist dump中的任何内容
问题出在哪里或者我错了什么?为什么通过Adobe Reader Interface在工作导出的证书文件中没有\n
和\r
个字符,但在'adedressbook.acrodata'或我的读取文件中?
答案 0 :(得分:1)
您错误地认为证书等二进制数据存储在&#34;&#34;&#34;在PDF流中。显然,证书存储为文字字符串并包含转义序列:括号,CR,LF,反斜杠以及使用反斜杠转义的其他内容。要检索证书,您需要实现基本的PDF流解析器以去除那些反斜杠序列。