diff --git a/src/android/com/silkimen/cordovahttp/CordovaServerTrust.java b/src/android/com/silkimen/cordovahttp/CordovaServerTrust.java index 822079e..5e97364 100644 --- a/src/android/com/silkimen/cordovahttp/CordovaServerTrust.java +++ b/src/android/com/silkimen/cordovahttp/CordovaServerTrust.java @@ -71,7 +71,7 @@ class CordovaServerTrust implements Runnable { this.tlsConfiguration.setTrustManagers(this.noOpTrustManagers); } else if ("pinned".equals(this.mode)) { this.tlsConfiguration.setHostnameVerifier(null); - this.tlsConfiguration.setTrustManagers(this.getTrustManagers(this.getCertsFromBundle("www/certificates"))); + this.tlsConfiguration.setTrustManagers(this.getTrustManagers(this.getCertsFromBundle(getWebAssetDir() + "/certificates"))); } else { this.tlsConfiguration.setHostnameVerifier(null); this.tlsConfiguration.setTrustManagers(this.getTrustManagers(this.getCertsFromKeyStore("AndroidCAStore"))); @@ -84,6 +84,14 @@ class CordovaServerTrust implements Runnable { } } + private String getWebAssetDir() { + return isRunningOnCapacitor()? "public" : "www"; + } + + private boolean isRunningOnCapacitor() { + return this.activity.getClass().getSuperclass().getName().contains("com.getcapacitor"); + } + private TrustManager[] getTrustManagers(KeyStore store) throws GeneralSecurityException { String tmfAlgorithm = TrustManagerFactory.getDefaultAlgorithm(); TrustManagerFactory tmf = TrustManagerFactory.getInstance(tmfAlgorithm); diff --git a/src/ios/SM_AFNetworking/SM_AFSecurityPolicy.m b/src/ios/SM_AFNetworking/SM_AFSecurityPolicy.m index c15efb9..7319e40 100644 --- a/src/ios/SM_AFNetworking/SM_AFSecurityPolicy.m +++ b/src/ios/SM_AFNetworking/SM_AFSecurityPolicy.m @@ -155,8 +155,18 @@ static NSArray * AFPublicKeyTrustChainForServerTrust(SecTrustRef serverTrust) { @implementation SM_AFSecurityPolicy ++(BOOL) isRunningOnCapacitor { + return NSClassFromString(@"CAPPlugin") != nil; +} + + (NSSet *)certificatesInBundle:(NSBundle *)bundle { - NSArray *paths = [bundle pathsForResourcesOfType:@"cer" inDirectory:@"www/certificates"]; + NSString* assetDir = @"www"; + if([self isRunningOnCapacitor]) { + // we are running on capacitor and its assets dir is 'public' + assetDir = @"public"; + } + + NSArray *paths = [bundle pathsForResourcesOfType:@"cer" inDirectory: [NSString stringWithFormat:@"%@/certificates", assetDir]]; NSMutableSet *certificates = [NSMutableSet setWithCapacity:[paths count]]; for (NSString *path in paths) { @@ -171,7 +181,7 @@ static NSArray * AFPublicKeyTrustChainForServerTrust(SecTrustRef serverTrust) { static NSSet *_defaultPinnedCertificates = nil; static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ - NSBundle *bundle = [NSBundle bundleForClass:[self class]]; + NSBundle *bundle = [self isRunningOnCapacitor] ? [NSBundle mainBundle] : [NSBundle bundleForClass:[self class]]; _defaultPinnedCertificates = [self certificatesInBundle:bundle]; });