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

Side by Side Diff: mozilla/security/nss/lib/freebl/rijndael.c

Issue 12668022: Make CKM_AES_GCM usable. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/deps/third_party/nss/
Patch Set: Created 7 years, 9 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
OLDNEW
1 /* This Source Code Form is subject to the terms of the Mozilla Public 1 /* This Source Code Form is subject to the terms of the Mozilla Public
2 * License, v. 2.0. If a copy of the MPL was not distributed with this 2 * License, v. 2.0. If a copy of the MPL was not distributed with this
3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
4 /* $Id: rijndael.c,v 1.30 2013/01/25 18:02:53 rrelyea%redhat.com Exp $ */ 4 /* $Id: rijndael.c,v 1.30 2013/01/25 18:02:53 rrelyea%redhat.com Exp $ */
5 5
6 #ifdef FREEBL_NO_DEPEND 6 #ifdef FREEBL_NO_DEPEND
7 #include "stubs.h" 7 #include "stubs.h"
8 #endif 8 #endif
9 9
10 #include "prinit.h" 10 #include "prinit.h"
(...skipping 1203 matching lines...) Expand 10 before | Expand all | Expand 10 after
1214 * Encrypt an arbitrary-length buffer. The output buffer must already be 1214 * Encrypt an arbitrary-length buffer. The output buffer must already be
1215 * allocated to at least inputLen. 1215 * allocated to at least inputLen.
1216 */ 1216 */
1217 SECStatus 1217 SECStatus
1218 AES_Encrypt(AESContext *cx, unsigned char *output, 1218 AES_Encrypt(AESContext *cx, unsigned char *output,
1219 unsigned int *outputLen, unsigned int maxOutputLen, 1219 unsigned int *outputLen, unsigned int maxOutputLen,
1220 const unsigned char *input, unsigned int inputLen) 1220 const unsigned char *input, unsigned int inputLen)
1221 { 1221 {
1222 int blocksize; 1222 int blocksize;
1223 /* Check args */ 1223 /* Check args */
1224 if (cx == NULL || output == NULL || input == NULL) { 1224 if (cx == NULL || output == NULL || (input == NULL && inputLen != 0)) {
wtc 2013/03/26 18:24:46 These changes allow an empty input to be represent
Ryan Sleevi 2013/03/26 18:39:14 I checked the PKCS#11 2.30 specs, and this seems v
1225 PORT_SetError(SEC_ERROR_INVALID_ARGS); 1225 PORT_SetError(SEC_ERROR_INVALID_ARGS);
1226 return SECFailure; 1226 return SECFailure;
1227 } 1227 }
1228 blocksize = 4 * cx->Nb; 1228 blocksize = 4 * cx->Nb;
1229 if (cx->isBlock && (inputLen % blocksize != 0)) { 1229 if (cx->isBlock && (inputLen % blocksize != 0)) {
1230 PORT_SetError(SEC_ERROR_INPUT_LEN); 1230 PORT_SetError(SEC_ERROR_INPUT_LEN);
1231 return SECFailure; 1231 return SECFailure;
1232 } 1232 }
1233 if (maxOutputLen < inputLen) { 1233 if (maxOutputLen < inputLen) {
1234 PORT_SetError(SEC_ERROR_OUTPUT_LEN); 1234 PORT_SetError(SEC_ERROR_OUTPUT_LEN);
(...skipping 10 matching lines...) Expand all
1245 * Decrypt and arbitrary-length buffer. The output buffer must already be 1245 * Decrypt and arbitrary-length buffer. The output buffer must already be
1246 * allocated to at least inputLen. 1246 * allocated to at least inputLen.
1247 */ 1247 */
1248 SECStatus 1248 SECStatus
1249 AES_Decrypt(AESContext *cx, unsigned char *output, 1249 AES_Decrypt(AESContext *cx, unsigned char *output,
1250 unsigned int *outputLen, unsigned int maxOutputLen, 1250 unsigned int *outputLen, unsigned int maxOutputLen,
1251 const unsigned char *input, unsigned int inputLen) 1251 const unsigned char *input, unsigned int inputLen)
1252 { 1252 {
1253 int blocksize; 1253 int blocksize;
1254 /* Check args */ 1254 /* Check args */
1255 if (cx == NULL || output == NULL || input == NULL) { 1255 if (cx == NULL || output == NULL || (input == NULL && inputLen != 0)) {
1256 PORT_SetError(SEC_ERROR_INVALID_ARGS); 1256 PORT_SetError(SEC_ERROR_INVALID_ARGS);
1257 return SECFailure; 1257 return SECFailure;
1258 } 1258 }
1259 blocksize = 4 * cx->Nb; 1259 blocksize = 4 * cx->Nb;
1260 if (cx->isBlock && (inputLen % blocksize != 0)) { 1260 if (cx->isBlock && (inputLen % blocksize != 0)) {
1261 PORT_SetError(SEC_ERROR_INPUT_LEN); 1261 PORT_SetError(SEC_ERROR_INPUT_LEN);
1262 return SECFailure; 1262 return SECFailure;
1263 } 1263 }
1264 if (maxOutputLen < inputLen) { 1264 if (maxOutputLen < inputLen) {
1265 PORT_SetError(SEC_ERROR_OUTPUT_LEN); 1265 PORT_SetError(SEC_ERROR_OUTPUT_LEN);
1266 return SECFailure; 1266 return SECFailure;
1267 } 1267 }
1268 *outputLen = inputLen; 1268 *outputLen = inputLen;
1269 return (*cx->worker)(cx->worker_cx, output, outputLen, maxOutputLen, 1269 return (*cx->worker)(cx->worker_cx, output, outputLen, maxOutputLen,
1270 input, inputLen, blocksize); 1270 input, inputLen, blocksize);
1271 } 1271 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698