%PDF- %PDF-
Direktori : /data/old/usr/lib/golang/src/crypto/internal/boring/ |
Current File : //data/old/usr/lib/golang/src/crypto/internal/boring/openssl_port_evp_md5_sha1.c |
// This file contains a backport of the EVP_md5_sha1 method. // +build linux // +build !android // +build !no_openssl // +build !cmd_go_bootstrap // +build !msan // +build !static // The following is a partial backport of crypto/evp/m_md5_sha1.c, // commit cbc8a839959418d8a2c2e3ec6bdf394852c9501e on the // OpenSSL_1_1_0-stable branch. The ctrl function has been removed. #include "goboringcrypto.h" #if OPENSSL_VERSION_NUMBER < 0x10100000L // New in OpenSSL 1.1. static inline void * _goboringcrypto_internal_EVP_MD_CTX_md_data(EVP_MD_CTX *ctx) { return ctx->md_data; } /* * Copyright 2015-2016 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the OpenSSL license (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 */ #if !defined(OPENSSL_NO_MD5) #include <openssl/evp.h> #include <openssl/objects.h> #include <openssl/x509.h> #include <openssl/md5.h> #include <openssl/sha.h> #include <openssl/rsa.h> struct md5_sha1_ctx { MD5_CTX md5; SHA_CTX sha1; }; static int _goboringcrypto_internal_init(EVP_MD_CTX *ctx) { struct md5_sha1_ctx *mctx = _goboringcrypto_internal_EVP_MD_CTX_md_data(ctx); if (!_goboringcrypto_internal_MD5_Init(&mctx->md5)) return 0; return _goboringcrypto_SHA1_Init(&mctx->sha1); } static int _goboringcrypto_internal_update(EVP_MD_CTX *ctx, const void *data, size_t count) { struct md5_sha1_ctx *mctx = _goboringcrypto_internal_EVP_MD_CTX_md_data(ctx); if (!_goboringcrypto_internal_MD5_Update(&mctx->md5, data, count)) return 0; return _goboringcrypto_SHA1_Update(&mctx->sha1, data, count); } static int _goboringcrypto_internal_final(EVP_MD_CTX *ctx, unsigned char *md) { struct md5_sha1_ctx *mctx = _goboringcrypto_internal_EVP_MD_CTX_md_data(ctx); if (!_goboringcrypto_internal_MD5_Final(md, &mctx->md5)) return 0; return _goboringcrypto_SHA1_Final(md + MD5_DIGEST_LENGTH, &mctx->sha1); } // Change: Removed: // static int ctrl(EVP_MD_CTX *ctx, int cmd, int mslen, void *ms) static const EVP_MD md5_sha1_md = { NID_md5_sha1, NID_md5_sha1, MD5_DIGEST_LENGTH + SHA_DIGEST_LENGTH, 0, _goboringcrypto_internal_init, _goboringcrypto_internal_update, _goboringcrypto_internal_final, NULL, NULL, EVP_PKEY_NULL_method, // Change: inserted MD5_CBLOCK, sizeof(EVP_MD *) + sizeof(struct md5_sha1_ctx), NULL, // Change: was ctrl }; // Change: Apply name mangling. const GO_EVP_MD* _goboringcrypto_backport_EVP_md5_sha1(void) { return &md5_sha1_md; } #endif #endif