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

Side by Side Diff: nss/lib/freebl/ecl/ecp_256_32.c

Issue 1843333003: Update NSPR to 4.12 and NSS to 3.23 on iOS (Closed) Base URL: https://chromium.googlesource.com/chromium/deps/nss.git@master
Patch Set: Created 4 years, 8 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
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 4
5 /* A 32-bit implementation of the NIST P-256 elliptic curve. */ 5 /* A 32-bit implementation of the NIST P-256 elliptic curve. */
6 6
7 #include <string.h> 7 #include <string.h>
8 8
9 #include "prtypes.h" 9 #include "prtypes.h"
10 #include "mpi.h" 10 #include "mpi.h"
(...skipping 1284 matching lines...) Expand 10 before | Expand all | Expand 10 after
1295 static mp_err to_montgomery(felem out, const mp_int *in, const ECGroup *group) 1295 static mp_err to_montgomery(felem out, const mp_int *in, const ECGroup *group)
1296 { 1296 {
1297 /* There are no MPI functions for bitshift operations and we wish to shift 1297 /* There are no MPI functions for bitshift operations and we wish to shift
1298 * in 257 bits left so we move the digits 256-bits left and then multiply 1298 * in 257 bits left so we move the digits 256-bits left and then multiply
1299 * by two. 1299 * by two.
1300 */ 1300 */
1301 mp_int in_shifted; 1301 mp_int in_shifted;
1302 int i; 1302 int i;
1303 mp_err res; 1303 mp_err res;
1304 1304
1305 mp_init(&in_shifted); 1305 MP_CHECKOK(mp_init(&in_shifted));
1306 s_mp_pad(&in_shifted, MP_USED(in) + MP_DIGITS_IN_256_BITS); 1306 MP_CHECKOK(s_mp_pad(&in_shifted, MP_USED(in) + MP_DIGITS_IN_256_BITS));
1307 memcpy(&MP_DIGIT(&in_shifted, MP_DIGITS_IN_256_BITS), 1307 memcpy(&MP_DIGIT(&in_shifted, MP_DIGITS_IN_256_BITS),
1308 MP_DIGITS(in), 1308 MP_DIGITS(in),
1309 MP_USED(in)*sizeof(mp_digit)); 1309 MP_USED(in)*sizeof(mp_digit));
1310 mp_mul_2(&in_shifted, &in_shifted); 1310 MP_CHECKOK(mp_mul_2(&in_shifted, &in_shifted));
1311 MP_CHECKOK(group->meth->field_mod(&in_shifted, &in_shifted, group->meth)); 1311 MP_CHECKOK(group->meth->field_mod(&in_shifted, &in_shifted, group->meth));
1312 1312
1313 for (i = 0;; i++) { 1313 for (i = 0;; i++) {
1314 out[i] = MP_DIGIT(&in_shifted, 0) & kBottom29Bits; 1314 out[i] = MP_DIGIT(&in_shifted, 0) & kBottom29Bits;
1315 » mp_div_d(&in_shifted, kTwo29, &in_shifted, NULL); 1315 » MP_CHECKOK(mp_div_d(&in_shifted, kTwo29, &in_shifted, NULL));
1316 1316
1317 i++; 1317 i++;
1318 if (i == NLIMBS) 1318 if (i == NLIMBS)
1319 break; 1319 break;
1320 out[i] = MP_DIGIT(&in_shifted, 0) & kBottom28Bits; 1320 out[i] = MP_DIGIT(&in_shifted, 0) & kBottom28Bits;
1321 » mp_div_d(&in_shifted, kTwo28, &in_shifted, NULL); 1321 » MP_CHECKOK(mp_div_d(&in_shifted, kTwo28, &in_shifted, NULL));
1322 } 1322 }
1323 1323
1324 CLEANUP: 1324 CLEANUP:
1325 mp_clear(&in_shifted); 1325 mp_clear(&in_shifted);
1326 return res; 1326 return res;
1327 } 1327 }
1328 1328
1329 /* from_montgomery sets out=in/R. */ 1329 /* from_montgomery sets out=in/R. */
1330 static mp_err from_montgomery(mp_int *out, const felem in, 1330 static mp_err from_montgomery(mp_int *out, const felem in,
1331 const ECGroup *group) 1331 const ECGroup *group)
1332 { 1332 {
1333 mp_int result, tmp; 1333 mp_int result, tmp;
1334 mp_err res; 1334 mp_err res;
1335 int i; 1335 int i;
1336 1336
1337 mp_init(&result); 1337 MP_CHECKOK(mp_init(&result));
1338 mp_init(&tmp); 1338 MP_CHECKOK(mp_init(&tmp));
1339 1339
1340 MP_CHECKOK(mp_add_d(&tmp, in[NLIMBS-1], &result)); 1340 MP_CHECKOK(mp_add_d(&tmp, in[NLIMBS-1], &result));
1341 for (i = NLIMBS-2; i >= 0; i--) { 1341 for (i = NLIMBS-2; i >= 0; i--) {
1342 if ((i & 1) == 0) { 1342 if ((i & 1) == 0) {
1343 MP_CHECKOK(mp_mul_d(&result, kTwo29, &tmp)); 1343 MP_CHECKOK(mp_mul_d(&result, kTwo29, &tmp));
1344 } else { 1344 } else {
1345 MP_CHECKOK(mp_mul_d(&result, kTwo28, &tmp)); 1345 MP_CHECKOK(mp_mul_d(&result, kTwo28, &tmp));
1346 } 1346 }
1347 MP_CHECKOK(mp_add_d(&tmp, in[i], &result)); 1347 MP_CHECKOK(mp_add_d(&tmp, in[i], &result));
1348 } 1348 }
(...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after
1495 /* Wire in fast point multiplication for named curves. */ 1495 /* Wire in fast point multiplication for named curves. */
1496 mp_err ec_group_set_gfp256_32(ECGroup *group, ECCurveName name) 1496 mp_err ec_group_set_gfp256_32(ECGroup *group, ECCurveName name)
1497 { 1497 {
1498 if (name == ECCurve_NIST_P256) { 1498 if (name == ECCurve_NIST_P256) {
1499 group->base_point_mul = &ec_GFp_nistp256_base_point_mul; 1499 group->base_point_mul = &ec_GFp_nistp256_base_point_mul;
1500 group->point_mul = &ec_GFp_nistp256_point_mul; 1500 group->point_mul = &ec_GFp_nistp256_point_mul;
1501 group->points_mul = &ec_GFp_nistp256_points_mul_vartime; 1501 group->points_mul = &ec_GFp_nistp256_points_mul_vartime;
1502 } 1502 }
1503 return MP_OKAY; 1503 return MP_OKAY;
1504 } 1504 }
OLDNEW
« no previous file with comments | « nss/lib/freebl/ecl/ec_naf.c ('k') | nss/lib/freebl/ecl/ecp_aff.c » ('j') | nss/lib/util/secoid.c » ('J')

Powered by Google App Engine
This is Rietveld 408576698