{
    "mode": "man",
    "parameter": "EVP_SIGNATURE-ED448",
    "section": "7ssl",
    "url": "https://www.chedong.com/phpMan.php/man/EVP_SIGNATURE-ED448/7ssl/json",
    "generated": "2026-10-07T21:05:24Z",
    "sections": {
        "NAME": {
            "content": "EVPSIGNATURE-ED25519, EVPSIGNATURE-ED448, Ed25519, Ed448 - EVPPKEY Ed25519 and Ed448\nsupport\n",
            "subsections": []
        },
        "DESCRIPTION": {
            "content": "The Ed25519 and Ed448 EVPPKEY implementation supports key generation, one-shot digest sign\nand digest verify using PureEdDSA and Ed25519 or Ed448 (see RFC8032). It has associated\nprivate and public key formats compatible with RFC 8410.\n",
            "subsections": [
                {
                    "name": "ED25519 and ED448 Signature Parameters",
                    "content": "No additional parameters can be set during one-shot signing or verification.  In particular,\nbecause PureEdDSA is used, a digest must NOT be specified when signing or verifying.  See\nEVPPKEY-X25519(7) for information related to X25519 and X448 keys.\n\nThe following signature parameters can be retrieved using EVPPKEYCTXgetparams().\n\n\"algorithm-id\" (OSSLSIGNATUREPARAMALGORITHMID) <octet string>\nThe parameters are described in provider-signature(7).\n"
                }
            ]
        },
        "NOTES": {
            "content": "The  PureEdDSA  algorithm  does  not  support  the  streaming  mechanism  of  other signature\nalgorithms using, for example, EVPDigestUpdate().  The message to sign  or  verify  must  be\npassed using the one-shot EVPDigestSign() and EVPDigestVerify() functions.\n\nWhen  calling  EVPDigestSignInit() or EVPDigestVerifyInit(), the digest type parameter MUST\nbe set to NULL.\n\nApplications wishing to sign certificates (or other structures such as  CRLs  or  certificate\nrequests)  using  Ed25519 or Ed448 can either use X509sign() or X509signctx() in the usual\nway.\n\nEd25519 or Ed448 private keys can be set directly  using  EVPPKEYnewrawprivatekey(3)  or\nloaded from a PKCS#8 private key file using PEMreadbioPrivateKey(3) (or similar function).\nCompletely new keys can also be generated (see the example below). Setting a private key also\nsets the associated public key.\n\nEd25519  or  Ed448  public  keys  can be set directly using EVPPKEYnewrawpublickey(3) or\nloaded from a SubjectPublicKeyInfo structure in a PEM file using  PEMreadbioPUBKEY(3)  (or\nsimilar function).\n\nEd25519  and  Ed448  can be tested with the openssl-speed(1) application since version 1.1.1.\nValid algorithm names are ed25519, ed448 and eddsa. If eddsa is specified, then both  Ed25519\nand Ed448 are benchmarked.\n",
            "subsections": []
        },
        "EXAMPLES": {
            "content": "To sign a message using a ED25519 or ED448 key:\n\nvoid dosign(EVPPKEY *edkey, unsigned char *msg, sizet msglen)\n{\nsizet siglen;\nunsigned char *sig = NULL;\nEVPMDCTX *mdctx = EVPMDCTXnew();\n\nEVPDigestSignInit(mdctx, NULL, NULL, NULL, edkey);\n/* Calculate the requires size for the signature by passing a NULL buffer */\nEVPDigestSign(mdctx, NULL, &siglen, msg, msglen);\nsig = OPENSSLzalloc(siglen);\n\nEVPDigestSign(mdctx, sig, &siglen, msg, msglen);\n...\nOPENSSLfree(sig);\nEVPMDCTXfree(mdctx);\n}\n",
            "subsections": []
        },
        "SEE ALSO": {
            "content": "EVPPKEY-X25519(7) provider-signature(7), EVPDigestSignInit(3), EVPDigestVerifyInit(3),\n",
            "subsections": []
        },
        "COPYRIGHT": {
            "content": "Copyright 2017-2021 The OpenSSL Project Authors. All Rights Reserved.\n\nLicensed  under  the Apache License 2.0 (the \"License\").  You may not use this file except in\ncompliance with the License.  You can obtain a  copy  in  the  file  LICENSE  in  the  source\ndistribution or at <https://www.openssl.org/source/license.html>.\n\n3.0.13                                       2026-07-29                  EVPSIGNATURE-ED25519(7SSL)",
            "subsections": []
        }
    },
    "summary": "EVPSIGNATURE-ED25519, EVPSIGNATURE-ED448, Ed25519, Ed448 - EVPPKEY Ed25519 and Ed448 support",
    "flags": [],
    "examples": [
        "To sign a message using a ED25519 or ED448 key:",
        "void dosign(EVPPKEY *edkey, unsigned char *msg, sizet msglen)",
        "sizet siglen;",
        "unsigned char *sig = NULL;",
        "EVPMDCTX *mdctx = EVPMDCTXnew();",
        "EVPDigestSignInit(mdctx, NULL, NULL, NULL, edkey);",
        "/* Calculate the requires size for the signature by passing a NULL buffer */",
        "EVPDigestSign(mdctx, NULL, &siglen, msg, msglen);",
        "sig = OPENSSLzalloc(siglen);",
        "EVPDigestSign(mdctx, sig, &siglen, msg, msglen);",
        "...",
        "OPENSSLfree(sig);",
        "EVPMDCTXfree(mdctx);"
    ],
    "see_also": [
        {
            "name": "EVPPKEY-X25519",
            "section": "7",
            "url": "https://www.chedong.com/phpMan.php/man/EVPPKEY-X25519/7/json"
        },
        {
            "name": "provider-signature",
            "section": "7",
            "url": "https://www.chedong.com/phpMan.php/man/provider-signature/7/json"
        },
        {
            "name": "EVPDigestSignInit",
            "section": "3",
            "url": "https://www.chedong.com/phpMan.php/man/EVPDigestSignInit/3/json"
        },
        {
            "name": "EVPDigestVerifyInit",
            "section": "3",
            "url": "https://www.chedong.com/phpMan.php/man/EVPDigestVerifyInit/3/json"
        }
    ]
}