Skip to main content
FreeRDP exposes a thin, OpenSSL-backed cryptography layer through include/freerdp/crypto/. The primary consumers are the TLS transport, NLA (CredSSP/NTLM/Kerberos), and server-side certificate configuration.

Certificate API

Header: <freerdp/crypto/certificate.h>

Lifecycle

Export

Fingerprint and hash

Subject and identity inspection

Validity

Key information

Verification


Private Key API

Header: <freerdp/crypto/privatekey.h>

Lifecycle

Key generation (since 3.16.0)

Inspection and export


NTLM / Kerberos (NLA)

FreeRDP’s NLA stack is built on WinPR’s SSPI layer (<winpr/sspi.h>) and does not expose a dedicated public API. Authentication flows are driven internally when:
  • The client connects with NLA security level (the default when settings->NlaSecurity = TRUE).
  • The server registers the Logon callback on the freerdp_peer to validate credentials.
The psPeerLogon callback (see Server Peer) provides SEC_WINNT_AUTH_IDENTITY containing the username and domain. For Remote Credential Guard, the RemoteCredentials callback delivers KERB_TICKET_LOGON and MSV1_0_REMOTE_SUPPLEMENTAL_CREDENTIAL structures.
All strings returned by freerdp_certificate_get_* functions are heap-allocated. Release them with free().
freerdp_certificate_new_from_file() does not accept passwords for encrypted private-key PEM bundles. Use freerdp_key_new_from_file_enc() for encrypted private keys.