LibreSSL keeps OpenSSL's familiar libcrypto/libssl API and command line while removing legacy code, and adds its own libtls. macOS ships an older LibreSSL as its system crypto: on macOS 27.0.1, /usr/bin/openssl version printed LibreSSL 3.3.6 and ssh -V named the same library. The facts here were checked on the Alpine 3.24.2 package, LibreSSL 4.3.1 (upstream had reached 4.3.3), where the command is installed as libressl — scripts that call openssl fail there unless the compatibility package is added.
ECDSA behaves like OpenSSL's defaults: DER signatures, random nonces, no low-S normalization, and verification that accepts high-S. Unlike OpenSSL 3.2+, there is no deterministic RFC 6979 option. EVP_DigestVerify returned -1 for a raw r‖s signature, and the command line printed Error Verifying Data for it versus Verification Failure for a valid signature over other data — note the different capitalization from OpenSSL's messages, which breaks scripts that grep for the exact text.
Curves cover P-224 to P-521, secp256k1 and the Brainpool r1 curves; Ed25519 works through EVP_PKEY_ED25519, and there is no Ed448 at all. Key files interoperate with OpenSSL: SPKI and certificates for public keys, PKCS#8 (plain and encrypted) and SEC1 for private keys; ecparam -genkey writes SEC1 EC PRIVATE KEY, so convert with pkcs8 -topk8 when another tool wants PKCS#8, as the sample does.
Post-quantum support is partial: ML-KEM-768 and ML-KEM-1024 are available through LibreSSL's own MLKEM_* functions in <openssl/mlkem.h>, not through EVP or the command line, and ML-DSA does not exist (Algorithm ML-DSA-65 not found). Compare the algorithms in the post-quantum KEM playground; for signatures with ML-DSA use OpenSSL 3.5 or later.