From c75b22f851c6a985b5f7de582290f0692d510228 Mon Sep 17 00:00:00 2001 From: Kevin Jones Date: Sat, 26 Jun 2021 22:02:33 -0400 Subject: [PATCH 1/3] Fix missing entrypoints and add build-time validation --- .../CMakeLists.txt | 11 ++++++++++ .../entrypoints.c | 22 ++++++++++++++++--- 2 files changed, 30 insertions(+), 3 deletions(-) diff --git a/src/libraries/Native/Unix/System.Security.Cryptography.Native.Apple/CMakeLists.txt b/src/libraries/Native/Unix/System.Security.Cryptography.Native.Apple/CMakeLists.txt index a9029ec629068..a99c2a12160f6 100644 --- a/src/libraries/Native/Unix/System.Security.Cryptography.Native.Apple/CMakeLists.txt +++ b/src/libraries/Native/Unix/System.Security.Cryptography.Native.Apple/CMakeLists.txt @@ -73,6 +73,17 @@ if (GEN_SHARED_LIB) target_link_libraries(System.Security.Cryptography.Native.Apple ${NATIVE_LIBS_EXTRA} ) + + if (NOT CLR_CMAKE_TARGET_MACCATALYST AND NOT CLR_CMAKE_TARGET_IOS AND NOT CLR_CMAKE_TARGET_TVOS) + add_custom_command(TARGET System.Security.Cryptography.Native.Apple POST_BUILD + COMMENT "Verifying System.Security.Cryptography.Native.Apple points against entrypoints.c " + COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/../verify-entrypoints.sh + $ + ${CMAKE_CURRENT_SOURCE_DIR}/../../Unix/System.Security.Cryptography.Native.Apple/entrypoints.c + ${CMAKE_NM} + VERBATIM + ) + endif() endif() if (GEN_SHARED_LIB) diff --git a/src/libraries/Native/Unix/System.Security.Cryptography.Native.Apple/entrypoints.c b/src/libraries/Native/Unix/System.Security.Cryptography.Native.Apple/entrypoints.c index 1833d4a2161ac..cc3a633f5d04d 100644 --- a/src/libraries/Native/Unix/System.Security.Cryptography.Native.Apple/entrypoints.c +++ b/src/libraries/Native/Unix/System.Security.Cryptography.Native.Apple/entrypoints.c @@ -30,8 +30,11 @@ static const Entry s_cryptoAppleNative[] = DllImportEntry(AppleCryptoNative_DigestFinal) DllImportEntry(AppleCryptoNative_DigestCurrent) DllImportEntry(AppleCryptoNative_DigestOneShot) + DllImportEntry(AppleCryptoNative_DigestReset) DllImportEntry(AppleCryptoNative_EccGenerateKey) DllImportEntry(AppleCryptoNative_EccGetKeySizeInBits) + DllImportEntry(AppleCryptoNative_EcdhKeyAgree) + DllImportEntry(AppleCryptoNative_GetRandomBytes) DllImportEntry(AppleCryptoNative_HmacFree) DllImportEntry(AppleCryptoNative_HmacCreate) DllImportEntry(AppleCryptoNative_HmacInit) @@ -40,14 +43,22 @@ static const Entry s_cryptoAppleNative[] = DllImportEntry(AppleCryptoNative_HmacCurrent) DllImportEntry(AppleCryptoNative_HmacOneShot) DllImportEntry(AppleCryptoNative_SecKeychainItemCopyKeychain) + DllImportEntry(AppleCryptoNative_SecKeychainCopyDefault) DllImportEntry(AppleCryptoNative_SecKeychainCreate) DllImportEntry(AppleCryptoNative_SecKeychainDelete) - DllImportEntry(AppleCryptoNative_SecKeychainCopyDefault) + DllImportEntry(AppleCryptoNative_SecKeychainEnumerateCerts) DllImportEntry(AppleCryptoNative_SecKeychainOpen) DllImportEntry(AppleCryptoNative_SecKeychainUnlock) - DllImportEntry(AppleCryptoNative_SetKeychainNeverLock) DllImportEntry(AppleCryptoNative_SecKeychainEnumerateIdentities) - DllImportEntry(AppleCryptoNative_GetRandomBytes) + DllImportEntry(AppleCryptoNative_SetKeychainNeverLock) + DllImportEntry(AppleCryptoNative_SslCopyCADistinguishedNames) + DllImportEntry(AppleCryptoNative_SslCopyCertChain) + DllImportEntry(AppleCryptoNative_SslIsHostnameMatch) + DllImportEntry(AppleCryptoNative_SslRead) + DllImportEntry(AppleCryptoNative_SslSetBreakOnClientAuth) + DllImportEntry(AppleCryptoNative_SslSetBreakOnServerAuth) + DllImportEntry(AppleCryptoNative_SslSetIoCallbacks) + DllImportEntry(AppleCryptoNative_SslWrite) DllImportEntry(AppleCryptoNative_RsaGenerateKey) DllImportEntry(AppleCryptoNative_RsaDecryptOaep) DllImportEntry(AppleCryptoNative_RsaDecryptPkcs) @@ -87,7 +98,10 @@ static const Entry s_cryptoAppleNative[] = DllImportEntry(AppleCryptoNative_StoreEnumerateMachineRoot) DllImportEntry(AppleCryptoNative_StoreEnumerateUserDisallowed) DllImportEntry(AppleCryptoNative_StoreEnumerateMachineDisallowed) + DllImportEntry(AppleCryptoNative_X509ChainCreate) + DllImportEntry(AppleCryptoNative_X509DemuxAndRetainHandle) DllImportEntry(AppleCryptoNative_X509GetContentType) + DllImportEntry(AppleCryptoNative_X509GetPublicKey) DllImportEntry(AppleCryptoNative_X509CopyCertFromIdentity) DllImportEntry(AppleCryptoNative_X509CopyPrivateKeyFromIdentity) DllImportEntry(AppleCryptoNative_X509ImportCollection) @@ -105,6 +119,8 @@ static const Entry s_cryptoAppleNative[] = DllImportEntry(AppleCryptoNative_X509ChainGetStatusAtIndex) DllImportEntry(AppleCryptoNative_GetOSStatusForChainStatus) DllImportEntry(AppleCryptoNative_X509ChainSetTrustAnchorCertificates) + DllImportEntry(AppleCryptoNative_X509StoreAddCertificate) + DllImportEntry(AppleCryptoNative_X509StoreRemoveCertificate) DllImportEntry(AppleCryptoNative_Pbkdf2) DllImportEntry(AppleCryptoNative_X509GetSubjectSummary) }; From cff95cf030e37b693638027235e60602d1b2f9fe Mon Sep 17 00:00:00 2001 From: Kevin Jones Date: Sun, 27 Jun 2021 02:26:59 +0000 Subject: [PATCH 2/3] Fix missing include --- .../Unix/System.Security.Cryptography.Native.Apple/entrypoints.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/libraries/Native/Unix/System.Security.Cryptography.Native.Apple/entrypoints.c b/src/libraries/Native/Unix/System.Security.Cryptography.Native.Apple/entrypoints.c index cc3a633f5d04d..5162b7a219356 100644 --- a/src/libraries/Native/Unix/System.Security.Cryptography.Native.Apple/entrypoints.c +++ b/src/libraries/Native/Unix/System.Security.Cryptography.Native.Apple/entrypoints.c @@ -21,6 +21,7 @@ #include "pal_x509_macos.h" #include "pal_x509chain.h" #include "pal_keyderivation_macos.h" +#include "pal_keyagree.h" static const Entry s_cryptoAppleNative[] = { From 46f470e40ec61794dc50eecbfa099aaaffe56bc5 Mon Sep 17 00:00:00 2001 From: Kevin Jones Date: Sun, 27 Jun 2021 11:06:53 -0400 Subject: [PATCH 3/3] Update src/libraries/Native/Unix/System.Security.Cryptography.Native.Apple/CMakeLists.txt Co-authored-by: Jan Kotas --- .../System.Security.Cryptography.Native.Apple/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libraries/Native/Unix/System.Security.Cryptography.Native.Apple/CMakeLists.txt b/src/libraries/Native/Unix/System.Security.Cryptography.Native.Apple/CMakeLists.txt index a99c2a12160f6..77aa423237c35 100644 --- a/src/libraries/Native/Unix/System.Security.Cryptography.Native.Apple/CMakeLists.txt +++ b/src/libraries/Native/Unix/System.Security.Cryptography.Native.Apple/CMakeLists.txt @@ -79,7 +79,7 @@ if (GEN_SHARED_LIB) COMMENT "Verifying System.Security.Cryptography.Native.Apple points against entrypoints.c " COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/../verify-entrypoints.sh $ - ${CMAKE_CURRENT_SOURCE_DIR}/../../Unix/System.Security.Cryptography.Native.Apple/entrypoints.c + ${CMAKE_CURRENT_SOURCE_DIR}/entrypoints.c ${CMAKE_NM} VERBATIM )