Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(135)

Side by Side Diff: third_party/libxslt/libexslt/crypto.c

Issue 1193533007: Upgrade to libxml 2.9.2 and libxslt 1.1.28 (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: no iconv Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « third_party/libxslt/libexslt/common.c ('k') | third_party/libxslt/libexslt/date.c » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #define IN_LIBEXSLT 1 #define IN_LIBEXSLT
2 #include "libexslt/libexslt.h" 2 #include "libexslt/libexslt.h"
3 3
4 #if defined(WIN32) && !defined (__CYGWIN__) && (!__MINGW32__) 4 #if defined(WIN32) && !defined (__CYGWIN__) && (!__MINGW32__)
5 #include <win32config.h> 5 #include <win32config.h>
6 #else 6 #else
7 #include "config.h" 7 #include "config.h"
8 #endif 8 #endif
9 9
10 #include <libxml/tree.h> 10 #include <libxml/tree.h>
11 #include <libxml/xpath.h> 11 #include <libxml/xpath.h>
12 #include <libxml/xpathInternals.h> 12 #include <libxml/xpathInternals.h>
13 #include <libxml/parser.h> 13 #include <libxml/parser.h>
14 #include <libxml/encoding.h> 14 #include <libxml/encoding.h>
15 #include <libxml/uri.h> 15 #include <libxml/uri.h>
16 16
17 #include <libxslt/xsltconfig.h> 17 #include <libxslt/xsltconfig.h>
18 #include <libxslt/xsltutils.h> 18 #include <libxslt/xsltutils.h>
19 #include <libxslt/xsltInternals.h> 19 #include <libxslt/xsltInternals.h>
20 #include <libxslt/extensions.h> 20 #include <libxslt/extensions.h>
21 21
22 #include "exslt.h" 22 #include "exslt.h"
23 23
24 #ifdef EXSLT_CRYPTO_ENABLED 24 #ifdef EXSLT_CRYPTO_ENABLED
25 25
26 #define HASH_DIGEST_LENGTH 32 26 #define HASH_DIGEST_LENGTH 32
27 #define MD5_DIGEST_LENGTH 16 27 #define MD5_DIGEST_LENGTH 16
28 #define SHA1_DIGEST_LENGTH 20 28 #define SHA1_DIGEST_LENGTH 20
29 29
30 /* gcrypt rc4 can do 256 bit keys, but cryptoapi limit 30 /* gcrypt rc4 can do 256 bit keys, but cryptoapi limit
31 seems to be 128 for the default provider */ 31 seems to be 128 for the default provider */
32 #define RC4_KEY_LENGTH 128 32 #define RC4_KEY_LENGTH 128
33 33
34 /* The following routines have been declared static - this should be 34 /* The following routines have been declared static - this should be
35 reviewed to consider whether we want to expose them to the API 35 reviewed to consider whether we want to expose them to the API
36 exsltCryptoBin2Hex 36 exsltCryptoBin2Hex
37 exsltCryptoHex2Bin 37 exsltCryptoHex2Bin
38 exsltCryptoGcryptInit 38 exsltCryptoGcryptInit
39 exsltCryptoGcryptHash 39 exsltCryptoGcryptHash
40 exsltCryptoGcryptRc4Encrypt 40 exsltCryptoGcryptRc4Encrypt
41 exsltCryptoGcryptRC4Decrypt 41 exsltCryptoGcryptRC4Decrypt
42 */ 42 */
43 43
44 /** 44 /**
45 * exsltCryptoBin2Hex: 45 * exsltCryptoBin2Hex:
46 * @bin: binary blob to convert 46 * @bin: binary blob to convert
47 * @binlen: length of binary blob 47 * @binlen: length of binary blob
48 * @hex: buffer to store hex version of blob 48 * @hex: buffer to store hex version of blob
49 * @hexlen: length of buffer to store hex version of blob 49 * @hexlen: length of buffer to store hex version of blob
50 * 50 *
51 * Helper function which encodes a binary blob as hex. 51 * Helper function which encodes a binary blob as hex.
52 */ 52 */
53 static void 53 static void
54 exsltCryptoBin2Hex (const unsigned char *bin, int binlen, 54 exsltCryptoBin2Hex (const unsigned char *bin, int binlen,
55 unsigned char *hex, int hexlen) { 55 unsigned char *hex, int hexlen) {
56 static const char bin2hex[] = { '0', '1', '2', '3', 56 static const char bin2hex[] = { '0', '1', '2', '3',
57 '4', '5', '6', '7', 57 '4', '5', '6', '7',
58 '8', '9', 'a', 'b', 58 '8', '9', 'a', 'b',
59 'c', 'd', 'e', 'f' 59 'c', 'd', 'e', 'f'
60 }; 60 };
61 61
(...skipping 288 matching lines...) Expand 10 before | Expand all | Expand 10 after
350 } 350 }
351 351
352 /** 352 /**
353 * exsltCryptoGcryptHash: 353 * exsltCryptoGcryptHash:
354 * @ctxt: an XPath parser context 354 * @ctxt: an XPath parser context
355 * @algorithm: hashing algorithm to use 355 * @algorithm: hashing algorithm to use
356 * @msg: text to be hashed 356 * @msg: text to be hashed
357 * @msglen: length of text to be hashed 357 * @msglen: length of text to be hashed
358 * @dest: buffer to place hash result 358 * @dest: buffer to place hash result
359 * 359 *
360 * Helper function which hashes a message using MD4, MD5, or SHA1. 360 * Helper function which hashes a message using MD4, MD5, or SHA1.
361 * using gcrypt 361 * using gcrypt
362 */ 362 */
363 static void 363 static void
364 exsltCryptoGcryptHash (xmlXPathParserContextPtr ctxt ATTRIBUTE_UNUSED, 364 exsltCryptoGcryptHash (xmlXPathParserContextPtr ctxt ATTRIBUTE_UNUSED,
365 /* changed the enum to int */ 365 /* changed the enum to int */
366 int algorithm, const char *msg, 366 int algorithm, const char *msg,
367 unsigned long msglen, 367 unsigned long msglen,
368 char dest[HASH_DIGEST_LENGTH]) { 368 char dest[HASH_DIGEST_LENGTH]) {
369 exsltCryptoGcryptInit (); 369 exsltCryptoGcryptInit ();
370 gcry_md_hash_buffer (algorithm, dest, msg, msglen); 370 gcry_md_hash_buffer (algorithm, dest, msg, msglen);
(...skipping 374 matching lines...) Expand 10 before | Expand all | Expand 10 after
745 if (bin == NULL) { 745 if (bin == NULL) {
746 xsltTransformError(tctxt, NULL, tctxt->inst, 746 xsltTransformError(tctxt, NULL, tctxt->inst,
747 "exsltCryptoRc4EncryptFunction: Failed to allocate string\n"); 747 "exsltCryptoRc4EncryptFunction: Failed to allocate string\n");
748 tctxt->state = XSLT_STATE_STOPPED; 748 tctxt->state = XSLT_STATE_STOPPED;
749 xmlXPathReturnEmptyString (ctxt); 749 xmlXPathReturnEmptyString (ctxt);
750 goto done; 750 goto done;
751 } 751 }
752 ret_len = exsltCryptoHex2Bin (str, str_len, bin, bin_len); 752 ret_len = exsltCryptoHex2Bin (str, str_len, bin, bin_len);
753 753
754 /* decrypt the binary blob */ 754 /* decrypt the binary blob */
755 ret = xmlMallocAtomic (ret_len); 755 ret = xmlMallocAtomic (ret_len + 1);
756 if (ret == NULL) { 756 if (ret == NULL) {
757 xsltTransformError(tctxt, NULL, tctxt->inst, 757 xsltTransformError(tctxt, NULL, tctxt->inst,
758 "exsltCryptoRc4EncryptFunction: Failed to allocate result\n"); 758 "exsltCryptoRc4EncryptFunction: Failed to allocate result\n");
759 tctxt->state = XSLT_STATE_STOPPED; 759 tctxt->state = XSLT_STATE_STOPPED;
760 xmlXPathReturnEmptyString (ctxt); 760 xmlXPathReturnEmptyString (ctxt);
761 goto done; 761 goto done;
762 } 762 }
763 PLATFORM_RC4_DECRYPT (ctxt, padkey, bin, ret_len, ret, ret_len); 763 PLATFORM_RC4_DECRYPT (ctxt, padkey, bin, ret_len, ret, ret_len);
764 ret[ret_len] = 0;
764 765
765 xmlXPathReturnString (ctxt, ret); 766 xmlXPathReturnString (ctxt, ret);
766 767
767 done: 768 done:
768 if (key != NULL) 769 if (key != NULL)
769 xmlFree (key); 770 xmlFree (key);
770 if (str != NULL) 771 if (str != NULL)
771 xmlFree (str); 772 xmlFree (str);
772 if (padkey != NULL) 773 if (padkey != NULL)
773 xmlFree (padkey); 774 xmlFree (padkey);
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
806 * 807 *
807 * Registers the EXSLT - Crypto module 808 * Registers the EXSLT - Crypto module
808 */ 809 */
809 void 810 void
810 exsltCryptoRegister (void) { 811 exsltCryptoRegister (void) {
811 } 812 }
812 813
813 #endif /* defined(HAVE_CRYPTO) */ 814 #endif /* defined(HAVE_CRYPTO) */
814 815
815 #endif /* EXSLT_CRYPTO_ENABLED */ 816 #endif /* EXSLT_CRYPTO_ENABLED */
OLDNEW
« no previous file with comments | « third_party/libxslt/libexslt/common.c ('k') | third_party/libxslt/libexslt/date.c » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698