X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=doc%2Fcrypto%2FEVP_DigestInit.pod;h=345b1ddfa79c896875db6ab7d763c53a27cb20af;hb=7f1120994eb93529bfb7f52f6d0766db52f24d4d;hp=337ffb7930c78433a0b24cb7fc1eb55e8488cc92;hpb=3cbe1980fd2c0b477c0a83d93f1c70b06c5c1b2b;p=oweals%2Fopenssl.git diff --git a/doc/crypto/EVP_DigestInit.pod b/doc/crypto/EVP_DigestInit.pod index 337ffb7930..345b1ddfa7 100644 --- a/doc/crypto/EVP_DigestInit.pod +++ b/doc/crypto/EVP_DigestInit.pod @@ -9,8 +9,9 @@ EVP_DigestInit, EVP_DigestUpdate, EVP_DigestFinal - EVP digest routines #include void EVP_DigestInit(EVP_MD_CTX *ctx, const EVP_MD *type); - void EVP_DigestUpdate(EVP_MD_CTX *ctx,const void *d, unsigned int cnt); - void EVP_DigestFinal(EVP_MD_CTX *ctx,unsigned char *md,unsigned int *s); + void EVP_DigestUpdate(EVP_MD_CTX *ctx, const void *d, unsigned int cnt); + void EVP_DigestFinal(EVP_MD_CTX *ctx, unsigned char *md, + unsigned int *s); #define EVP_MAX_MD_SIZE (16+20) /* The SSLv3 md5+sha1 type */ @@ -21,9 +22,10 @@ EVP_DigestInit, EVP_DigestUpdate, EVP_DigestFinal - EVP digest routines #define EVP_MD_size(e) ((e)->md_size) #define EVP_MD_block_size(e) ((e)->block_size) + #define EVP_MD_CTX_md(e) (e)->digest) #define EVP_MD_CTX_size(e) EVP_MD_size((e)->digest) #define EVP_MD_CTX_block_size(e) EVP_MD_block_size((e)->digest) - #define EVP_MD_CTX_type(e) ((e)->digest) + #define EVP_MD_CTX_type(e) EVP_MD_type((e)->digest) EVP_MD *EVP_md_null(void); EVP_MD *EVP_md2(void); @@ -43,60 +45,60 @@ EVP_DigestInit, EVP_DigestUpdate, EVP_DigestFinal - EVP digest routines The EVP digest routines are a high level interface to message digests. -B initialises a digest context B to use a digest +EVP_DigestInit() initialises a digest context B to use a digest B: this will typically be supplied by a function such as -B. +EVP_sha1(). -B hashes B bytes of data at B into the +EVP_DigestUpdate() hashes B bytes of data at B into the digest context B. This funtion can be called several times on the same B to hash additional data. -B retrieves the digest value from B and places +EVP_DigestFinal() retrieves the digest value from B and places it in B. If the B parameter is not NULL then the number of bytes of data written (i.e. the length of the digest) will be written to the integer at B, at most B bytes will be written. -After calling B no additional calls to B -can be made, but B can be called to initialiase a new +After calling EVP_DigestFinal() no additional calls to EVP_DigestUpdate() +can be made, but EVP_DigestInit() can be called to initialiase a new digest operation. -B can be used to copy the message digest state from +EVP_MD_CTX_copy() can be used to copy the message digest state from B to B. This is useful if large amounts of data are to be hashed which only differ in the last few bytes. -B and B return the size of the message digest +EVP_MD_size() and EVP_MD_CTX_size() return the size of the message digest when passed an B or an B structure, i.e. the size of the hash. -B and B return the block size of the +EVP_MD_block_size() and EVP_MD_CTX_block_size() return the block size of the message digest when passed an B or an B structure. -B and B return the NID of the OBJECT IDENTIFIER +EVP_MD_type() and EVP_MD_CTX_type() return the NID of the OBJECT IDENTIFIER representing the given message digest when passed an B structure. -For example B returns B. This function is +For example EVP_MD_type(EVP_sha1()) returns B. This function is normally used when setting ASN1 OIDs. -B return the B structure corresponding to the passed +EVP_MD_CTX_md() returns the B structure corresponding to the passed B. -B returns the NID of the public key signing algorithm associated -with this digest. For example B is associated with RSA so this will +EVP_MD_pkey_type() returns the NID of the public key signing algorithm associated +with this digest. For example EVP_sha1() is associated with RSA so this will return B. This "link" between digests and signature algorithms may not be retained in future versions of OpenSSL. -B, B, B, B, B and B +EVP_md2(), EVP_md5(), EVP_sha(), EVP_sha1(), EVP_mdc2() and EVP_ripemd160() return B structures for the MD2, MD5, SHA, SHA1, MDC2 and RIPEMD160 digest algorithms respectively. The associated signature algorithm is RSA in each case. -B and B return B structures for SHA and SHA1 digest +EVP_dss() and EVP_dss1() return B structures for SHA and SHA1 digest algorithms but using DSS (DSA) for the signature algorithm. -B is a "null" message digest that does nothing: i.e. the hash it +EVP_md_null() is a "null" message digest that does nothing: i.e. the hash it returns is of zero length. -B, B and B +EVP_get_digestbyname(), EVP_get_digestbynid() and EVP_get_digestbyobj() return an B structure when passed a digest name, a digest NID or -and ASN1_OBJECT structure respectively. The digest table must be initialised -using, for example, B for these functions to work. +an ASN1_OBJECT structure respectively. The digest table must be initialised +using, for example, OpenSSL_add_all_digests() for these functions to work. =head1 RETURN VALUES @@ -111,11 +113,11 @@ EVP_MD_size(), EVP_MD_block_size(), EVP_MD_CTX_size(e), EVP_MD_size(), EVP_MD_CTX_block_size() and EVP_MD_block_size() return the digest or block size in bytes. -EVP_md_null(), EVP_MD *EVP_md2(), EVP_MD *EVP_md5(), EVP_MD *EVP_sha(), -EVP_sha1(), EVP_dss(), EVP_dss1(), EVP_mdc2() and EVP_ripemd160() return -pointers to the corresponding EVP_MD structures. +EVP_md_null(), EVP_md2(), EVP_md5(), EVP_sha(), EVP_sha1(), EVP_dss(), +EVP_dss1(), EVP_mdc2() and EVP_ripemd160() return pointers to the +corresponding EVP_MD structures. -B, B and B +EVP_get_digestbyname(), EVP_get_digestbynid() and EVP_get_digestbyobj() return either an B structure or NULL if an error occurs. =head1 NOTES @@ -170,15 +172,12 @@ digest name passed on the command line. =head1 BUGS -B is not a good name because its name wrongly implies it does -the same as B but takes an B parameter instead. - Several of the functions do not return values: maybe they should. Although the internal digest operations will never fail some future hardware based operations might. The link between digests and signing algorithms results in a situation where -B must be used with RSA and B must be used with DSS +EVP_sha1() must be used with RSA and EVP_dss1() must be used with DSS even though they are identical digests. The size of an B structure is determined at compile time: this results @@ -186,6 +185,13 @@ in code that must be recompiled if the size of B increases. =head1 SEE ALSO +L, L, L, +L, L, L, +L, L + =head1 HISTORY +EVP_DigestInit(), EVP_DigestUpdate() and EVP_DigestFinal() are +available in all versions of SSLeay and OpenSSL. + =cut