|
- /* Copyright (c) 2012, 2021, Oracle and/or its affiliates.
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License, version 2.0,
- as published by the Free Software Foundation.
-
- This program is also distributed with certain software (including
- but not limited to OpenSSL) that is licensed under separate terms,
- as designated in a particular file or component or in included license
- documentation. The authors of MySQL hereby grant you an additional
- permission to link the program and your derivative works with the
- separately licensed software that they have included with MySQL.
-
- Without limiting anything contained in the foregoing, this file,
- which is part of C Driver for MySQL (Connector/C), is also subject to the
- Universal FOSS Exception, version 1.0, a copy of which can be found at
- http://oss.oracle.com/licenses/universal-foss-exception.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License, version 2.0, for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software Foundation,
- 51 Franklin Street, Suite 500, Boston, MA 02110-1335 USA */
-
-
- /**
- @file
-
- @brief
- Wrapper functions for OpenSSL implementations.
- */
-
- #include <my_global.h>
- #include <sha1.h>
-
- #if defined(HAVE_OPENSSL)
- #include <openssl/sha.h>
-
- int mysql_sha1_reset(SHA_CTX *context)
- {
- return SHA1_Init(context);
- }
-
-
- int mysql_sha1_input(SHA_CTX *context, const uint8 *message_array,
- unsigned length)
- {
- return SHA1_Update(context, message_array, length);
- }
-
-
- int mysql_sha1_result(SHA_CTX *context,
- uint8 Message_Digest[SHA1_HASH_SIZE])
- {
- return SHA1_Final(Message_Digest, context);
- }
-
- #endif /* HAVE_OPENSSL */
-
- /**
- Wrapper function to compute SHA1 message digest.
-
- @param digest [out] Computed SHA1 digest
- @param buf [in] Message to be computed
- @param len [in] Length of the message
-
- @return void
- */
- void compute_sha1_hash(uint8 *digest, const char *buf, size_t len)
- {
- #if defined(HAVE_OPENSSL)
- SHA_CTX sha1_context;
-
- mysql_sha1_reset(&sha1_context);
- mysql_sha1_input(&sha1_context, (const uint8 *) buf, len);
- mysql_sha1_result(&sha1_context, digest);
- #endif /* HAVE_OPENSSL */
- }
-
-
- /**
- Wrapper function to compute SHA1 message digest for
- two messages in order to emulate sha1(msg1, msg2).
-
- @param digest [out] Computed SHA1 digest
- @param buf1 [in] First message
- @param len1 [in] Length of first message
- @param buf2 [in] Second message
- @param len2 [in] Length of second message
-
- @return void
- */
- void compute_sha1_hash_multi(uint8 *digest, const char *buf1, int len1,
- const char *buf2, int len2)
- {
- #if defined(HAVE_OPENSSL)
- SHA_CTX sha1_context;
-
- mysql_sha1_reset(&sha1_context);
- mysql_sha1_input(&sha1_context, (const uint8 *) buf1, len1);
- mysql_sha1_input(&sha1_context, (const uint8 *) buf2, len2);
- mysql_sha1_result(&sha1_context, digest);
- #endif /* HAVE_OPENSSL */
- }
|