Sdílet prostřednictvím


Kryptografické primitivy OpenSSL se v macOS nepodporují

Od verze .NET 10 se kryptografické primitivy založené na OpenSSL už v macOS nepodporují. System.Security.Cryptography.AesCcm a třídy, které jsou specifické pro OpenSSL, jako například System.Security.Cryptography.RSAOpenSsl, nyní na macOS vyvolávají PlatformNotSupportedException.

Verze byla představena

.NET 10

Předchozí chování

Dříve třídy specifické pro OpenSSL, například System.Security.Cryptography.RSAOpenSsl, fungovaly v systému macOS, pokud byl OpenSSL k dispozici.

System.Security.Cryptography.AesCcm pracoval(a) v systému macOS, pokud je k dispozici OpenSSL.

Nové chování

Počínaje rozhraním .NET 10 nefungují třídy specifické pro OpenSSL, jako je RSAOpenSsl, na systému macOS, i když je OpenSSL k dispozici, a je vyvolána výjimka PlatformNotSupportedException.

AesCcm PlatformNotSupportedException vyvolává výjimku.

Typ zásadní změny

Jedná se o změnu chování.

Důvod změny

Podpora primitiv založených na OpenSSL pochází z .NET Core 1.0, kde byla kryptografie v systému macOS implementována pomocí OpenSSL. To nebylo ideální, protože nedávná verze OpenSSL nepřichází v macOS a získání a konfigurace OpenSSL v macOS byla problematickou. V časovém rámci .NET Core 2.0 byla kryptografie přesunuta do integrované funkce Společnosti Apple, takže kryptografické funkce "právě fungovaly", aniž by bylo nutné získat další komponenty.

Typy s příponou OpenSsl byly ponechány jako implementované OpenSSL a AesCcm nemají implementaci v kryptografických knihovnách společnosti Apple.

Podpora těchto primitiv založených na OpenSSL v systému macOS je obtížnější, protože Apple ztěžuje načítání knihoven z určitých cest a komplikuje distribuci softwaru v systému macOS.

Pokud používáte primitivy založené na OpenSSL bez konkrétního záměru využití OpenSSL, doporučujeme použít nástroje, které poskytují implementaci pro macOS:

  • new DSAOpenSsl(...) –>DSA.Create(...)
  • new ECDiffieHellmanOpenSsl(...) –>ECDiffieHellman.Create(...)
  • new ECDsaOpenSsl(...) –>ECDsa.Create(...)
  • new RSAOpenSsl(...) –>RSA.Create(...)

System.Security.Cryptography.AesCcm nemá žádný funkční ekvivalent v systému macOS. Zvažte použití jiného kryptografického primitiva, například System.Security.Cryptography.AesGcmmísto toho.

Ovlivněná rozhraní API