Sample code for 30+ languages & platforms
DataFlex

Enumerate Server-Advertised Acceptable Client CAs

See more Socket/SSL/TLS Examples

Demonstrates Socket.GetSslAcceptableClientCaDn, which returns a certificate-authority distinguished name advertised by a TLS server when it requests a client certificate.

Background. Valid indexes range from 0 through NumSslAcceptableClientCAs minus one. A client can use these names to select an appropriate client certificate.

Chilkat DataFlex Downloads

DataFlex
Use ChilkatAx-win32.pkg

Procedure Test
    Boolean iSuccess
    Handle hoSocket
    Boolean iBTls
    Integer iMaxWaitMs
    Integer iNumCAs
    Integer i
    String sCaDn
    String sTemp1
    Boolean bTemp1

    Move False To iSuccess

    Get Create (RefClass(cComChilkatSocket)) To hoSocket
    If (Not(IsComObjectCreated(hoSocket))) Begin
        Send CreateComObject of hoSocket
    End

    //  Connect to the server using TLS.
    Move True To iBTls
    Move 5000 To iMaxWaitMs
    Get ComConnect Of hoSocket "example.com" 5000 iBTls iMaxWaitMs To iSuccess
    If (iSuccess = False) Begin
        Get ComLastErrorText Of hoSocket To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    //  After connecting to a server that requests a client certificate, enumerate the certificate-
    //  authority distinguished names the server advertised as acceptable.
    Get ComNumSslAcceptableClientCAs Of hoSocket To iNumCAs

    For i From 0 To (iNumCAs - 1)
        Get ComGetSslAcceptableClientCaDn Of hoSocket i To sCaDn
        Get ComLastMethodSuccess Of hoSocket To bTemp1
        If (bTemp1 = False) Begin
            Get ComLastErrorText Of hoSocket To sTemp1
            Showln sTemp1
            Procedure_Return
        End

        Showln sCaDn
    Loop



End_Procedure