Coverage Report

Created: 2024-11-21 07:03

/src/boringssl/crypto/sha/sha512.c
Line
Count
Source (jump to first uncovered line)
1
/* Copyright (c) 2024, Google Inc.
2
 *
3
 * Permission to use, copy, modify, and/or distribute this software for any
4
 * purpose with or without fee is hereby granted, provided that the above
5
 * copyright notice and this permission notice appear in all copies.
6
 *
7
 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
8
 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
9
 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
10
 * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
11
 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
12
 * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
13
 * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */
14
15
#include <openssl/sha.h>
16
17
#include <openssl/mem.h>
18
19
#include "../fipsmodule/bcm_interface.h"
20
21
22
1.05k
int SHA384_Init(SHA512_CTX *sha) {
23
1.05k
  BCM_sha384_init(sha);
24
1.05k
  return 1;
25
1.05k
}
26
27
12.0k
int SHA384_Update(SHA512_CTX *sha, const void *data, size_t len) {
28
12.0k
  BCM_sha384_update(sha, data, len);
29
12.0k
  return 1;
30
12.0k
}
31
32
5.54k
int SHA384_Final(uint8_t out[SHA384_DIGEST_LENGTH], SHA512_CTX *sha) {
33
5.54k
  BCM_sha384_final(out, sha);
34
5.54k
  return 1;
35
5.54k
}
36
37
uint8_t *SHA384(const uint8_t *data, size_t len,
38
0
                uint8_t out[SHA384_DIGEST_LENGTH]) {
39
0
  SHA512_CTX ctx;
40
0
  BCM_sha384_init(&ctx);
41
0
  BCM_sha384_update(&ctx, data, len);
42
0
  BCM_sha384_final(out, &ctx);
43
0
  OPENSSL_cleanse(&ctx, sizeof(ctx));
44
0
  return out;
45
0
}
46
47
0
int SHA512_256_Init(SHA512_CTX *sha) {
48
0
  BCM_sha512_256_init(sha);
49
0
  return 1;
50
0
}
51
52
0
int SHA512_256_Update(SHA512_CTX *sha, const void *data, size_t len) {
53
0
  BCM_sha512_256_update(sha, data, len);
54
0
  return 1;
55
0
}
56
57
0
int SHA512_256_Final(uint8_t out[SHA512_256_DIGEST_LENGTH], SHA512_CTX *sha) {
58
0
  BCM_sha512_256_final(out, sha);
59
0
  return 1;
60
0
}
61
62
uint8_t *SHA512_256(const uint8_t *data, size_t len,
63
0
                uint8_t out[SHA512_256_DIGEST_LENGTH]) {
64
0
  SHA512_CTX ctx;
65
0
  BCM_sha512_256_init(&ctx);
66
0
  BCM_sha512_256_update(&ctx, data, len);
67
0
  BCM_sha512_256_final(out, &ctx);
68
0
  OPENSSL_cleanse(&ctx, sizeof(ctx));
69
0
  return out;
70
0
}
71
72
2.34k
int SHA512_Init(SHA512_CTX *sha) {
73
2.34k
  BCM_sha512_init(sha);
74
2.34k
  return 1;
75
2.34k
}
76
77
int SHA512_Update(SHA512_CTX *sha, const void *data, size_t len) {
78
  BCM_sha512_update(sha, data, len);
79
  return 1;
80
}
81
82
0
int SHA512_Final(uint8_t out[SHA512_DIGEST_LENGTH], SHA512_CTX *sha) {
83
  // Historically this function retured failure if passed NULL, even
84
  // though other final functions do not.
85
0
  if (out == NULL) {
86
0
    return 0;
87
0
  }
88
0
  BCM_sha512_final(out, sha);
89
0
  return 1;
90
0
}
91
92
uint8_t *SHA512(const uint8_t *data, size_t len,
93
0
                uint8_t out[SHA512_DIGEST_LENGTH]) {
94
0
  SHA512_CTX ctx;
95
0
  BCM_sha512_init(&ctx);
96
0
  BCM_sha512_update(&ctx, data, len);
97
0
  BCM_sha512_final(out, &ctx);
98
0
  OPENSSL_cleanse(&ctx, sizeof(ctx));
99
0
  return out;
100
0
}
101
102
0
void SHA512_Transform(SHA512_CTX *sha, const uint8_t block[SHA512_CBLOCK]) {
103
0
  BCM_sha512_transform(sha, block);
104
0
}