Exemple #1
0
void makeecreq256(char* commonname)
{
	EC_KEY *key;
	EVP_PKEY *pkey;
	X509_REQ *req;
	FILE *out;

	key = EC_KEY_new_by_curve_name(NID_X9_62_prime256v1);
	EC_KEY_generate_key(key);
	EC_KEY_set_asn1_flag(key, OPENSSL_EC_NAMED_CURVE);
	pkey = EVP_PKEY_new();
	EVP_PKEY_set1_EC_KEY(pkey, key);

	req = makereq(pkey, commonname, EVP_sha256());

	out = fopen("ec256_req.pem", "w");
	if (out == NULL)
		exit(-1);
	PEM_write_X509_REQ(out, req);
	fclose(out);
	out = fopen("ec256_req_key.pem", "w");
	if (out == NULL)
		exit(-1);
	PEM_write_ECPrivateKey(out, key, NULL, NULL, 0, NULL, NULL);
	fclose(out);
}
Exemple #2
0
bool writeKeys(const char* filename, EC_KEY* keys) {
    FILE* fp;
    bool retval = false;
    if ((fp = fopen(filename, "wt"))) {
        if (!PEM_write_EC_PUBKEY(fp, keys)) {
            fclose(fp);
            qCCritical(commerce) << "failed to write public key";
            return retval;
        }

        if (!PEM_write_ECPrivateKey(fp, keys, EVP_des_ede3_cbc(), NULL, 0, passwordCallback, NULL)) {
            fclose(fp);
            qCCritical(commerce) << "failed to write private key";
            return retval;
        }

        retval = true;
        qCDebug(commerce) << "wrote keys successfully";
        fclose(fp);
    } else {
        qCDebug(commerce) << "failed to open key file" << filename;
    }
    return retval;
}