Exemplo n.º 1
1
int
write_key_pem_private(FILE *fp, struct ndn_pkey *private_key_ndn, char *password)
{
	unsigned long err;
        int res = 0;

        if (password) {
          res = PEM_write_PKCS8PrivateKey (fp, (EVP_PKEY *) private_key_ndn, EVP_aes_256_cbc (), password, strlen(password), NULL, NULL);
        }
        else {
          res = PEM_write_PrivateKey(fp, (EVP_PKEY *) private_key_ndn, NULL, NULL, 0, NULL, NULL);
        }
        
	if (!res) {
          err = ERR_get_error();
          PyErr_Format(g_PyExc_NDNKeyError, "Unable to write Private Key: %s",
                       ERR_reason_error_string(err));
          return -1;
	}
        
	return 0;
}
Exemplo n.º 2
1
void pki_evp::writePKCS8(const QString fname, const EVP_CIPHER *enc,
		pem_password_cb *cb, bool pem)
{
	EVP_PKEY *pkey;
	pass_info p(XCA_TITLE, tr("Please enter the password protecting the PKCS#8 key '%1'").arg(getIntName()));
	FILE *fp = fopen(QString2filename(fname), "w");
	if (fp != NULL) {
		if (key) {
			pkey = decryptKey();
			if (pkey) {
				if (pem)
					PEM_write_PKCS8PrivateKey(fp, pkey, enc, NULL, 0, cb, &p);
				else
					i2d_PKCS8PrivateKey_fp(fp, pkey, enc, NULL, 0, cb, &p);
				EVP_PKEY_free(pkey);
			}
		}
		fclose(fp);
		pki_openssl_error();
	} else
		fopen_error(fname);
}
Exemplo n.º 3
0
int PEM_write_PrivateKey(FILE *fp, EVP_PKEY *x, const EVP_CIPHER *enc,
                         unsigned char *kstr, int klen,
                         pem_password_cb *cb, void *u)
{
    if (FIPS_mode())
        return PEM_write_PKCS8PrivateKey(fp, x, enc,
                                         (char *)kstr, klen, cb, u);
    else
        return PEM_ASN1_write((int (*)())i2d_PrivateKey,
                              (((x)->type == EVP_PKEY_DSA)?PEM_STRING_DSA:PEM_STRING_RSA),
                              fp,(char *)x,enc,kstr,klen,cb,u);
}
uint32 CRegProtocol::CreatePrivateKey(char *name, 
                                      EVP_PKEY **key)
{
    TU_RET err = TU_ERROR_CRYPTO_FAILED;
    RSA *rsaKey;
    EVP_PKEY *pkey;
    FILE *fp;

    rsaKey = RSA_generate_key(1024, 65537, NULL, NULL);
    if(rsaKey == NULL)
    {
        TUTRACE((TUTRACE_ERR, "Couldn't generate RSA key\n"));
        goto EXIT;
    }

    //Now store it in a PKEY
    pkey = EVP_PKEY_new();
    if(!pkey)
    {
        TUTRACE((TUTRACE_ERR, "Couldn't generate new EVP key\n"));
        goto EXIT;
    }

    if(!EVP_PKEY_assign_RSA(pkey, rsaKey))
    {
        TUTRACE((TUTRACE_ERR, "Couldn't assign RSA key to EVP key\n"));
        RSA_free(rsaKey);
        goto EXIT;
    }

    fp = fopen(name, "w");
    
    if(!PEM_write_PKCS8PrivateKey(fp, pkey, NULL, NULL, 0, NULL, NULL))
    {
        TUTRACE((TUTRACE_ERR, "Error writing Signing key to file\n"));
        fclose(fp);
        goto ERR_EVP;
    }
    
    fclose(fp);

    if(key)
        *key = pkey;
    else
        EVP_PKEY_free(pkey);

    return TU_SUCCESS;

ERR_EVP:
    EVP_PKEY_free(pkey);
EXIT:
    return err;
}