diff --git a/daemon/I2PControl.cpp b/daemon/I2PControl.cpp index ffe3d7fd..115beb3b 100644 --- a/daemon/I2PControl.cpp +++ b/daemon/I2PControl.cpp @@ -462,12 +462,13 @@ namespace client X509_gmtime_adj (X509_getm_notBefore (x509), 0); X509_gmtime_adj (X509_getm_notAfter (x509), I2P_CONTROL_CERTIFICATE_VALIDITY*24*60*60); // expiration X509_set_pubkey (x509, pkey); // public key - auto name = X509_get_subject_name (x509); + auto name = X509_NAME_dup (X509_get_subject_name (x509)); X509_NAME_add_entry_by_txt (name, "C", MBSTRING_ASC, (unsigned char *)"A1", -1, -1, 0); // country (Anonymous proxy) X509_NAME_add_entry_by_txt (name, "O", MBSTRING_ASC, (unsigned char *)I2P_CONTROL_CERTIFICATE_ORGANIZATION, -1, -1, 0); // organization X509_NAME_add_entry_by_txt (name, "CN", MBSTRING_ASC, (unsigned char *)I2P_CONTROL_CERTIFICATE_COMMON_NAME, -1, -1, 0); // common name X509_set_issuer_name (x509, name); // set issuer to ourselves X509_sign (x509, pkey, EVP_sha1 ()); // sign, last param must be NULL for EdDSA + X509_NAME_free (name); // save cert if ((f = fopen (crt_path, "wb")) != NULL)