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

Side by Side Diff: openssl/crypto/seed/seed_cbc.c

Issue 9254031: Upgrade chrome's OpenSSL to same version Android ships with. (Closed) Base URL: http://src.chromium.org/svn/trunk/deps/third_party/openssl/
Patch Set: '' Created 8 years, 11 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 | Annotate | Revision Log
« no previous file with comments | « openssl/crypto/seed/seed.c ('k') | openssl/crypto/seed/seed_cfb.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 /* crypto/seed/seed_cbc.c -*- mode:C; c-file-style: "eay" -*- */ 1 /* crypto/seed/seed_cbc.c -*- mode:C; c-file-style: "eay" -*- */
2 /* ==================================================================== 2 /* ====================================================================
3 * Copyright (c) 1998-2007 The OpenSSL Project. All rights reserved. 3 * Copyright (c) 1998-2007 The OpenSSL Project. All rights reserved.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions 6 * modification, are permitted provided that the following conditions
7 * are met: 7 * are met:
8 * 8 *
9 * 1. Redistributions of source code must retain the above copyright 9 * 1. Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer. 10 * notice, this list of conditions and the following disclaimer.
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
42 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 42 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
43 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 43 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
44 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 44 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
45 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 45 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
46 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 46 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
47 * OF THE POSSIBILITY OF SUCH DAMAGE. 47 * OF THE POSSIBILITY OF SUCH DAMAGE.
48 * ==================================================================== 48 * ====================================================================
49 * 49 *
50 */ 50 */
51 51
52 #include "seed_locl.h" 52 #include <openssl/seed.h>
53 #include <string.h> 53 #include <openssl/modes.h>
54 54
55 void SEED_cbc_encrypt(const unsigned char *in, unsigned char *out, 55 void SEED_cbc_encrypt(const unsigned char *in, unsigned char *out,
56 size_t len, const SEED_KEY_SCHEDULE *ks, 56 size_t len, const SEED_KEY_SCHEDULE *ks,
57 unsigned char ivec[SEED_BLOCK_SIZE], int enc) 57 unsigned char ivec[SEED_BLOCK_SIZE], int enc)
58 { 58 {
59 size_t n;
60 unsigned char tmp[SEED_BLOCK_SIZE];
61 const unsigned char *iv = ivec;
62
63 if (enc) 59 if (enc)
64 » » { 60 » » CRYPTO_cbc128_encrypt(in,out,len,ks,ivec,(block128_f)SEED_encryp t);
65 » » while (len >= SEED_BLOCK_SIZE) 61 » else
66 » » » { 62 » » CRYPTO_cbc128_decrypt(in,out,len,ks,ivec,(block128_f)SEED_decryp t);
67 » » » for (n = 0; n < SEED_BLOCK_SIZE; ++n)
68 » » » » out[n] = in[n] ^ iv[n];
69 » » » SEED_encrypt(out, out, ks);
70 » » » iv = out;
71 » » » len -= SEED_BLOCK_SIZE;
72 » » » in += SEED_BLOCK_SIZE;
73 » » » out += SEED_BLOCK_SIZE;
74 » » » }
75 » » if (len)
76 » » » {
77 » » » for (n = 0; n < len; ++n)
78 » » » » out[n] = in[n] ^ iv[n];
79 » » » for (n = len; n < SEED_BLOCK_SIZE; ++n)
80 » » » » out[n] = iv[n];
81 » » » SEED_encrypt(out, out, ks);
82 » » » iv = out;
83 » » » }
84 » » memcpy(ivec, iv, SEED_BLOCK_SIZE);
85 » » }
86 » else if (in != out) /* decrypt */
87 » » {
88 » » while (len >= SEED_BLOCK_SIZE)
89 » » » {
90 » » » SEED_decrypt(in, out, ks);
91 » » » for (n = 0; n < SEED_BLOCK_SIZE; ++n)
92 » » » » out[n] ^= iv[n];
93 » » » iv = in;
94 » » » len -= SEED_BLOCK_SIZE;
95 » » » in += SEED_BLOCK_SIZE;
96 » » » out += SEED_BLOCK_SIZE;
97 » » » }
98 » » if (len)
99 » » » {
100 » » » SEED_decrypt(in, tmp, ks);
101 » » » for (n = 0; n < len; ++n)
102 » » » » out[n] = tmp[n] ^ iv[n];
103 » » » iv = in;
104 » » » }
105 » » memcpy(ivec, iv, SEED_BLOCK_SIZE);
106 » » }
107 » else /* decrypt, overlap */
108 » » {
109 » » while (len >= SEED_BLOCK_SIZE)
110 » » » {
111 » » » memcpy(tmp, in, SEED_BLOCK_SIZE);
112 » » » SEED_decrypt(in, out, ks);
113 » » » for (n = 0; n < SEED_BLOCK_SIZE; ++n)
114 » » » » out[n] ^= ivec[n];
115 » » » memcpy(ivec, tmp, SEED_BLOCK_SIZE);
116 » » » len -= SEED_BLOCK_SIZE;
117 » » » in += SEED_BLOCK_SIZE;
118 » » » out += SEED_BLOCK_SIZE;
119 » » » }
120 » » if (len)
121 » » » {
122 » » » memcpy(tmp, in, SEED_BLOCK_SIZE);
123 » » » SEED_decrypt(tmp, tmp, ks);
124 » » » for (n = 0; n < len; ++n)
125 » » » » out[n] = tmp[n] ^ ivec[n];
126 » » » memcpy(ivec, tmp, SEED_BLOCK_SIZE);
127 » » » }
128 » » }
129 } 63 }
OLDNEW
« no previous file with comments | « openssl/crypto/seed/seed.c ('k') | openssl/crypto/seed/seed_cfb.c » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698