Upgrade OpenSSL so it works on visionOS (#635)

* Switch OpenSSL so it works on visionOS
* Fix cert generation to work with OpenSSL 3
* Update gitignore
This commit is contained in:
alexhaugland
2024-07-10 20:51:16 -04:00
committed by GitHub
parent 557765f2c0
commit 022352c166
443 changed files with 123 additions and 130876 deletions

View File

@@ -4,10 +4,12 @@
#include <stdio.h>
#include <stdlib.h>
#include <openssl/evp.h>
#include <openssl/pem.h>
#include <openssl/rsa.h>
#include <OpenSSL/provider.h>
#include <OpenSSL/rsa.h>
#include <openssl/x509.h>
#include <openssl/rand.h>
#include <OpenSSL/rand.h>
static const int NUM_BITS = 2048;
static const int SERIAL = 0;
@@ -65,12 +67,34 @@ struct CertKeyPair generateCertKeyPair(void) {
X509 *x509 = NULL;
EVP_PKEY *pkey = NULL;
PKCS12 *p12 = NULL;
// OpenSSL3 has default algorithms that iOS refuses to load so we
// must load the legacy provider and override all the algorithms
// in this cert.
OSSL_PROVIDER *_legacy = OSSL_PROVIDER_try_load(NULL, "legacy", 1);
if (_legacy == NULL) {
printf("Failed to load Legacy provider\n");
}
bio_err = BIO_new_fp(stderr, BIO_NOCLOSE);
mkcert(&x509, &pkey, NUM_BITS, SERIAL, NUM_YEARS);
p12 = PKCS12_create("limelight", "GameStream", pkey, x509, NULL, 0, 0, 0, 0, 0);
char* pass = "limelight";
p12 = PKCS12_create(pass,
"GameStream",
pkey,
x509,
NULL,
NID_pbe_WithSHA1And3_Key_TripleDES_CBC,
NID_pbe_WithSHA1And40BitRC2_CBC,
2048,
-1, // disable the automatic MAC
0);
// MAC it ourselves with SHA1 since iOS refuses to load anything else.
PKCS12_set_mac(p12, pass, -1, NULL, 0, 1, EVP_sha1());
if (p12 == NULL) {
printf("Error generating a valid PKCS12 certificate.\n");
}