mirror of
https://github.com/moonlight-stream/moonlight-ios.git
synced 2026-02-16 10:31:02 +00:00
implemented cert and keypair gen
This commit is contained in:
@@ -40,6 +40,10 @@
|
||||
FB7E794419C8B71B00A15F68 /* libiconv.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = FB7E794319C8B71B00A15F68 /* libiconv.dylib */; };
|
||||
FBAB29F219EDB08B00929691 /* MDNSManager.m in Sources */ = {isa = PBXBuildFile; fileRef = FBAB29F119EDB08B00929691 /* MDNSManager.m */; };
|
||||
FBAB29F619EDE0F800929691 /* Computer.m in Sources */ = {isa = PBXBuildFile; fileRef = FBAB29F519EDE0F800929691 /* Computer.m */; };
|
||||
FBAB29FC19EE13AA00929691 /* CryptoManager.m in Sources */ = {isa = PBXBuildFile; fileRef = FBAB29FB19EE13AA00929691 /* CryptoManager.m */; };
|
||||
FBCC0E9A19EF9703009729EB /* libcrypto.a in Frameworks */ = {isa = PBXBuildFile; fileRef = FBCC0E9819EF9703009729EB /* libcrypto.a */; };
|
||||
FBCC0E9B19EF9703009729EB /* libssl.a in Frameworks */ = {isa = PBXBuildFile; fileRef = FBCC0E9919EF9703009729EB /* libssl.a */; };
|
||||
FBCC0E9D19F00659009729EB /* mkcert.c in Sources */ = {isa = PBXBuildFile; fileRef = FBCC0E9C19F00659009729EB /* mkcert.c */; };
|
||||
FBD8B40519C906230032E027 /* libavcodec.a in Frameworks */ = {isa = PBXBuildFile; fileRef = FBD8B3FD19C906230032E027 /* libavcodec.a */; };
|
||||
FBD8B40619C906230032E027 /* libavdevice.a in Frameworks */ = {isa = PBXBuildFile; fileRef = FBD8B3FE19C906230032E027 /* libavdevice.a */; };
|
||||
FBD8B40719C906230032E027 /* libavfilter.a in Frameworks */ = {isa = PBXBuildFile; fileRef = FBD8B3FF19C906230032E027 /* libavfilter.a */; };
|
||||
@@ -112,6 +116,87 @@
|
||||
FBAB29F319EDB0C400929691 /* MDNSManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MDNSManager.h; sourceTree = "<group>"; };
|
||||
FBAB29F419EDE0F800929691 /* Computer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Computer.h; sourceTree = "<group>"; };
|
||||
FBAB29F519EDE0F800929691 /* Computer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Computer.m; sourceTree = "<group>"; };
|
||||
FBAB29FA19EE13AA00929691 /* CryptoManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CryptoManager.h; sourceTree = "<group>"; };
|
||||
FBAB29FB19EE13AA00929691 /* CryptoManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CryptoManager.m; sourceTree = "<group>"; };
|
||||
FBCC0E4C19EF9703009729EB /* aes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = aes.h; sourceTree = "<group>"; };
|
||||
FBCC0E4D19EF9703009729EB /* asn1.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = asn1.h; sourceTree = "<group>"; };
|
||||
FBCC0E4E19EF9703009729EB /* asn1_mac.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = asn1_mac.h; sourceTree = "<group>"; };
|
||||
FBCC0E4F19EF9703009729EB /* asn1t.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = asn1t.h; sourceTree = "<group>"; };
|
||||
FBCC0E5019EF9703009729EB /* bio.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = bio.h; sourceTree = "<group>"; };
|
||||
FBCC0E5119EF9703009729EB /* blowfish.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = blowfish.h; sourceTree = "<group>"; };
|
||||
FBCC0E5219EF9703009729EB /* bn.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = bn.h; sourceTree = "<group>"; };
|
||||
FBCC0E5319EF9703009729EB /* buffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = buffer.h; sourceTree = "<group>"; };
|
||||
FBCC0E5419EF9703009729EB /* camellia.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = camellia.h; sourceTree = "<group>"; };
|
||||
FBCC0E5519EF9703009729EB /* cast.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cast.h; sourceTree = "<group>"; };
|
||||
FBCC0E5619EF9703009729EB /* cmac.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cmac.h; sourceTree = "<group>"; };
|
||||
FBCC0E5719EF9703009729EB /* cms.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cms.h; sourceTree = "<group>"; };
|
||||
FBCC0E5819EF9703009729EB /* comp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = comp.h; sourceTree = "<group>"; };
|
||||
FBCC0E5919EF9703009729EB /* conf.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = conf.h; sourceTree = "<group>"; };
|
||||
FBCC0E5A19EF9703009729EB /* conf_api.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = conf_api.h; sourceTree = "<group>"; };
|
||||
FBCC0E5B19EF9703009729EB /* crypto.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = crypto.h; sourceTree = "<group>"; };
|
||||
FBCC0E5C19EF9703009729EB /* des.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = des.h; sourceTree = "<group>"; };
|
||||
FBCC0E5D19EF9703009729EB /* des_old.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = des_old.h; sourceTree = "<group>"; };
|
||||
FBCC0E5E19EF9703009729EB /* dh.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = dh.h; sourceTree = "<group>"; };
|
||||
FBCC0E5F19EF9703009729EB /* dsa.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = dsa.h; sourceTree = "<group>"; };
|
||||
FBCC0E6019EF9703009729EB /* dso.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = dso.h; sourceTree = "<group>"; };
|
||||
FBCC0E6119EF9703009729EB /* dtls1.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = dtls1.h; sourceTree = "<group>"; };
|
||||
FBCC0E6219EF9703009729EB /* e_os2.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = e_os2.h; sourceTree = "<group>"; };
|
||||
FBCC0E6319EF9703009729EB /* ebcdic.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ebcdic.h; sourceTree = "<group>"; };
|
||||
FBCC0E6419EF9703009729EB /* ec.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ec.h; sourceTree = "<group>"; };
|
||||
FBCC0E6519EF9703009729EB /* ecdh.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ecdh.h; sourceTree = "<group>"; };
|
||||
FBCC0E6619EF9703009729EB /* ecdsa.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ecdsa.h; sourceTree = "<group>"; };
|
||||
FBCC0E6719EF9703009729EB /* engine.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = engine.h; sourceTree = "<group>"; };
|
||||
FBCC0E6819EF9703009729EB /* err.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = err.h; sourceTree = "<group>"; };
|
||||
FBCC0E6919EF9703009729EB /* evp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = evp.h; sourceTree = "<group>"; };
|
||||
FBCC0E6A19EF9703009729EB /* hmac.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = hmac.h; sourceTree = "<group>"; };
|
||||
FBCC0E6B19EF9703009729EB /* idea.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = idea.h; sourceTree = "<group>"; };
|
||||
FBCC0E6C19EF9703009729EB /* krb5_asn.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = krb5_asn.h; sourceTree = "<group>"; };
|
||||
FBCC0E6D19EF9703009729EB /* kssl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = kssl.h; sourceTree = "<group>"; };
|
||||
FBCC0E6E19EF9703009729EB /* lhash.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lhash.h; sourceTree = "<group>"; };
|
||||
FBCC0E6F19EF9703009729EB /* md4.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = md4.h; sourceTree = "<group>"; };
|
||||
FBCC0E7019EF9703009729EB /* md5.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = md5.h; sourceTree = "<group>"; };
|
||||
FBCC0E7119EF9703009729EB /* mdc2.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mdc2.h; sourceTree = "<group>"; };
|
||||
FBCC0E7219EF9703009729EB /* modes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = modes.h; sourceTree = "<group>"; };
|
||||
FBCC0E7319EF9703009729EB /* obj_mac.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = obj_mac.h; sourceTree = "<group>"; };
|
||||
FBCC0E7419EF9703009729EB /* objects.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = objects.h; sourceTree = "<group>"; };
|
||||
FBCC0E7519EF9703009729EB /* ocsp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ocsp.h; sourceTree = "<group>"; };
|
||||
FBCC0E7619EF9703009729EB /* opensslconf.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = opensslconf.h; sourceTree = "<group>"; };
|
||||
FBCC0E7719EF9703009729EB /* opensslv.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = opensslv.h; sourceTree = "<group>"; };
|
||||
FBCC0E7819EF9703009729EB /* ossl_typ.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ossl_typ.h; sourceTree = "<group>"; };
|
||||
FBCC0E7919EF9703009729EB /* pem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pem.h; sourceTree = "<group>"; };
|
||||
FBCC0E7A19EF9703009729EB /* pem2.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pem2.h; sourceTree = "<group>"; };
|
||||
FBCC0E7B19EF9703009729EB /* pkcs12.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pkcs12.h; sourceTree = "<group>"; };
|
||||
FBCC0E7C19EF9703009729EB /* pkcs7.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pkcs7.h; sourceTree = "<group>"; };
|
||||
FBCC0E7D19EF9703009729EB /* pqueue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pqueue.h; sourceTree = "<group>"; };
|
||||
FBCC0E7E19EF9703009729EB /* rand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = rand.h; sourceTree = "<group>"; };
|
||||
FBCC0E7F19EF9703009729EB /* rc2.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = rc2.h; sourceTree = "<group>"; };
|
||||
FBCC0E8019EF9703009729EB /* rc4.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = rc4.h; sourceTree = "<group>"; };
|
||||
FBCC0E8119EF9703009729EB /* ripemd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ripemd.h; sourceTree = "<group>"; };
|
||||
FBCC0E8219EF9703009729EB /* rsa.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = rsa.h; sourceTree = "<group>"; };
|
||||
FBCC0E8319EF9703009729EB /* safestack.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = safestack.h; sourceTree = "<group>"; };
|
||||
FBCC0E8419EF9703009729EB /* seed.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = seed.h; sourceTree = "<group>"; };
|
||||
FBCC0E8519EF9703009729EB /* sha.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = sha.h; sourceTree = "<group>"; };
|
||||
FBCC0E8619EF9703009729EB /* srp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = srp.h; sourceTree = "<group>"; };
|
||||
FBCC0E8719EF9703009729EB /* srtp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = srtp.h; sourceTree = "<group>"; };
|
||||
FBCC0E8819EF9703009729EB /* ssl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ssl.h; sourceTree = "<group>"; };
|
||||
FBCC0E8919EF9703009729EB /* ssl2.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ssl2.h; sourceTree = "<group>"; };
|
||||
FBCC0E8A19EF9703009729EB /* ssl23.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ssl23.h; sourceTree = "<group>"; };
|
||||
FBCC0E8B19EF9703009729EB /* ssl3.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ssl3.h; sourceTree = "<group>"; };
|
||||
FBCC0E8C19EF9703009729EB /* stack.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = stack.h; sourceTree = "<group>"; };
|
||||
FBCC0E8D19EF9703009729EB /* symhacks.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = symhacks.h; sourceTree = "<group>"; };
|
||||
FBCC0E8E19EF9703009729EB /* tls1.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tls1.h; sourceTree = "<group>"; };
|
||||
FBCC0E8F19EF9703009729EB /* ts.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ts.h; sourceTree = "<group>"; };
|
||||
FBCC0E9019EF9703009729EB /* txt_db.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = txt_db.h; sourceTree = "<group>"; };
|
||||
FBCC0E9119EF9703009729EB /* ui.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ui.h; sourceTree = "<group>"; };
|
||||
FBCC0E9219EF9703009729EB /* ui_compat.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ui_compat.h; sourceTree = "<group>"; };
|
||||
FBCC0E9319EF9703009729EB /* whrlpool.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = whrlpool.h; sourceTree = "<group>"; };
|
||||
FBCC0E9419EF9703009729EB /* x509.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = x509.h; sourceTree = "<group>"; };
|
||||
FBCC0E9519EF9703009729EB /* x509_vfy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = x509_vfy.h; sourceTree = "<group>"; };
|
||||
FBCC0E9619EF9703009729EB /* x509v3.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = x509v3.h; sourceTree = "<group>"; };
|
||||
FBCC0E9819EF9703009729EB /* libcrypto.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libcrypto.a; sourceTree = "<group>"; };
|
||||
FBCC0E9919EF9703009729EB /* libssl.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libssl.a; sourceTree = "<group>"; };
|
||||
FBCC0E9C19F00659009729EB /* mkcert.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = mkcert.c; sourceTree = "<group>"; };
|
||||
FBCC0E9E19F00697009729EB /* mkcert.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mkcert.h; sourceTree = "<group>"; };
|
||||
FBD8B3FD19C906230032E027 /* libavcodec.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libavcodec.a; sourceTree = "<group>"; };
|
||||
FBD8B3FE19C906230032E027 /* libavdevice.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libavdevice.a; sourceTree = "<group>"; };
|
||||
FBD8B3FF19C906230032E027 /* libavfilter.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libavfilter.a; sourceTree = "<group>"; };
|
||||
@@ -214,6 +299,7 @@
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
FBCC0E9B19EF9703009729EB /* libssl.a in Frameworks */,
|
||||
FB7E794419C8B71B00A15F68 /* libiconv.dylib in Frameworks */,
|
||||
FB290DC419B2E98F004C83CF /* libxml2.dylib in Frameworks */,
|
||||
FBD8B40719C906230032E027 /* libavfilter.a in Frameworks */,
|
||||
@@ -225,6 +311,7 @@
|
||||
FB290CF419B2C406004C83CF /* CoreGraphics.framework in Frameworks */,
|
||||
FB290DC219B2E966004C83CF /* libopus.a in Frameworks */,
|
||||
FB290CF819B2C406004C83CF /* CoreData.framework in Frameworks */,
|
||||
FBCC0E9A19EF9703009729EB /* libcrypto.a in Frameworks */,
|
||||
FB290DB519B2C814004C83CF /* liblimelight-common.a in Frameworks */,
|
||||
FBD8B40B19C906230032E027 /* libswresample.a in Frameworks */,
|
||||
FBD8B40819C906230032E027 /* libavformat.a in Frameworks */,
|
||||
@@ -310,6 +397,10 @@
|
||||
FBAB29F319EDB0C400929691 /* MDNSManager.h */,
|
||||
FBAB29F419EDE0F800929691 /* Computer.h */,
|
||||
FBAB29F519EDE0F800929691 /* Computer.m */,
|
||||
FBAB29FA19EE13AA00929691 /* CryptoManager.h */,
|
||||
FBAB29FB19EE13AA00929691 /* CryptoManager.m */,
|
||||
FBCC0E9E19F00697009729EB /* mkcert.h */,
|
||||
FBCC0E9C19F00659009729EB /* mkcert.c */,
|
||||
);
|
||||
path = Limelight;
|
||||
sourceTree = "<group>";
|
||||
@@ -359,6 +450,7 @@
|
||||
FB290D3F19B2C814004C83CF /* libs */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
FBCC0E4919EF9703009729EB /* openssl */,
|
||||
FB2C87FA19B8F0B300F7655B /* FFmpeg */,
|
||||
FB290DA719B2C814004C83CF /* limelight-common */,
|
||||
FB290DAC19B2C814004C83CF /* opus */,
|
||||
@@ -436,6 +528,114 @@
|
||||
path = FFmpeg;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
FBCC0E4919EF9703009729EB /* openssl */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
FBCC0E4A19EF9703009729EB /* include */,
|
||||
FBCC0E9719EF9703009729EB /* lib */,
|
||||
);
|
||||
path = openssl;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
FBCC0E4A19EF9703009729EB /* include */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
FBCC0E4B19EF9703009729EB /* openssl */,
|
||||
);
|
||||
path = include;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
FBCC0E4B19EF9703009729EB /* openssl */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
FBCC0E4C19EF9703009729EB /* aes.h */,
|
||||
FBCC0E4D19EF9703009729EB /* asn1.h */,
|
||||
FBCC0E4E19EF9703009729EB /* asn1_mac.h */,
|
||||
FBCC0E4F19EF9703009729EB /* asn1t.h */,
|
||||
FBCC0E5019EF9703009729EB /* bio.h */,
|
||||
FBCC0E5119EF9703009729EB /* blowfish.h */,
|
||||
FBCC0E5219EF9703009729EB /* bn.h */,
|
||||
FBCC0E5319EF9703009729EB /* buffer.h */,
|
||||
FBCC0E5419EF9703009729EB /* camellia.h */,
|
||||
FBCC0E5519EF9703009729EB /* cast.h */,
|
||||
FBCC0E5619EF9703009729EB /* cmac.h */,
|
||||
FBCC0E5719EF9703009729EB /* cms.h */,
|
||||
FBCC0E5819EF9703009729EB /* comp.h */,
|
||||
FBCC0E5919EF9703009729EB /* conf.h */,
|
||||
FBCC0E5A19EF9703009729EB /* conf_api.h */,
|
||||
FBCC0E5B19EF9703009729EB /* crypto.h */,
|
||||
FBCC0E5C19EF9703009729EB /* des.h */,
|
||||
FBCC0E5D19EF9703009729EB /* des_old.h */,
|
||||
FBCC0E5E19EF9703009729EB /* dh.h */,
|
||||
FBCC0E5F19EF9703009729EB /* dsa.h */,
|
||||
FBCC0E6019EF9703009729EB /* dso.h */,
|
||||
FBCC0E6119EF9703009729EB /* dtls1.h */,
|
||||
FBCC0E6219EF9703009729EB /* e_os2.h */,
|
||||
FBCC0E6319EF9703009729EB /* ebcdic.h */,
|
||||
FBCC0E6419EF9703009729EB /* ec.h */,
|
||||
FBCC0E6519EF9703009729EB /* ecdh.h */,
|
||||
FBCC0E6619EF9703009729EB /* ecdsa.h */,
|
||||
FBCC0E6719EF9703009729EB /* engine.h */,
|
||||
FBCC0E6819EF9703009729EB /* err.h */,
|
||||
FBCC0E6919EF9703009729EB /* evp.h */,
|
||||
FBCC0E6A19EF9703009729EB /* hmac.h */,
|
||||
FBCC0E6B19EF9703009729EB /* idea.h */,
|
||||
FBCC0E6C19EF9703009729EB /* krb5_asn.h */,
|
||||
FBCC0E6D19EF9703009729EB /* kssl.h */,
|
||||
FBCC0E6E19EF9703009729EB /* lhash.h */,
|
||||
FBCC0E6F19EF9703009729EB /* md4.h */,
|
||||
FBCC0E7019EF9703009729EB /* md5.h */,
|
||||
FBCC0E7119EF9703009729EB /* mdc2.h */,
|
||||
FBCC0E7219EF9703009729EB /* modes.h */,
|
||||
FBCC0E7319EF9703009729EB /* obj_mac.h */,
|
||||
FBCC0E7419EF9703009729EB /* objects.h */,
|
||||
FBCC0E7519EF9703009729EB /* ocsp.h */,
|
||||
FBCC0E7619EF9703009729EB /* opensslconf.h */,
|
||||
FBCC0E7719EF9703009729EB /* opensslv.h */,
|
||||
FBCC0E7819EF9703009729EB /* ossl_typ.h */,
|
||||
FBCC0E7919EF9703009729EB /* pem.h */,
|
||||
FBCC0E7A19EF9703009729EB /* pem2.h */,
|
||||
FBCC0E7B19EF9703009729EB /* pkcs12.h */,
|
||||
FBCC0E7C19EF9703009729EB /* pkcs7.h */,
|
||||
FBCC0E7D19EF9703009729EB /* pqueue.h */,
|
||||
FBCC0E7E19EF9703009729EB /* rand.h */,
|
||||
FBCC0E7F19EF9703009729EB /* rc2.h */,
|
||||
FBCC0E8019EF9703009729EB /* rc4.h */,
|
||||
FBCC0E8119EF9703009729EB /* ripemd.h */,
|
||||
FBCC0E8219EF9703009729EB /* rsa.h */,
|
||||
FBCC0E8319EF9703009729EB /* safestack.h */,
|
||||
FBCC0E8419EF9703009729EB /* seed.h */,
|
||||
FBCC0E8519EF9703009729EB /* sha.h */,
|
||||
FBCC0E8619EF9703009729EB /* srp.h */,
|
||||
FBCC0E8719EF9703009729EB /* srtp.h */,
|
||||
FBCC0E8819EF9703009729EB /* ssl.h */,
|
||||
FBCC0E8919EF9703009729EB /* ssl2.h */,
|
||||
FBCC0E8A19EF9703009729EB /* ssl23.h */,
|
||||
FBCC0E8B19EF9703009729EB /* ssl3.h */,
|
||||
FBCC0E8C19EF9703009729EB /* stack.h */,
|
||||
FBCC0E8D19EF9703009729EB /* symhacks.h */,
|
||||
FBCC0E8E19EF9703009729EB /* tls1.h */,
|
||||
FBCC0E8F19EF9703009729EB /* ts.h */,
|
||||
FBCC0E9019EF9703009729EB /* txt_db.h */,
|
||||
FBCC0E9119EF9703009729EB /* ui.h */,
|
||||
FBCC0E9219EF9703009729EB /* ui_compat.h */,
|
||||
FBCC0E9319EF9703009729EB /* whrlpool.h */,
|
||||
FBCC0E9419EF9703009729EB /* x509.h */,
|
||||
FBCC0E9519EF9703009729EB /* x509_vfy.h */,
|
||||
FBCC0E9619EF9703009729EB /* x509v3.h */,
|
||||
);
|
||||
path = openssl;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
FBCC0E9719EF9703009729EB /* lib */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
FBCC0E9819EF9703009729EB /* libcrypto.a */,
|
||||
FBCC0E9919EF9703009729EB /* libssl.a */,
|
||||
);
|
||||
path = lib;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
FBD8B3FC19C906230032E027 /* lib */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
@@ -706,6 +906,7 @@
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
FBAB29FC19EE13AA00929691 /* CryptoManager.m in Sources */,
|
||||
FB290D3D19B2C6E3004C83CF /* VideoDepacketizer.m in Sources */,
|
||||
FBAB29F219EDB08B00929691 /* MDNSManager.m in Sources */,
|
||||
FB290D0719B2C406004C83CF /* Limelight.xcdatamodeld in Sources */,
|
||||
@@ -717,6 +918,7 @@
|
||||
FB290D3919B2C6E3004C83CF /* MainFrameViewController.m in Sources */,
|
||||
FB290D3719B2C6E3004C83CF /* Connection.m in Sources */,
|
||||
FB290D3B19B2C6E3004C83CF /* StreamView.m in Sources */,
|
||||
FBCC0E9D19F00659009729EB /* mkcert.c in Sources */,
|
||||
FB290D3819B2C6E3004C83CF /* ConnectionHandler.m in Sources */,
|
||||
FB290D3C19B2C6E3004C83CF /* VideoDecoder.m in Sources */,
|
||||
);
|
||||
@@ -851,6 +1053,7 @@
|
||||
"$(PROJECT_DIR)/libs/FFmpeg/lib",
|
||||
"$(PROJECT_DIR)/libs/limelight-common/lib",
|
||||
"$(PROJECT_DIR)/libs/opus/lib",
|
||||
"$(PROJECT_DIR)/libs/openssl/lib",
|
||||
);
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
WRAPPER_EXTENSION = app;
|
||||
@@ -876,6 +1079,7 @@
|
||||
"$(PROJECT_DIR)/libs/FFmpeg/lib",
|
||||
"$(PROJECT_DIR)/libs/limelight-common/lib",
|
||||
"$(PROJECT_DIR)/libs/opus/lib",
|
||||
"$(PROJECT_DIR)/libs/openssl/lib",
|
||||
);
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
WRAPPER_EXTENSION = app;
|
||||
|
||||
15
Limelight/CryptoManager.h
Normal file
15
Limelight/CryptoManager.h
Normal file
@@ -0,0 +1,15 @@
|
||||
//
|
||||
// CryptoManager.h
|
||||
// Limelight
|
||||
//
|
||||
// Created by Diego Waxemberg on 10/14/14.
|
||||
// Copyright (c) 2014 Limelight Stream. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
@interface CryptoManager : NSObject <NSURLConnectionDelegate>
|
||||
|
||||
- (void) generateKeyPairUsingSSl;
|
||||
|
||||
@end
|
||||
34
Limelight/CryptoManager.m
Normal file
34
Limelight/CryptoManager.m
Normal file
@@ -0,0 +1,34 @@
|
||||
//
|
||||
// CryptoManager.m
|
||||
// Limelight
|
||||
//
|
||||
// Created by Diego Waxemberg on 10/14/14.
|
||||
// Copyright (c) 2014 Limelight Stream. All rights reserved.
|
||||
//
|
||||
|
||||
#import "CryptoManager.h"
|
||||
#import "mkcert.h"
|
||||
|
||||
|
||||
@implementation CryptoManager
|
||||
|
||||
- (void)connection:(NSURLConnection *)connection willSendRequestForAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge {
|
||||
|
||||
|
||||
}
|
||||
|
||||
- (void) generateKeyPairUsingSSl {
|
||||
NSLog(@"Generating Certificate: ");
|
||||
CertKeyPair certKeyPair = generateCertKeyPair();
|
||||
|
||||
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
|
||||
NSString *documentsDirectory = [paths objectAtIndex:0];
|
||||
NSString *certFile = [documentsDirectory stringByAppendingPathComponent:@"client.crt"];
|
||||
NSString *keyPairFile = [documentsDirectory stringByAppendingPathComponent:@"client.key"];
|
||||
|
||||
NSLog(@"Writing cert and key to: \n%@\n%@", certFile, keyPairFile);
|
||||
saveCertKeyPair([certFile UTF8String], [keyPairFile UTF8String], certKeyPair);
|
||||
freeCertKeyPair(certKeyPair);
|
||||
}
|
||||
|
||||
@end
|
||||
@@ -10,6 +10,7 @@
|
||||
#import "VideoDepacketizer.h"
|
||||
#import "ConnectionHandler.h"
|
||||
#import "Computer.h"
|
||||
#import "CryptoManager.h"
|
||||
|
||||
@implementation MainFrameViewController
|
||||
NSString* hostAddr;
|
||||
@@ -86,6 +87,7 @@ MDNSManager* mDNSManager;
|
||||
|
||||
mDNSManager = [[MDNSManager alloc] initWithCallback:self];
|
||||
[mDNSManager searchForHosts];
|
||||
[[[CryptoManager alloc] init] generateKeyPairUsingSSl];
|
||||
}
|
||||
|
||||
- (void)updateHosts:(NSArray *)hosts {
|
||||
|
||||
153
Limelight/mkcert.c
Normal file
153
Limelight/mkcert.c
Normal file
@@ -0,0 +1,153 @@
|
||||
|
||||
#include "mkcert.h"
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#include <openssl/pem.h>
|
||||
#include <openssl/conf.h>
|
||||
|
||||
#ifndef OPENSSL_NO_ENGINE
|
||||
#include <openssl/engine.h>
|
||||
#endif
|
||||
|
||||
static const int NUM_BITS = 2048;
|
||||
static const int SERIAL = 0;
|
||||
static const int NUM_YEARS = 20;
|
||||
|
||||
int mkcert(X509 **x509p, EVP_PKEY **pkeyp, int bits, int serial, int years);
|
||||
int add_ext(X509 *cert, int nid, char *value);
|
||||
|
||||
struct CertKeyPair generateCertKeyPair() {
|
||||
BIO *bio_err;
|
||||
X509 *x509 = NULL;
|
||||
EVP_PKEY *pkey = NULL;
|
||||
CRYPTO_mem_ctrl(CRYPTO_MEM_CHECK_ON);
|
||||
|
||||
bio_err = BIO_new_fp(stderr, BIO_NOCLOSE);
|
||||
|
||||
mkcert(&x509, &pkey, NUM_BITS, SERIAL, NUM_YEARS);
|
||||
|
||||
// Debug Print statements
|
||||
//RSA_print_fp(stdout, pkey->pkey.rsa, 0);
|
||||
//X509_print_fp(stdout, x509);
|
||||
//PEM_write_PUBKEY(stdout, pkey);
|
||||
//PEM_write_PrivateKey(stdout, pkey, NULL, NULL, 0, NULL, NULL);
|
||||
//PEM_write_X509(stdout, x509);
|
||||
|
||||
#ifndef OPENSSL_NO_ENGINE
|
||||
ENGINE_cleanup();
|
||||
#endif
|
||||
CRYPTO_cleanup_all_ex_data();
|
||||
|
||||
CRYPTO_mem_leaks(bio_err);
|
||||
BIO_free(bio_err);
|
||||
|
||||
return (CertKeyPair){x509, pkey};
|
||||
}
|
||||
|
||||
void freeCertKeyPair(struct CertKeyPair certKeyPair) {
|
||||
X509_free(certKeyPair.x509);
|
||||
EVP_PKEY_free(certKeyPair.pkey);
|
||||
}
|
||||
|
||||
void saveCertKeyPair(const char* certFile, const char* keyPairFile, CertKeyPair certKeyPair) {
|
||||
FILE* certFilePtr = fopen(certFile, "w");
|
||||
FILE* keyPairFilePtr = fopen(keyPairFile, "w");
|
||||
|
||||
PEM_write_PrivateKey(keyPairFilePtr, certKeyPair.pkey, NULL, NULL, 0, NULL, NULL);
|
||||
PEM_write_X509(certFilePtr, certKeyPair.x509);
|
||||
|
||||
fclose(certFilePtr);
|
||||
fclose(keyPairFilePtr);
|
||||
}
|
||||
|
||||
int mkcert(X509 **x509p, EVP_PKEY **pkeyp, int bits, int serial, int years) {
|
||||
X509 *x;
|
||||
EVP_PKEY *pk;
|
||||
RSA *rsa;
|
||||
X509_NAME *name = NULL;
|
||||
|
||||
if ((pkeyp == NULL) || (*pkeyp == NULL)) {
|
||||
if ((pk=EVP_PKEY_new()) == NULL) {
|
||||
abort();
|
||||
return(0);
|
||||
}
|
||||
} else {
|
||||
pk = *pkeyp;
|
||||
}
|
||||
|
||||
if ((x509p == NULL) || (*x509p == NULL)) {
|
||||
if ((x = X509_new()) == NULL) {
|
||||
goto err;
|
||||
}
|
||||
} else {
|
||||
x = *x509p;
|
||||
}
|
||||
|
||||
rsa = RSA_generate_key(bits, RSA_F4, NULL, NULL);
|
||||
if (!EVP_PKEY_assign_RSA(pk, rsa)) {
|
||||
abort();
|
||||
goto err;
|
||||
}
|
||||
|
||||
X509_set_version(x, 3);
|
||||
ASN1_INTEGER_set(X509_get_serialNumber(x), serial);
|
||||
X509_gmtime_adj(X509_get_notBefore(x), 0);
|
||||
X509_gmtime_adj(X509_get_notAfter(x), (long)60*60*24*365*years);
|
||||
X509_set_pubkey(x, pk);
|
||||
|
||||
name = X509_get_subject_name(x);
|
||||
|
||||
/* This function creates and adds the entry, working out the
|
||||
* correct string type and performing checks on its length.
|
||||
*/
|
||||
X509_NAME_add_entry_by_txt(name,"CN", MBSTRING_ASC, (unsigned char*)"NVIDIA GameStream Client", -1, -1, 0);
|
||||
|
||||
/* Its self signed so set the issuer name to be the same as the
|
||||
* subject.
|
||||
*/
|
||||
X509_set_issuer_name(x, name);
|
||||
|
||||
/* Add various extensions: standard extensions */
|
||||
add_ext(x, NID_basic_constraints, "critical,CA:TRUE");
|
||||
add_ext(x, NID_key_usage, "critical,keyCertSign,cRLSign");
|
||||
|
||||
add_ext(x, NID_subject_key_identifier, "hash");
|
||||
|
||||
if (!X509_sign(x, pk, EVP_sha1())) {
|
||||
goto err;
|
||||
}
|
||||
|
||||
*x509p = x;
|
||||
*pkeyp = pk;
|
||||
return(1);
|
||||
err:
|
||||
return(0);
|
||||
}
|
||||
|
||||
/* Add extension using V3 code: we can set the config file as NULL
|
||||
* because we wont reference any other sections.
|
||||
*/
|
||||
|
||||
int add_ext(X509 *cert, int nid, char *value)
|
||||
{
|
||||
X509_EXTENSION *ex;
|
||||
X509V3_CTX ctx;
|
||||
/* This sets the 'context' of the extensions. */
|
||||
/* No configuration database */
|
||||
X509V3_set_ctx_nodb(&ctx);
|
||||
/* Issuer and subject certs: both the target since it is self signed,
|
||||
* no request and no CRL
|
||||
*/
|
||||
X509V3_set_ctx(&ctx, cert, cert, NULL, NULL, 0);
|
||||
ex = X509V3_EXT_conf_nid(NULL, &ctx, nid, value);
|
||||
if (!ex) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
X509_add_ext(cert, ex, -1);
|
||||
X509_EXTENSION_free(ex);
|
||||
return 1;
|
||||
}
|
||||
|
||||
22
Limelight/mkcert.h
Normal file
22
Limelight/mkcert.h
Normal file
@@ -0,0 +1,22 @@
|
||||
//
|
||||
// mkcert.h
|
||||
// Limelight
|
||||
//
|
||||
// Created by Diego Waxemberg on 10/16/14.
|
||||
// Copyright (c) 2014 Limelight Stream. All rights reserved.
|
||||
//
|
||||
|
||||
#ifndef Limelight_mkcert_h
|
||||
#define Limelight_mkcert_h
|
||||
|
||||
#include <openssl/x509v3.h>
|
||||
|
||||
typedef struct CertKeyPair {
|
||||
X509 *x509;
|
||||
EVP_PKEY *pkey;
|
||||
} CertKeyPair;
|
||||
|
||||
struct CertKeyPair generateCertKeyPair();
|
||||
void freeCertKeyPair(CertKeyPair);
|
||||
void saveCertKeyPair(const char* certFile, const char* keyPairFile, CertKeyPair certKeyPair);
|
||||
#endif
|
||||
Reference in New Issue
Block a user