Lines Matching refs:key

236 /* Generates a new EC key pair. The private key is a supplied
237 * value and the public key is the result of performing a scalar
246 ECPrivateKey *key;
260 /* Initialize an arena for the EC key. */
264 key = (ECPrivateKey *)PORT_ArenaZAlloc(arena, sizeof(ECPrivateKey),
266 if (!key) {
272 SECITEM_AllocItem(arena, &key->version, 1, kmflag);
273 key->version.data[0] = 1;
276 * ECParams structure within the private key.
278 key->ecParams.arena = arena;
279 key->ecParams.type = ecParams->type;
280 key->ecParams.fieldID.size = ecParams->fieldID.size;
281 key->ecParams.fieldID.type = ecParams->fieldID.type;
283 CHECK_SEC_OK(SECITEM_CopyItem(arena, &key->ecParams.fieldID.u.prime,
286 CHECK_SEC_OK(SECITEM_CopyItem(arena, &key->ecParams.fieldID.u.poly,
289 key->ecParams.fieldID.k1 = ecParams->fieldID.k1;
290 key->ecParams.fieldID.k2 = ecParams->fieldID.k2;
291 key->ecParams.fieldID.k3 = ecParams->fieldID.k3;
292 CHECK_SEC_OK(SECITEM_CopyItem(arena, &key->ecParams.curve.a,
294 CHECK_SEC_OK(SECITEM_CopyItem(arena, &key->ecParams.curve.b,
296 CHECK_SEC_OK(SECITEM_CopyItem(arena, &key->ecParams.curve.seed,
298 CHECK_SEC_OK(SECITEM_CopyItem(arena, &key->ecParams.base,
300 CHECK_SEC_OK(SECITEM_CopyItem(arena, &key->ecParams.order,
302 key->ecParams.cofactor = ecParams->cofactor;
303 CHECK_SEC_OK(SECITEM_CopyItem(arena, &key->ecParams.DEREncoding,
305 key->ecParams.name = ecParams->name;
306 CHECK_SEC_OK(SECITEM_CopyItem(arena, &key->ecParams.curveOID,
310 SECITEM_AllocItem(arena, &key->publicValue, 2*len + 1, kmflag);
312 SECITEM_AllocItem(arena, &key->privateValue, len, kmflag);
314 /* Copy private key */
316 memcpy(key->privateValue.data, privKeyBytes, len);
318 memset(key->privateValue.data, 0, (len - privKeyLen));
319 memcpy(key->privateValue.data + (len - privKeyLen), privKeyBytes, privKeyLen);
322 /* Compute corresponding public key */
325 CHECK_MPI_OK( mp_read_unsigned_octets(&k, key->privateValue.data,
328 rv = ec_points_mul(ecParams, &k, NULL, NULL, &(key->publicValue), kmflag);
330 *privKey = key;
346 /* Generates a new EC key pair. The private key is a supplied
347 * random value (in seed) and the public key is the result of
360 /* Generate a random private key using the algorithm A.4.1 of ANSI X9.62,
369 * Returns a buffer of len octets that holds the private key. The caller
420 /* Generates a new EC key pair. The private key is a random value and
421 * the public key is the result of performing a scalar point multiplication
440 /* generate public key */
455 /* Validates an EC public key as described in Section 5.2.2 of
458 * public key is not valid. These attacks can be prevented by
459 * validating the public key before using ECDH.
537 ** Performs an ECDH key derivation by computing the scalar point
592 /* Multiply our private key and peer's public point */
623 * on the digest using the given key and the random value kb (used in
627 ECDSA_SignDigestWithSeed(ECPrivateKey *key, SECItem *signature,
632 mp_int d, k; /* private key, random integer */
655 if (!key || !signature || !digest || !kb || (kblen < 0)) {
660 ecParams = &(key->ecParams);
682 SECITEM_TO_MPINT( key->privateValue, &d );
822 ** Computes the ECDSA signature on the digest using the given key
826 ECDSA_SignDigest(ECPrivateKey *key, SECItem *signature, const SECItem *digest,
833 if (!key) {
839 len = key->ecParams.order.len;
840 kBytes = ec_GenerateRandomPrivateKey(key->ecParams.order.data, len,
845 rv = ECDSA_SignDigestWithSeed(key, signature, digest, kBytes, len, kmflag);
861 ** Checks the signature on the given digest using the key provided.
864 ECDSA_VerifyDigest(ECPublicKey *key, const SECItem *signature,
896 if (!key || !signature || !digest) {
901 ecParams = &(key->ecParams);
990 if (ec_points_mul(ecParams, &u1, &u2, &key->publicValue, &pointC, kmflag)
1066 EC_FreePrivateKey(ECPrivateKey *key, boolean_t freeit)
1068 if (key == NULL)
1071 SECITEM_FreeItem(&key->publicValue, freeit);
1072 SECITEM_ZfreeItem(&key->privateValue, freeit);
1073 SECITEM_FreeItem(&key->version, freeit);
1076 PORT_Free(key, sizeof (ECPrivateKey));
1080 EC_FreePublicKey(ECPublicKey *key, boolean_t freeit)
1082 if (key == NULL)
1085 SECITEM_FreeItem(&key->publicValue, freeit);
1087 PORT_Free(key, sizeof (ECPublicKey));