SSLSetALPNProtocols missing

Originator:ePirat07
Number:rdar://34790589 Date Originated:
Status:Duplicate Resolved:
Product:Security Framework Product Version:macOS 10.13
Classification:Bug Reproducible:Always
 
Summary:
As documented, SSLSetALPNProtocols should be available since macOS 10.13 (High Sierra). This is not the case, the Security Framework is missing the function even though the header contains it.

Steps to Reproduce:
Compile + link the attached program.

Expected Results:
The program should compile and link fine on macOS 10.13.

Actual Results:
Linking fails due to the missing symbol in the Security framework:

Undefined symbols for architecture x86_64:
  "_SSLSetALPNProtocols", referenced from:
      _main in main.o
ld: symbol(s) not found for architecture x86_64


Version/Build:
macOS High Sierra 10.13.1 Beta (17B25c)

Notes:
Dumping the Security framework symbols with nm clearly shows it is missing.
(The other ALPN functions are private API)

$ nm /System/Library/Frameworks/Security.framework/Versions/Current/Security | grep ALPN
000000000022c8b5 T _SSLGetALPNData
000000000022c880 T _SSLSetALPNData
000000000022c84b T _SSLSetALPNFunc

Duplicate of 33907676

Example program code:

#include <CoreFoundation/CoreFoundation.h>
#include <Security/Security.h>

int main(int argc, const char * argv[]) {
    CFMutableArrayRef alpnValues =
    CFArrayCreateMutable(kCFAllocatorDefault, 0, &kCFTypeArrayCallBacks);
    
    SSLSetALPNProtocols((SSLContextRef)0x001, alpnValues);
    CFRelease(alpnValues);
    
    return 0;
}

Comments


Please note: Reports posted here will not necessarily be seen by Apple. All problems should be submitted at bugreport.apple.com before they are posted here. Please only post information for Radars that you have filed yourself, and please do not include Apple confidential information in your posts. Thank you!