Git init
[external/xmlsec1.git] / docs / xmlenc.html
1 <html>
2 <head>
3 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
4 <title>XML Security Library: XML Encryption</title>
5 </head>
6 <body><table witdh="100%" valign="top"><tr valign="top">
7 <td valign="top" align="left" width="210">
8 <img src="images/logo.gif" alt="XML Security Library" border="0"><p></p>
9 <ul>
10 <li><a href="index.html">Home</a></li>
11 <li><a href="download.html">Download</a></li>
12 <li><a href="news.html">News</a></li>
13 <li><a href="documentation.html">Documentation</a></li>
14 <ul>
15 <li><a href="faq.html">FAQ</a></li>
16 <li><a href="api/xmlsec-notes.html">Tutorial</a></li>
17 <li><a href="api/xmlsec-reference.html">API reference</a></li>
18 <li><a href="api/xmlsec-examples.html">Examples</a></li>
19 </ul>
20 <li><a href="xmldsig.html">XML Digital Signature</a></li>
21 <ul><li><a href="http://www.aleksey.com/xmlsec/xmldsig-verifier.html">Online Verifier</a></li></ul>
22 <li><a href="xmlenc.html">XML Encryption</a></li>
23 <li><a href="c14n.html">XML Canonicalization</a></li>
24 <li><a href="bugs.html">Reporting Bugs</a></li>
25 <li><a href="http://www.aleksey.com/pipermail/xmlsec">Mailing list</a></li>
26 <li><a href="related.html">Related</a></li>
27 <li><a href="authors.html">Authors</a></li>
28 </ul>
29 <table width="100%">
30 <tr>
31 <td width="15"></td>
32 <td><a href="http://xmlsoft.org/"><img src="images/libxml2-logo.png" alt="LibXML2" border="0"></a></td>
33 </tr>
34 <tr>
35 <td width="15"></td>
36 <td><a href="http://xmlsoft.org/XSLT"><img src="images/libxslt-logo.png" alt="LibXSLT" border="0"></a></td>
37 </tr>
38 <tr>
39 <td width="15"></td>
40 <td><a href="http://www.openssl.org/"><img src="images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
41 </tr>
42 <!--Links - start--><!--Links - end-->
43 </table>
44 </td>
45 <td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent"><div align="center">
46             <h2> XML Encryption </h2>
47 <div align="left">
48 <a href="http://www.w3.org/TR/xmlenc-core">XML Encryption 1.0</a> standard
49 specifies
50 the process for encryptind data and representing the result in XML
51 document.
52 The data may be an XML element, or an XML element content, or any
53 arbitrary
54 data (including XML document). </div>
55             <div align="center">
56             <h3>XML Security Library Interoperability Report</h3>
57             <h4 style="text-align: center;">XML Encryption 1.0 (<a href="http://www.w3.org/TR/xmlenc-core/">W3C Recommendation</a>)</h4>
58             </div>
59             <div align="center">
60             <p> </p>
61             <table style="width: 85%;" border="1" cellpadding="2" cellspacing="2"><tbody>
62 <tr>
63 <td style="width: 40%;" align="left" valign="top"><b>Features
64 and
65 algorithms<br></b></td>
66                   <td align="left" valign="top"> <b>XMLSec with OpenSSL</b>
67                   </td>
68                   <td style="vertical-align: top;"><b>XMLSec with GnuTLS</b></td>
69                   <td style="vertical-align: top;"> <b>XMLSec with NSS</b>
70                   </td>
71                   <td style="vertical-align: top;"> <b>XMLSec with
72 MSCrypto</b> </td>
73                 </tr>
74 <tr>
75 <td style="width: 40%;" align="left" valign="top">Laxly
76 valid
77 schema generation of EncryptedData
78 /EncryptedKey <br>
79 </td>
80                   <td align="left" valign="top">Y<br>
81 </td>
82                   <td style="vertical-align: top;">Y<br>
83 </td>
84                   <td style="vertical-align: top;">Y</td>
85                   <td style="vertical-align: top;">Y</td>
86                 </tr>
87 <tr>
88 <td style="width: 40%;" align="left" valign="top">
89                   <ul>
90 <li> Normalized Form C generations. </li>
91                   </ul>
92 </td>
93                   <td align="left" valign="top">Y<br>
94 </td>
95                   <td style="vertical-align: top;">Y</td>
96                   <td style="vertical-align: top;">Y</td>
97                   <td style="vertical-align: top;">Y</td>
98                 </tr>
99 <tr>
100 <td style="width: 40%;" align="left" valign="top">Type,
101 MimeType,
102 and Encoding <br>
103 </td>
104                   <td align="left" valign="top">Y<br>
105 </td>
106                   <td style="vertical-align: top;">Y</td>
107                   <td style="vertical-align: top;">Y</td>
108                   <td style="vertical-align: top;">Y</td>
109                 </tr>
110 <tr>
111 <td style="width: 40%;" align="left" valign="top">CipherReference
112 URI derefencing <br>
113 </td>
114                   <td align="left" valign="top">Y<br>
115 </td>
116                   <td style="vertical-align: top;">Y</td>
117                   <td style="vertical-align: top;">Y</td>
118                   <td style="vertical-align: top;">Y</td>
119                 </tr>
120 <tr>
121 <td style="width: 40%;" align="left" valign="top">
122                   <ul>
123 <li> Transforms </li>
124                   </ul>
125 </td>
126                   <td align="left" valign="top">Y<br>
127 </td>
128                   <td style="vertical-align: top;">Y</td>
129                   <td style="vertical-align: top;">Y</td>
130                   <td style="vertical-align: top;">Y</td>
131                 </tr>
132 <tr>
133 <td style="width: 40%;" align="left" valign="top">ds:KeyInfo
134                   <br>
135 </td>
136                   <td align="left" valign="top">Y<br>
137 </td>
138                   <td style="vertical-align: top;">Y</td>
139                   <td style="vertical-align: top;">Y</td>
140                   <td style="vertical-align: top;">Y</td>
141                 </tr>
142 <tr>
143 <td style="width: 40%;" align="left" valign="top">
144                   <ul>
145 <li> enc:DHKeyValue </li>
146                   </ul>
147 </td>
148                   <td align="left" valign="top">N<br>
149 </td>
150                   <td style="vertical-align: top;">N<br>
151 </td>
152                   <td style="vertical-align: top;">N<br>
153 </td>
154                   <td style="vertical-align: top;">N<br>
155 </td>
156                 </tr>
157 <tr>
158 <td style="width: 40%;" align="left" valign="top">
159                   <ul>
160 <li> ds:KeyName </li>
161                   </ul>
162 </td>
163                   <td align="left" valign="top">Y<br>
164 </td>
165                   <td style="vertical-align: top;">Y</td>
166                   <td style="vertical-align: top;">Y</td>
167                   <td style="vertical-align: top;">Y</td>
168                 </tr>
169 <tr>
170 <td style="width: 40%;" align="left" valign="top">
171                   <ul>
172 <li> ds:RetrievalMethod </li>
173                   </ul>
174 </td>
175                   <td align="left" valign="top">Y<br>
176 </td>
177                   <td style="vertical-align: top;">Y</td>
178                   <td style="vertical-align: top;">Y</td>
179                   <td style="vertical-align: top;">Y</td>
180                 </tr>
181 <tr>
182 <td style="width: 40%;" align="left" valign="top">ReferenceList
183                   <br>
184 </td>
185                   <td align="left" valign="top">N<br>
186 </td>
187                   <td style="vertical-align: top;">N<br>
188 </td>
189                   <td style="vertical-align: top;">N<br>
190 </td>
191                   <td style="vertical-align: top;">N<br>
192 </td>
193                 </tr>
194 <tr>
195 <td style="width: 40%;" align="left" valign="top">EncryptionProperties
196                   <br>
197 </td>
198                   <td align="left" valign="top">Y<br>
199 </td>
200                   <td style="vertical-align: top;">Y</td>
201                   <td style="vertical-align: top;">Y</td>
202                   <td style="vertical-align: top;">Y</td>
203                 </tr>
204 <tr>
205 <td style="width: 40%;" align="left" valign="top">Satisfactory
206 Performance<br>
207 </td>
208                   <td align="left" valign="top">Y<br>
209 </td>
210                   <td style="vertical-align: top;">Y</td>
211                   <td style="vertical-align: top;">Y</td>
212                   <td style="vertical-align: top;">Y</td>
213                 </tr>
214 <tr>
215 <td style="width: 40%;" align="left" valign="top">Required
216 Type
217 support: Element and Content. <br>
218 </td>
219                   <td align="left" valign="top">Y<br>
220 </td>
221                   <td style="vertical-align: top;">Y</td>
222                   <td style="vertical-align: top;">Y</td>
223                   <td style="vertical-align: top;">Y</td>
224                 </tr>
225 <tr>
226 <td style="width: 40%;" align="left" valign="top">Encryption
227                   <br>
228 </td>
229                   <td align="left" valign="top">Y<br>
230 </td>
231                   <td style="vertical-align: top;">Y</td>
232                   <td style="vertical-align: top;">Y</td>
233                   <td style="vertical-align: top;">Y</td>
234                 </tr>
235 <tr>
236 <td style="width: 40%;" align="left" valign="top">
237                   <ul>
238 <li> Serialization of XML Element and Content.
239                       <ol>
240 <li> NFC conversion from non-Unicode encodings.
241                         </li>
242                       </ol>
243 </li>
244                   </ul>
245 </td>
246                   <td align="left" valign="top">Y<br>
247 </td>
248                   <td style="vertical-align: top;">Y</td>
249                   <td style="vertical-align: top;">Y</td>
250                   <td style="vertical-align: top;">Y</td>
251                 </tr>
252 <tr>
253 <td style="width: 40%;" align="left" valign="top">
254                   <ul>
255 <li> Encryptor returns EncryptedData structure. </li>
256                   </ul>
257 </td>
258                   <td align="left" valign="top">Y<br>
259 </td>
260                   <td style="vertical-align: top;">Y</td>
261                   <td style="vertical-align: top;">Y</td>
262                   <td style="vertical-align: top;">Y</td>
263                 </tr>
264 <tr>
265 <td style="width: 40%;" align="left" valign="top">
266                   <ul>
267 <li> Encryptor replaces EncryptedData into source
268 document (when Type is Element or Content). </li>
269                   </ul>
270 </td>
271                   <td align="left" valign="top">Y<br>
272 </td>
273                   <td style="vertical-align: top;">Y</td>
274                   <td style="vertical-align: top;">Y</td>
275                   <td style="vertical-align: top;">Y</td>
276                 </tr>
277 <tr>
278 <td style="width: 40%;" valign="top"> Decryption <br>
279 </td>
280                   <td valign="top">Y<br>
281 </td>
282                   <td style="vertical-align: top;">Y</td>
283                   <td style="vertical-align: top;">Y</td>
284                   <td style="vertical-align: top;">Y</td>
285                 </tr>
286 <tr>
287 <td style="width: 40%;" align="left" valign="top">
288                   <ul>
289 <li> The decryptor returns the data and its Type to
290 the application (be
291 it an octet sequence or key value). </li>
292                   </ul>
293 </td>
294                   <td align="left" valign="top">Y<br>
295 </td>
296                   <td style="vertical-align: top;">Y</td>
297                   <td style="vertical-align: top;">Y</td>
298                   <td style="vertical-align: top;">Y</td>
299                 </tr>
300 <tr>
301 <td style="width: 40%;" align="left" valign="top">
302                   <ul>
303 <li> If data is Element or Content the decryptor
304 return the UTF-8 encoding XML character data. </li>
305                   </ul>
306 </td>
307                   <td align="left" valign="top">Y<br>
308 </td>
309                   <td style="vertical-align: top;">Y</td>
310                   <td style="vertical-align: top;">Y</td>
311                   <td style="vertical-align: top;">Y</td>
312                 </tr>
313 <tr>
314 <td style="width: 40%;" align="left" valign="top">
315                   <ul>
316 <li> If data is Element or Content the decryptor
317 replaces the EncryptedData in the source document with the decrypted
318 data. </li>
319                   </ul>
320 </td>
321                   <td align="left" valign="top">Y<br>
322 </td>
323                   <td style="vertical-align: top;">Y</td>
324                   <td style="vertical-align: top;">Y</td>
325                   <td style="vertical-align: top;">Y</td>
326                 </tr>
327 <tr>
328 <td style="width: 40%;" align="left" valign="top">TRIPLEDES<br>
329 </td>
330                   <td align="left" valign="top">Y<br>
331 </td>
332                   <td style="vertical-align: top;">Y</td>
333                   <td style="vertical-align: top;">Y</td>
334                   <td style="vertical-align: top;">Y</td>
335                 </tr>
336 <tr>
337 <td style="width: 40%;" align="left" valign="top">AES-128<br>
338 </td>
339                   <td align="left" valign="top">Y<br>
340 </td>
341                   <td style="vertical-align: top;">Y</td>
342                   <td style="vertical-align: top;">Y</td>
343                   <td style="vertical-align: top;">Y</td>
344                 </tr>
345 <tr>
346 <td style="width: 40%;" align="left" valign="top">AES-256<br>
347 </td>
348                   <td align="left" valign="top">Y<br>
349 </td>
350                   <td style="vertical-align: top;">Y</td>
351                   <td style="vertical-align: top;">Y</td>
352                   <td style="vertical-align: top;">Y</td>
353                 </tr>
354 <tr>
355 <td style="width: 40%;" valign="top"> AES-192<br>
356 </td>
357                   <td valign="top">Y<br>
358 </td>
359                   <td style="vertical-align: top;">Y</td>
360                   <td style="vertical-align: top;">Y</td>
361                   <td style="vertical-align: top;">Y</td>
362                 </tr>
363 <tr>
364 <td style="width: 40%;" align="left" valign="top">RSA-v1.5
365 (192 bit keys
366 for AES or DES)<br>
367 </td>
368                   <td align="left" valign="top">Y<br>
369 </td>
370                   <td style="vertical-align: top;">N<br>
371 </td>
372                   <td style="vertical-align: top;">N</td>
373                   <td style="vertical-align: top;">Y</td>
374                 </tr>
375 <tr>
376 <td style="width: 40%;" valign="top"> RSA-OAEP (128
377 and 256 bit keys for
378 AES)<br>
379 </td>
380                   <td valign="top">Y<a href="#rsa-oaep"><sup>(1)</sup></a>
381                   <br>
382 </td>
383                   <td style="vertical-align: top;">N</td>
384                   <td style="vertical-align: top;">N</td>
385                   <td style="vertical-align: top;">N</td>
386                 </tr>
387 <tr>
388 <td style="width: 40%;" valign="top"> Diffie-Hellman
389 Key Agreement<br>
390 </td>
391                   <td valign="top">N<br>
392 </td>
393                   <td style="vertical-align: top;">N</td>
394                   <td style="vertical-align: top;">N</td>
395                   <td style="vertical-align: top;">N</td>
396                 </tr>
397 <tr>
398 <td style="width: 40%;" valign="top"> TRIPLEDES Key
399 Wrap<br>
400 </td>
401                   <td valign="top">Y<br>
402 </td>
403                   <td style="vertical-align: top;">N</td>
404                   <td style="vertical-align: top;">Y</td>
405                   <td style="vertical-align: top;">N</td>
406                 </tr>
407 <tr>
408 <td style="width: 40%;" valign="top"> AES-128 Key
409 Wrap (128 bit keys)<br>
410 </td>
411                   <td valign="top">Y<br>
412 </td>
413                   <td style="vertical-align: top;">N</td>
414                   <td style="vertical-align: top;">Y<br>
415 </td>
416                   <td style="vertical-align: top;">N<br>
417 </td>
418                 </tr>
419 <tr>
420 <td style="width: 40%;" valign="top"> AES-256 Key
421 Wrap (256 bit keys)<br>
422 </td>
423                   <td valign="top">Y<br>
424 </td>
425                   <td style="vertical-align: top;">N</td>
426                   <td style="vertical-align: top;">Y<br>
427 </td>
428                   <td style="vertical-align: top;">N<br>
429 </td>
430                 </tr>
431 <tr>
432 <td style="width: 40%;" valign="top"> AES-192 Key Wrap<br>
433 </td>
434                   <td valign="top">Y<br>
435 </td>
436                   <td style="vertical-align: top;">N</td>
437                   <td style="vertical-align: top;">Y<br>
438 </td>
439                   <td style="vertical-align: top;">N</td>
440                 </tr>
441 <tr>
442 <td style="width: 40%;" valign="top"> SHA1<br>
443 </td>
444                   <td valign="top">Y<br>
445 </td>
446                   <td style="vertical-align: top;">Y<br>
447 </td>
448                   <td style="vertical-align: top;">Y<br>
449 </td>
450                   <td style="vertical-align: top;">Y<br>
451 </td>
452                 </tr>
453 <tr>
454 <td style="width: 40%;" valign="top"> SHA256<br>
455 </td>
456                   <td valign="top">Y<br>
457 </td>
458                   <td style="vertical-align: top;">N</td>
459                   <td style="vertical-align: top;">N</td>
460                   <td style="vertical-align: top;">N</td>
461                 </tr>
462 <tr>
463 <td style="width: 40%;" valign="top"> SHA512<br>
464 </td>
465                   <td valign="top">Y<br>
466 </td>
467                   <td style="vertical-align: top;">N</td>
468                   <td style="vertical-align: top;">N</td>
469                   <td style="vertical-align: top;">N</td>
470                 </tr>
471 <tr>
472 <td style="width: 40%;" valign="top"> RIPEMD-160<br>
473 </td>
474                   <td valign="top">Y<br>
475 </td>
476                   <td style="vertical-align: top;">Y<br>
477 </td>
478                   <td style="vertical-align: top;">N<br>
479 </td>
480                   <td style="vertical-align: top;">N<br>
481 </td>
482                 </tr>
483 <tr>
484 <td style="width: 40%;" valign="top"> XML Digital
485 Signature <br>
486 </td>
487                   <td valign="top">Y<br>
488 </td>
489                   <td style="vertical-align: top;">Y<br>
490 </td>
491                   <td style="vertical-align: top;">Y<br>
492 </td>
493                   <td style="vertical-align: top;">Y<br>
494 </td>
495                 </tr>
496 <tr>
497 <td style="width: 40%;" valign="top"> Decryption
498 Transform<br>
499 </td>
500                   <td valign="top">N<br>
501 </td>
502                   <td style="vertical-align: top;">N</td>
503                   <td style="vertical-align: top;">N</td>
504                   <td style="vertical-align: top;">N</td>
505                 </tr>
506 <tr>
507 <td style="width: 40%;" valign="top">
508 <ul>
509 <li>XPointer support in <code>Except URI</code>
510 </li>
511 </ul>
512 </td>
513                   <td valign="top">N<br>
514 </td>
515                   <td style="vertical-align: top;">N</td>
516                   <td style="vertical-align: top;">N</td>
517                   <td style="vertical-align: top;">N</td>
518                 </tr>
519 <tr>
520 <td style="width: 40%;" align="left" valign="top">
521 <a href="http://www.w3.org/TR/xml-c14n">Canonical XML 1.0</a>
522 </td>
523                   <td align="left" valign="top">Y<br>
524 </td>
525                   <td style="vertical-align: top;">Y<br>
526 </td>
527                   <td style="vertical-align: top;">Y<br>
528 </td>
529                   <td style="vertical-align: top;">Y<br>
530 </td>
531                 </tr>
532 <tr>
533 <td style="width: 40%;" align="left" valign="top">
534 <a href="http://www.w3.org/TR/xml-exc-c14n">Exlusive Canonical XML 1.0</a>
535 </td>
536                   <td align="left" valign="top">Y<br>
537 </td>
538                   <td style="vertical-align: top;">Y<br>
539 </td>
540                   <td style="vertical-align: top;">Y<br>
541 </td>
542                   <td style="vertical-align: top;">Y<br>
543 </td>
544                 </tr>
545 <tr>
546 <td style="width: 40%;" align="left" valign="top">
547 <a href="http://www.w3.org/TR/xml-c14n11/">Canonical XML 1.1</a>
548 </td>
549                   <td align="left" valign="top">Y<br>
550 </td>
551                   <td style="vertical-align: top;">Y<br>
552 </td>
553                   <td style="vertical-align: top;">Y<br>
554 </td>
555                   <td style="vertical-align: top;">Y<br>
556 </td>
557                 </tr>
558 <tr>
559 <td style="width: 40%;" valign="top">Base64 Encoding<br>
560 </td>
561                   <td valign="top">Y<br>
562 </td>
563                   <td style="vertical-align: top;">Y</td>
564                   <td style="vertical-align: top;">Y</td>
565                   <td style="vertical-align: top;">Y</td>
566                 </tr>
567 </tbody></table>
568 <div align="left"> <br><a name="rsa-oaep"></a> <sup>(1)</sup> OpenSSL (and XML
569 Security Library) supports only SHA1 as the digest in the RSA-OAEP key
570 transport.<br><p> <b>Test vectors (from <a href="http://www.w3.org/Encryption/2002/02-xenc-interop.html">W3C XML
571 Encryption
572 interop page</a>): </b><br><a href="http://lists.w3.org/Archives/Public/xml-encryption/2002Mar/0008.html">merlin-xmlenc-five.tar.gz</a>
573             <br><a href="http://lists.w3.org/Archives/Public/xml-encryption/2002Mar/att-0052/01-phaos-xmlenc-3.zip">phaos-xmlenc-3.zip</a>
574             <br></p>
575             </div>
576             </div>
577             </div></td></tr></table></td>
578 </tr></table></body>
579 </html>