Coverage Report

Created: 2025-03-20 06:37

/src/liboqs/src/sig/uov/sig_uov_ov_V_pkc_skc.c
Line
Count
Source (jump to first uncovered line)
1
// SPDX-License-Identifier: MIT
2
3
#include <stdlib.h>
4
5
#include <oqs/sig_uov.h>
6
7
#if defined(OQS_ENABLE_SIG_uov_ov_V_pkc_skc)
8
4
OQS_SIG *OQS_SIG_uov_ov_V_pkc_skc_new(void) {
9
10
4
  OQS_SIG *sig = OQS_MEM_malloc(sizeof(OQS_SIG));
11
4
  if (sig == NULL) {
12
0
    return NULL;
13
0
  }
14
4
  sig->method_name = OQS_SIG_alg_uov_ov_V_pkc_skc;
15
4
  sig->alg_version = "Round 2";
16
17
4
  sig->claimed_nist_level = 5;
18
4
  sig->euf_cma = true;
19
4
  sig->suf_cma = false;
20
4
  sig->sig_with_ctx_support = false;
21
22
4
  sig->length_public_key = OQS_SIG_uov_ov_V_pkc_skc_length_public_key;
23
4
  sig->length_secret_key = OQS_SIG_uov_ov_V_pkc_skc_length_secret_key;
24
4
  sig->length_signature = OQS_SIG_uov_ov_V_pkc_skc_length_signature;
25
26
4
  sig->keypair = OQS_SIG_uov_ov_V_pkc_skc_keypair;
27
4
  sig->sign = OQS_SIG_uov_ov_V_pkc_skc_sign;
28
4
  sig->verify = OQS_SIG_uov_ov_V_pkc_skc_verify;
29
4
  sig->sign_with_ctx_str = OQS_SIG_uov_ov_V_pkc_skc_sign_with_ctx_str;
30
4
  sig->verify_with_ctx_str = OQS_SIG_uov_ov_V_pkc_skc_verify_with_ctx_str;
31
32
4
  return sig;
33
4
}
34
35
extern int pqov_uov_V_pkc_skc_ref_keypair(uint8_t *pk, uint8_t *sk);
36
extern int pqov_uov_V_pkc_skc_ref_signature(uint8_t *sig, size_t *siglen, const uint8_t *m, size_t mlen, const uint8_t *sk);
37
extern int pqov_uov_V_pkc_skc_ref_verify(const uint8_t *sig, size_t siglen, const uint8_t *m, size_t mlen, const uint8_t *pk);
38
39
#if defined(OQS_ENABLE_SIG_uov_ov_V_pkc_skc_neon)
40
extern int pqov_uov_V_pkc_skc_neon_keypair(uint8_t *pk, uint8_t *sk);
41
extern int pqov_uov_V_pkc_skc_neon_signature(uint8_t *sig, size_t *siglen, const uint8_t *m, size_t mlen, const uint8_t *sk);
42
extern int pqov_uov_V_pkc_skc_neon_verify(const uint8_t *sig, size_t siglen, const uint8_t *m, size_t mlen, const uint8_t *pk);
43
#endif
44
45
#if defined(OQS_ENABLE_SIG_uov_ov_V_pkc_skc_avx2)
46
extern int pqov_uov_V_pkc_skc_avx2_keypair(uint8_t *pk, uint8_t *sk);
47
extern int pqov_uov_V_pkc_skc_avx2_signature(uint8_t *sig, size_t *siglen, const uint8_t *m, size_t mlen, const uint8_t *sk);
48
extern int pqov_uov_V_pkc_skc_avx2_verify(const uint8_t *sig, size_t siglen, const uint8_t *m, size_t mlen, const uint8_t *pk);
49
#endif
50
51
4
OQS_API OQS_STATUS OQS_SIG_uov_ov_V_pkc_skc_keypair(uint8_t *public_key, uint8_t *secret_key) {
52
#if defined(OQS_ENABLE_SIG_uov_ov_V_pkc_skc_neon)
53
#if defined(OQS_DIST_BUILD)
54
  if (OQS_CPU_has_extension(OQS_CPU_EXT_ARM_NEON)) {
55
#endif /* OQS_DIST_BUILD */
56
    return (OQS_STATUS) pqov_uov_V_pkc_skc_neon_keypair(public_key, secret_key);
57
#if defined(OQS_DIST_BUILD)
58
  } else {
59
    return (OQS_STATUS) pqov_uov_V_pkc_skc_ref_keypair(public_key, secret_key);
60
  }
61
#endif /* OQS_DIST_BUILD */
62
#elif defined(OQS_ENABLE_SIG_uov_ov_V_pkc_skc_avx2)
63
#if defined(OQS_DIST_BUILD)
64
4
  if (OQS_CPU_has_extension(OQS_CPU_EXT_AVX2)) {
65
4
#endif /* OQS_DIST_BUILD */
66
4
    return (OQS_STATUS) pqov_uov_V_pkc_skc_avx2_keypair(public_key, secret_key);
67
4
#if defined(OQS_DIST_BUILD)
68
4
  } else {
69
0
    return (OQS_STATUS) pqov_uov_V_pkc_skc_ref_keypair(public_key, secret_key);
70
0
  }
71
4
#endif /* OQS_DIST_BUILD */
72
#else
73
  return (OQS_STATUS) pqov_uov_V_pkc_skc_ref_keypair(public_key, secret_key);
74
#endif
75
4
}
76
77
4
OQS_API OQS_STATUS OQS_SIG_uov_ov_V_pkc_skc_sign(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *secret_key) {
78
#if defined(OQS_ENABLE_SIG_uov_ov_V_pkc_skc_neon)
79
#if defined(OQS_DIST_BUILD)
80
  if (OQS_CPU_has_extension(OQS_CPU_EXT_ARM_NEON)) {
81
#endif /* OQS_DIST_BUILD */
82
    return (OQS_STATUS) pqov_uov_V_pkc_skc_neon_signature(signature, signature_len, message, message_len, secret_key);
83
#if defined(OQS_DIST_BUILD)
84
  } else {
85
    return (OQS_STATUS) pqov_uov_V_pkc_skc_ref_signature(signature, signature_len, message, message_len, secret_key);
86
  }
87
#endif /* OQS_DIST_BUILD */
88
#elif defined(OQS_ENABLE_SIG_uov_ov_V_pkc_skc_avx2)
89
#if defined(OQS_DIST_BUILD)
90
4
  if (OQS_CPU_has_extension(OQS_CPU_EXT_AVX2)) {
91
4
#endif /* OQS_DIST_BUILD */
92
4
    return (OQS_STATUS) pqov_uov_V_pkc_skc_avx2_signature(signature, signature_len, message, message_len, secret_key);
93
4
#if defined(OQS_DIST_BUILD)
94
4
  } else {
95
0
    return (OQS_STATUS) pqov_uov_V_pkc_skc_ref_signature(signature, signature_len, message, message_len, secret_key);
96
0
  }
97
4
#endif /* OQS_DIST_BUILD */
98
#else
99
  return (OQS_STATUS) pqov_uov_V_pkc_skc_ref_signature(signature, signature_len, message, message_len, secret_key);
100
#endif
101
4
}
102
103
4
OQS_API OQS_STATUS OQS_SIG_uov_ov_V_pkc_skc_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key) {
104
#if defined(OQS_ENABLE_SIG_uov_ov_V_pkc_skc_neon)
105
#if defined(OQS_DIST_BUILD)
106
  if (OQS_CPU_has_extension(OQS_CPU_EXT_ARM_NEON)) {
107
#endif /* OQS_DIST_BUILD */
108
    return (OQS_STATUS) pqov_uov_V_pkc_skc_neon_verify(signature, signature_len, message, message_len, public_key);
109
#if defined(OQS_DIST_BUILD)
110
  } else {
111
    return (OQS_STATUS) pqov_uov_V_pkc_skc_ref_verify(signature, signature_len, message, message_len, public_key);
112
  }
113
#endif /* OQS_DIST_BUILD */
114
#elif defined(OQS_ENABLE_SIG_uov_ov_V_pkc_skc_avx2)
115
#if defined(OQS_DIST_BUILD)
116
4
  if (OQS_CPU_has_extension(OQS_CPU_EXT_AVX2)) {
117
4
#endif /* OQS_DIST_BUILD */
118
4
    return (OQS_STATUS) pqov_uov_V_pkc_skc_avx2_verify(signature, signature_len, message, message_len, public_key);
119
4
#if defined(OQS_DIST_BUILD)
120
4
  } else {
121
0
    return (OQS_STATUS) pqov_uov_V_pkc_skc_ref_verify(signature, signature_len, message, message_len, public_key);
122
0
  }
123
4
#endif /* OQS_DIST_BUILD */
124
#else
125
  return (OQS_STATUS) pqov_uov_V_pkc_skc_ref_verify(signature, signature_len, message, message_len, public_key);
126
#endif
127
4
}
128
129
0
OQS_API OQS_STATUS OQS_SIG_uov_ov_V_pkc_skc_sign_with_ctx_str(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *ctx_str, size_t ctx_str_len, const uint8_t *secret_key) {
130
0
  if (ctx_str == NULL && ctx_str_len == 0) {
131
0
    return OQS_SIG_uov_ov_V_pkc_skc_sign(signature, signature_len, message, message_len, secret_key);
132
0
  } else {
133
0
    return OQS_ERROR;
134
0
  }
135
0
}
136
137
0
OQS_API OQS_STATUS OQS_SIG_uov_ov_V_pkc_skc_verify_with_ctx_str(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *ctx_str, size_t ctx_str_len, const uint8_t *public_key) {
138
0
  if (ctx_str == NULL && ctx_str_len == 0) {
139
0
    return OQS_SIG_uov_ov_V_pkc_skc_verify(message, message_len, signature, signature_len, public_key);
140
0
  } else {
141
0
    return OQS_ERROR;
142
0
  }
143
0
}
144
#endif