如何使用C ++从特定文件中提取X.509-Certificate(DER-Encoded)?

时间:2016-07-06 19:59:09

标签: c++ file certificate x509 acrobat

我需要帮助从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'或我的读取文件中?

1 个答案:

答案 0 :(得分:1)

您错误地认为证书等二进制数据存储在&#34;&#34;&#34;在PDF流中。显然,证书存储为文字字符串并包含转义序列:括号,CR,LF,反斜杠以及使用反斜杠转义的其他内容。要检索证书,您需要实现基本的PDF流解析器以去除那些反斜杠序列。