/usr/lib/swipl/library/ext/ssl/ssl.pl
All Application Manual Name SummaryHelp

  • ext
    • ssl
      • ssl.pl -- Secure Socket Layer (SSL) library
        • ssl_context/3
        • ssl_upgrade_legacy_options/2
        • ssl_add_certificate_key/4
        • ssl_set_options/3
        • ssl_property/2
        • ssl_negotiate/5
        • ssl_peer_certificate/2
        • ssl_peer_certificate_chain/2
        • ssl_session/2
        • load_certificate/2
        • write_certificate/3
        • load_crl/2
        • system_root_certificates/1
        • load_private_key/3
        • load_public_key/2
        • cert_accept_any/5
        • same_certificate/2
        • verify_certificate_issuer/2
        • verify_certificate/3
        • certificate_field/2
        • ssl_secure_ciphers/1
      • crypto.pl -- Cryptography and authentication library
      • xmlenc.pl -- XML encryption library
      • xmldsig.pl -- XML Digital signature
 ssl_negotiate(+SSL, +PlainRead, +PlainWrite, -SSLRead, -SSLWrite) is det
Once a connection is established and a read/write stream pair is available, (PlainRead and PlainWrite), this predicate can be called to negotiate an SSL session over the streams. If the negotiation is successful, SSLRead and SSLWrite are returned.

After a successful handshake and finishing the communication the user must close SSLRead and SSLWrite, for example using call_cleanup(close(SSLWrite), close(SSLRead)). If the SSL context (created with ssl_context/3 has the option close_parent(true) (default false), closing SSLRead and SSLWrite also closes the original PlainRead and PlainWrite streams. Otherwise these must be closed explicitly by the user.

Errors
- ssl_error(Code, LibName, FuncName, Reason) is raised if the negotiation fails. The streams PlainRead and PlainWrite are not closed, but an unknown amount of data may have been read and written.