1/*
2 * Copyright (C) 2009 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 *      http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17#ifndef __OPENSSL_HASH__
18#define __OPENSSL_HASH__
19
20#include <openssl/evp.h>
21
22extern  const EVP_MD *sha1_md;
23#define SHA1_SIGNATURE_SIZE 20
24#define SHA1_CTX	EVP_MD_CTX
25#define SHA1_Init(ctx)  { \
26    EVP_MD_CTX_init(ctx); \
27    EVP_DigestInit_ex(ctx, sha1_md, NULL); \
28}
29#define SHA1_Update EVP_DigestUpdate
30#define SHA1_Final(digest, ctx)  { \
31    int md_len; \
32    EVP_DigestFinal_ex(ctx, digest, &md_len); \
33}
34
35extern const EVP_MD *md4_md;
36#define MD4_CTX EVP_MD_CTX
37#define MD4Init(ctx)  { \
38    EVP_MD_CTX_init(ctx); \
39    EVP_DigestInit_ex(ctx, md4_md, NULL); \
40}
41#define MD4Update   EVP_DigestUpdate
42#define MD4Final    SHA1_Final
43
44extern const EVP_MD *md5_md;
45#define MD5_CTX EVP_MD_CTX
46#define MD5_Init(ctx)  { \
47    EVP_MD_CTX_init(ctx); \
48    EVP_DigestInit_ex(ctx, md5_md, NULL); \
49}
50#define MD5_Update   EVP_DigestUpdate
51#define MD5_Final    SHA1_Final
52
53extern  void    openssl_hash_init();
54
55#endif
56