summaryrefslogtreecommitdiff
path: root/nss-tool/hw-support.c
blob: 87d652c3ace3e2b49068f3b31ea1f41d2214da65 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */

#ifdef FREEBL_NO_DEPEND
#include "stubs.h"
#endif

/* This is a freebl command line utility that prints hardware support as freebl
 * sees it from its detection in blinit.c
 */

#include <stdio.h>

#include "blapi.h"
#include "blapii.h"
#include "nss.h"

int main(int argc, char const *argv[]) {
  BL_Init();
  printf("\n\n ========== NSS Hardware Report ==========\n");
#if defined(NSS_X86_OR_X64)
  printf("\tAES-NI \t%s supported\n", aesni_support() ? "" : "not");
  printf("\tPCLMUL \t%s supported\n", clmul_support() ? "" : "not");
  printf("\tSHA \t%s supported\n", sha_support() ? "" : "not");
  printf("\tAVX \t%s supported\n", avx_support() ? "" : "not");
  printf("\tAVX2 \t%s supported\n", avx2_support() ? "" : "not");
  printf("\tSSSE3 \t%s supported\n", ssse3_support() ? "" : "not");
  printf("\tSSE4.1 \t%s supported\n", sse4_1_support() ? "" : "not");
  printf("\tSSE4.2 \t%s supported\n", sse4_2_support() ? "" : "not");
#elif defined(__aarch64__) || defined(__arm__)
  printf("\tNEON \t%s supported\n", arm_neon_support() ? "" : "not");
  printf("\tAES \t%s supported\n", arm_aes_support() ? "" : "not");
  printf("\tPMULL \t%s supported\n", arm_pmull_support() ? "" : "not");
  printf("\tSHA1 \t%s supported\n", arm_sha1_support() ? "" : "not");
  printf("\tSHA2 \t%s supported\n", arm_sha2_support() ? "" : "not");
#endif
  printf(" ========== Hardware Report End ==========\n\n\n");
  BL_Cleanup();
  return 0;
}