1 /*############################################################################
2 # Copyright 2017 Intel Corporation
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 /// Implementation of hash wrap function
17 /*! \file */
18 #include "epid/member/tiny/math/hashwrap.h"
19
tinysha_init(HashAlg sha_type,tiny_sha * s)20 void tinysha_init(HashAlg sha_type, tiny_sha* s) {
21 switch (sha_type) {
22 #ifdef SHA512_SUPPORT
23 case kSha512:
24 tinysha512_init(&s->sha_state_t.sha512s);
25 break;
26 #endif
27 #ifdef SHA256_SUPPORT
28 case kSha256:
29 tc_sha256_init(&s->sha_state_t.sha256s);
30 break;
31 #endif
32 default:
33 s->hash_alg = kInvalidHashAlg;
34 return;
35 }
36 s->hash_alg = sha_type;
37 }
38
tinysha_update(tiny_sha * s,void const * data,size_t data_length)39 void tinysha_update(tiny_sha* s, void const* data, size_t data_length) {
40 switch (s->hash_alg) {
41 #ifdef SHA512_SUPPORT
42 case kSha512:
43 tinysha512_update(&s->sha_state_t.sha512s, data, data_length);
44 break;
45 #endif
46 #ifdef SHA256_SUPPORT
47 case kSha256:
48 tc_sha256_update(&s->sha_state_t.sha256s, data, data_length);
49 break;
50 #endif
51 default:
52 break;
53 }
54 }
55
tinysha_final(unsigned char * digest,tiny_sha * s)56 void tinysha_final(unsigned char* digest, tiny_sha* s) {
57 switch (s->hash_alg) {
58 #ifdef SHA512_SUPPORT
59 case kSha512:
60 tinysha512_final(digest, &s->sha_state_t.sha512s);
61 break;
62 #endif
63 #ifdef SHA256_SUPPORT
64 case kSha256:
65 tc_sha256_final(digest, &s->sha_state_t.sha256s);
66 break;
67 #endif
68 default:
69 break;
70 }
71 }
72
tinysha_digest_size(tiny_sha * s)73 size_t tinysha_digest_size(tiny_sha* s) {
74 switch (s->hash_alg) {
75 #ifdef SHA512_SUPPORT
76 case kSha512:
77 return SHA512_DIGEST_SIZE;
78 #endif
79 #ifdef SHA256_SUPPORT
80 case kSha256:
81 return SHA256_DIGEST_SIZE;
82 #endif
83 default:
84 return 0;
85 }
86 }
87