Compare commits

...

5 Commits

Author SHA1 Message Date
neru 4a71bc6f1b fix: variable name
Build / build (push) Failing after 2m47s
2026-04-11 13:42:03 -03:00
neru cfd52b8e05 feat: use random str for CA 2026-04-11 13:41:55 -03:00
neru b2ca193aa4 fix: pass 0 instead of NULL 2026-04-11 13:41:33 -03:00
neru 491daebf06 fix: use definition order on initializer list 2026-04-11 13:41:18 -03:00
neru 9799c2babe feat: set rnd seed on start 2026-04-11 13:38:51 -03:00
2 changed files with 11 additions and 7 deletions
+3
View File
@@ -5,6 +5,7 @@
#include <windows.h> #include <windows.h>
#include <wininet.h> #include <wininet.h>
#include <ctime>
bool setProxyAddress(bool enable, const std::string& proxyAddr) bool setProxyAddress(bool enable, const std::string& proxyAddr)
{ {
@@ -87,6 +88,8 @@ BOOL WINAPI consoleHandler(DWORD dwType)
int main() int main()
{ {
srand(static_cast<unsigned int>(time(NULL)));
Log::createConsole(); Log::createConsole();
SetConsoleCtrlHandler(consoleHandler, TRUE); SetConsoleCtrlHandler(consoleHandler, TRUE);
atexit(cleanup); atexit(cleanup);
+8 -7
View File
@@ -30,7 +30,7 @@ using X509_ptr = std::unique_ptr<X509, Deleter<X509, X509_free>>;
using SSL_CTX_ptr = std::unique_ptr<SSL_CTX, Deleter<SSL_CTX, SSL_CTX_free>>; using SSL_CTX_ptr = std::unique_ptr<SSL_CTX, Deleter<SSL_CTX, SSL_CTX_free>>;
using BIO_ptr = std::unique_ptr<BIO, Deleter<BIO, BIO_vfree>>; using BIO_ptr = std::unique_ptr<BIO, Deleter<BIO, BIO_vfree>>;
CertManager::CertManager() : _sessionPkey(nullptr), _caPkey(nullptr), _caCert(nullptr) {} CertManager::CertManager() : _caPkey(nullptr), _caCert(nullptr), _sessionPkey(nullptr) {}
CertManager::~CertManager() CertManager::~CertManager()
{ {
@@ -102,7 +102,7 @@ void CertManager::installCert(X509* cert)
PCCERT_CONTEXT certCtx = CertCreateCertificateContext(X509_ASN_ENCODING | PKCS_7_ASN_ENCODING, derBuf, derLen); PCCERT_CONTEXT certCtx = CertCreateCertificateContext(X509_ASN_ENCODING | PKCS_7_ASN_ENCODING, derBuf, derLen);
if (certCtx) if (certCtx)
{ {
HCERTSTORE rootStore = CertOpenStore(CERT_STORE_PROV_SYSTEM, 0, NULL, CERT_SYSTEM_STORE_CURRENT_USER, L"Root"); HCERTSTORE rootStore = CertOpenStore(CERT_STORE_PROV_SYSTEM, 0, 0, CERT_SYSTEM_STORE_CURRENT_USER, L"Root");
if (rootStore) if (rootStore)
{ {
BOOL success = CertAddCertificateContextToStore(rootStore, certCtx, CERT_STORE_ADD_REPLACE_EXISTING, NULL); BOOL success = CertAddCertificateContextToStore(rootStore, certCtx, CERT_STORE_ADD_REPLACE_EXISTING, NULL);
@@ -145,9 +145,10 @@ bool CertManager::generateCA()
X509_gmtime_adj(X509_get_notBefore(cert.get()), 0); X509_gmtime_adj(X509_get_notBefore(cert.get()), 0);
X509_gmtime_adj(X509_get_notAfter(cert.get()), 31536000L); // 1 year X509_gmtime_adj(X509_get_notAfter(cert.get()), 31536000L); // 1 year
X509_NAME* name = X509_get_subject_name(cert.get()); X509_NAME* subjName = X509_get_subject_name(cert.get());
X509_NAME_add_entry_by_txt(name, "CN", MBSTRING_ASC, (unsigned char*)"Debug Proxy CA", -1, -1, 0); std::string randomCN = utils::randomizeString(16);
X509_set_issuer_name(cert.get(), name); X509_NAME_add_entry_by_txt(subjName, "CN", MBSTRING_ASC, (unsigned char*)randomCN.c_str(), -1, -1, 0);
X509_set_issuer_name(cert.get(), subjName);
X509_set_pubkey(cert.get(), _caPkey); X509_set_pubkey(cert.get(), _caPkey);
/* /*
@@ -197,8 +198,8 @@ SSL_CTX* CertManager::createHostContext(const std::string& host)
X509_gmtime_adj(X509_get_notBefore(cert.get()), 0); X509_gmtime_adj(X509_get_notBefore(cert.get()), 0);
X509_gmtime_adj(X509_get_notAfter(cert.get()), 31536000L); X509_gmtime_adj(X509_get_notAfter(cert.get()), 31536000L);
X509_NAME* name = X509_get_subject_name(cert.get()); X509_NAME* subjName = X509_get_subject_name(cert.get());
X509_NAME_add_entry_by_txt(name, "CN", MBSTRING_ASC, (unsigned char*)host.c_str(), -1, -1, 0); X509_NAME_add_entry_by_txt(subjName, "CN", MBSTRING_ASC, (unsigned char*)host.c_str(), -1, -1, 0);
X509_set_issuer_name(cert.get(), X509_get_subject_name(_caCert)); X509_set_issuer_name(cert.get(), X509_get_subject_name(_caCert));
X509_set_pubkey(cert.get(), _sessionPkey); X509_set_pubkey(cert.get(), _sessionPkey);