Closed
Description
Following assemblies/types/methods need to be changed to throw PNSE and annotated with System.Runtime.Versioning.UnsupportedOSPlatformAttribute
because they are not supported on iOS/tvOS/MacCatalyst
- System.Diagnostics.Process
- Process.Start + friends (still supported on macCatalyst)
- System.Security.Cryptography.Algorithms (re-implemented in [macOS] Implement RSA, ECC through new macOS 10.12 APIs #51620 and Make DSA.Create, AesCcm, AesGcm, ChaCha20Poly1305 throw PNSE on iOS #52978)
-
All methods referencinglibSystem.Security.Cryptography.Native.OpenSsl.dylib
-
AppleCryptoNative_EccGenerateKey -
AppleCryptoNative_SecKeychainItemCopyKeychain -
AppleCryptoNative_SecKeychainCreate -
AppleCryptoNative_SecKeychainDelete -
AppleCryptoNative_SetKeychainNeverLock -
AppleCryptoNative_RsaGenerateKey -
AppleCryptoNative_RsaEncryptOaep -
AppleCryptoNative_RsaEncryptPkcs -
AppleCryptoNative_RsaDecryptOaep -
AppleCryptoNative_RsaDecryptPkcs -
AppleCryptoNative_SecKeyImportEphemeral -
AppleCryptoNative_GenerateSignature -
AppleCryptoNative_GenerateSignatureWithHashAlgorithm -
AppleCryptoNative_VerifySignature -
AppleCryptoNative_VerifySignatureWithHashAlgorithm -
AppleCryptoNative_SecKeyExport
-
- System.Security.Cryptography.X509Certificates (iOS PAL implemented in [iOS] Implement iOS PAL for S.S.C.X509Certificates #52191)
-
All AppleCryptoNative_* methods as in SSCA -
AppleCryptoNative_X509ImportCertificate -
AppleCryptoNative_X509ImportCollection -
AppleCryptoNative_X509GetRawData -
AppleCryptoNative_X509ExportData -
AppleCryptoNative_X509CopyWithPrivateKey -
AppleCryptoNative_X509MoveToKeychain -
AppleCryptoNative_X509StoreAddCertificate -
AppleCryptoNative_X509StoreRemoveCertificate
-
The fixes should be made in the way that code that depends on native API is never compiled into managed assembly to resolve issues like #47533
Upd. 05/04/21 The latest list of PNSE-throwing APIs - #47910 (comment)
Upd. 06/15/21 The issue has been addressed by re-implementing/re-enabling some previously unsupported API or annotating ones which are still unsupported.