@@ -97,13 +97,9 @@ List<String> binariesWithoutEntitlements(String flutterRoot) {
9797 'artifacts/engine/ios-profile/extension_safe/Flutter.xcframework/ios-arm64/Flutter.framework/Flutter' ,
9898 'artifacts/engine/ios-profile/extension_safe/Flutter.xcframework/ios-arm64_x86_64-simulator/Flutter.framework/Flutter' ,
9999 'artifacts/engine/ios-release/Flutter.xcframework/ios-arm64/Flutter.framework/Flutter' ,
100- 'artifacts/engine/ios-release/Flutter.xcframework/ios-arm64/dSYMs/Flutter.framework.dSYM/Contents/Resources/DWARF/Flutter' ,
101100 'artifacts/engine/ios-release/Flutter.xcframework/ios-arm64_x86_64-simulator/Flutter.framework/Flutter' ,
102- 'artifacts/engine/ios-release/Flutter.xcframework/ios-arm64_x86_64-simulator/dSYMs/Flutter.framework.dSYM/Contents/Resources/DWARF/Flutter' ,
103101 'artifacts/engine/ios-release/extension_safe/Flutter.xcframework/ios-arm64/Flutter.framework/Flutter' ,
104- 'artifacts/engine/ios-release/extension_safe/Flutter.xcframework/ios-arm64/dSYMs/Flutter.framework.dSYM/Contents/Resources/DWARF/Flutter' ,
105102 'artifacts/engine/ios-release/extension_safe/Flutter.xcframework/ios-arm64_x86_64-simulator/Flutter.framework/Flutter' ,
106- 'artifacts/engine/ios-release/extension_safe/Flutter.xcframework/ios-arm64_x86_64-simulator/dSYMs/Flutter.framework.dSYM/Contents/Resources/DWARF/Flutter' ,
107103 'artifacts/engine/ios/Flutter.xcframework/ios-arm64/Flutter.framework/Flutter' ,
108104 'artifacts/engine/ios/Flutter.xcframework/ios-arm64_x86_64-simulator/Flutter.framework/Flutter' ,
109105 'artifacts/engine/ios/extension_safe/Flutter.xcframework/ios-arm64/Flutter.framework/Flutter' ,
@@ -113,6 +109,21 @@ List<String> binariesWithoutEntitlements(String flutterRoot) {
113109 .map ((String relativePath) => path.join (flutterRoot, 'bin' , 'cache' , relativePath)).toList ();
114110}
115111
112+ /// Binaries that are not expected to be codesigned.
113+ ///
114+ /// This list should be kept in sync with the actual contents of Flutter's cache.
115+ List <String > unsignedBinaries (String flutterRoot) {
116+ return < String > [
117+ 'artifacts/engine/darwin-x64-release/FlutterMacOS.xcframework/macos-arm64_x86_64/dSYMs/FlutterMacOS.framework.dSYM/Contents/Resources/DWARF/FlutterMacOS' ,
118+ 'artifacts/engine/ios-release/Flutter.xcframework/ios-arm64/dSYMs/Flutter.framework.dSYM/Contents/Resources/DWARF/Flutter' ,
119+ 'artifacts/engine/ios-release/Flutter.xcframework/ios-arm64_x86_64-simulator/dSYMs/Flutter.framework.dSYM/Contents/Resources/DWARF/Flutter' ,
120+ 'artifacts/engine/ios-release/extension_safe/Flutter.xcframework/ios-arm64/dSYMs/Flutter.framework.dSYM/Contents/Resources/DWARF/Flutter' ,
121+ 'artifacts/engine/ios-release/extension_safe/Flutter.xcframework/ios-arm64_x86_64-simulator/dSYMs/Flutter.framework.dSYM/Contents/Resources/DWARF/Flutter' ,
122+ ]
123+ .map ((String relativePath) => path.join (flutterRoot, 'bin' , 'cache' , relativePath)).toList ();
124+ }
125+
126+
116127/// xcframeworks that are expected to be codesigned.
117128///
118129/// This list should be kept in sync with the actual contents of Flutter's
@@ -137,8 +148,8 @@ List<String> signedXcframeworks(String flutterRoot) {
137148/// This function ignores code signatures and entitlements, and is intended to
138149/// be run on every commit. It should throw if either new binaries are added
139150/// to the cache or expected binaries removed. In either case, this class'
140- /// [binariesWithEntitlements] or [binariesWithoutEntitlements] lists should
141- /// be updated accordingly.
151+ /// [binariesWithEntitlements] , [binariesWithoutEntitlements] , and
152+ /// [unsignedBinaries] lists should be updated accordingly.
142153Future <void > verifyExist (
143154 String flutterRoot,
144155 {@visibleForTesting ProcessManager processManager = const LocalProcessManager ()
@@ -147,16 +158,18 @@ Future<void> verifyExist(
147158 path.join (flutterRoot, 'bin' , 'cache' ),
148159 processManager: processManager,
149160 );
150- final List <String > allExpectedFiles = binariesWithEntitlements (flutterRoot) + binariesWithoutEntitlements (flutterRoot);
161+ final List <String > expectedSigned = binariesWithEntitlements (flutterRoot) + binariesWithoutEntitlements (flutterRoot);
162+ final List <String > expectedUnsigned = unsignedBinaries (flutterRoot);
151163 final Set <String > foundFiles = < String > {
152164 for (final String binaryPath in binaryPaths)
153- if (allExpectedFiles.contains (binaryPath)) binaryPath
165+ if (expectedSigned.contains (binaryPath)) binaryPath
166+ else if (expectedUnsigned.contains (binaryPath)) binaryPath
154167 else throw Exception ('Found unexpected binary in cache: $binaryPath ' ),
155168 };
156169
157- if (foundFiles.length < allExpectedFiles .length) {
170+ if (foundFiles.length < expectedSigned .length) {
158171 final List <String > unfoundFiles = < String > [
159- for (final String file in allExpectedFiles ) if (! foundFiles.contains (file)) file,
172+ for (final String file in expectedSigned ) if (! foundFiles.contains (file)) file,
160173 ];
161174 print (
162175 'Expected binaries not found in cache:\n\n ${unfoundFiles .join ('\n ' )}\n\n '
@@ -196,6 +209,11 @@ Future<void> verifySignatures(
196209 if (signedXcframeworks (flutterRoot).contains (pathToCheck)) {
197210 verifySignature = true ;
198211 }
212+ if (unsignedBinaries (flutterRoot).contains (pathToCheck)) {
213+ // Binary is expected to be unsigned. No need to check signature, entitlements.
214+ continue ;
215+ }
216+
199217 if (! verifySignature && ! verifyEntitlements) {
200218 unexpectedFiles.add (pathToCheck);
201219 print ('Unexpected binary or xcframework $pathToCheck found in cache!' );
0 commit comments