EVP_MD-SHA1(7SSL)

πŸ’… EVP_MD-SHA1 β€” the SHA1 glow-up, explained

okay bestie, come sit with me, because this is the manual page for EVP_MD-SHA1 (that's the OpenSSL one, manual name EVP_MD-SHA1(7SSL) if you're doing citations for your little assignment πŸŽ€), and it's literally just the SHA1 EVP_MD implementation. That's the name section, that's the whole vibe, no notes. ✨


🌈 DESCRIPTION 🌈

So here's the tea: this is the support for computing SHA1 digests through the EVP_MD API. That's it, that's the job, and it does it flawlessly. πŸ’β€β™€οΈ

πŸͺͺ Identities πŸͺͺ

This implementation is out here living its double life β€” it's available with the FIPS provider and the default provider, like a girl who's in two friend groups and thriving in both. 🫢

And it answers to two names, both of them iconic:

  • "SHA1"
  • "SHA-1"

(the hyphen is giving ✨aesthetic✨, ngl)

πŸ” Gettable Parameters πŸ”

This implementation supports the common gettable parameters described over in EVP_MD-common(7). So if you want the deets on those, that's your page, go drink from that fountain. πŸ’–

πŸŽ›οΈ Settable Context Parameters πŸŽ›οΈ

Now THIS is the part with the plot twist. This implementation supports the following OSSL_PARAM(3) entries, and you set them for an EVP_MD_CTX with EVP_MD_CTX_set_params(3):

  • "ssl3-ms" (OSSL_DIGEST_PARAM_SSL3_MS) <octet string> β€” okay so this one is set by libssl to calculate a signature hash for an SSLv3 CertificateVerify message, as per RFC6101. And no cap, there's a very specific order here: it is only set after all handshake messages have already been digested via OP_digest_update() calls. Don't skip ahead bestie, the sequence matters. 😭

The parameter provides the master secret value to be added to the digest. The digest implementation should calculate the complete digest as per RFC6101 section 5.6.8. And then β€” listen, listen β€” the next call after setting this parameter should be OP_digest_final(). That's the rule. That's literally the rule. πŸ™ˆ

πŸ’€ fr fr: setting this thing and then doing something other than OP_digest_final() next is not the move. The page says the next call should be OP_digest_final(), so like... do that. Periodt.

πŸ‘€ SEE ALSO πŸ‘€

Go read these too, they're all part of the same little universe:


Copyright 2020 The OpenSSL Project Authors. All Rights Reserved.

Licensed under the Apache License 2.0 (the "License"). You may not use this file except in compliance with the License. You can obtain a copy in the file LICENSE in the source distribution or at <https://www.openssl.org/source/license.html>.


and that's the whole page, bestie! 🌸 mwah πŸ’‹ this was EVP_MD-SHA1(7SSL) from OpenSSL 4.0.3, dated 2026-09-29 β€” slay, go compute some digests responsibly πŸ‘‘βœ¨πŸ’–

πŸ“¦ where this page comes from