1f36dbb84SChunyang Hui /**********************************************************************
2f36dbb84SChunyang Hui Copyright(c) 2011-2019 Intel Corporation All rights reserved.
3f36dbb84SChunyang Hui
4f36dbb84SChunyang Hui Redistribution and use in source and binary forms, with or without
5f36dbb84SChunyang Hui modification, are permitted provided that the following conditions
6f36dbb84SChunyang Hui are met:
7f36dbb84SChunyang Hui * Redistributions of source code must retain the above copyright
8f36dbb84SChunyang Hui notice, this list of conditions and the following disclaimer.
9f36dbb84SChunyang Hui * Redistributions in binary form must reproduce the above copyright
10f36dbb84SChunyang Hui notice, this list of conditions and the following disclaimer in
11f36dbb84SChunyang Hui the documentation and/or other materials provided with the
12f36dbb84SChunyang Hui distribution.
13f36dbb84SChunyang Hui * Neither the name of Intel Corporation nor the names of its
14f36dbb84SChunyang Hui contributors may be used to endorse or promote products derived
15f36dbb84SChunyang Hui from this software without specific prior written permission.
16f36dbb84SChunyang Hui
17f36dbb84SChunyang Hui THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
18f36dbb84SChunyang Hui "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
19f36dbb84SChunyang Hui LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
20f36dbb84SChunyang Hui A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
21f36dbb84SChunyang Hui OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
22f36dbb84SChunyang Hui SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
23f36dbb84SChunyang Hui LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
24f36dbb84SChunyang Hui DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
25f36dbb84SChunyang Hui THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
26f36dbb84SChunyang Hui (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
27f36dbb84SChunyang Hui OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28f36dbb84SChunyang Hui **********************************************************************/
29f36dbb84SChunyang Hui
30f36dbb84SChunyang Hui #include <stdio.h>
31f36dbb84SChunyang Hui #include <openssl/evp.h>
32f36dbb84SChunyang Hui
33b923697dSMarcel Cornu void
sm3_ossl(const unsigned char * buf,size_t length,unsigned char * digest)34b923697dSMarcel Cornu sm3_ossl(const unsigned char *buf, size_t length, unsigned char *digest)
35f36dbb84SChunyang Hui {
36*87dde3adSTomasz Kantecki unsigned int md_len = 0;
37f36dbb84SChunyang Hui
38*87dde3adSTomasz Kantecki const EVP_MD *md = EVP_sm3();
39*87dde3adSTomasz Kantecki EVP_MD_CTX *md_ctx = EVP_MD_CTX_new();
40*87dde3adSTomasz Kantecki
41f36dbb84SChunyang Hui EVP_DigestInit_ex(md_ctx, md, NULL);
42f36dbb84SChunyang Hui EVP_DigestUpdate(md_ctx, buf, length);
43f36dbb84SChunyang Hui EVP_DigestFinal_ex(md_ctx, digest, &md_len);
44f36dbb84SChunyang Hui EVP_MD_CTX_free(md_ctx);
45f36dbb84SChunyang Hui }
46