Coverage Report

Created: 2025-11-24 07:04

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/liboqs/src/sig/mayo/sig_mayo_5.c
Line
Count
Source
1
// SPDX-License-Identifier: MIT
2
3
#include <stdlib.h>
4
5
#include <oqs/sig_mayo.h>
6
7
#if defined(OQS_ENABLE_SIG_mayo_5)
8
11
OQS_SIG *OQS_SIG_mayo_5_new(void) {
9
10
11
  OQS_SIG *sig = OQS_MEM_malloc(sizeof(OQS_SIG));
11
11
  if (sig == NULL) {
12
0
    return NULL;
13
0
  }
14
11
  sig->method_name = OQS_SIG_alg_mayo_5;
15
11
  sig->alg_version = "round2";
16
17
11
  sig->claimed_nist_level = 5;
18
11
  sig->euf_cma = true;
19
11
  sig->suf_cma = false;
20
11
  sig->sig_with_ctx_support = false;
21
22
11
  sig->length_public_key = OQS_SIG_mayo_5_length_public_key;
23
11
  sig->length_secret_key = OQS_SIG_mayo_5_length_secret_key;
24
11
  sig->length_signature = OQS_SIG_mayo_5_length_signature;
25
26
11
  sig->keypair = OQS_SIG_mayo_5_keypair;
27
11
  sig->sign = OQS_SIG_mayo_5_sign;
28
11
  sig->verify = OQS_SIG_mayo_5_verify;
29
11
  sig->sign_with_ctx_str = OQS_SIG_mayo_5_sign_with_ctx_str;
30
11
  sig->verify_with_ctx_str = OQS_SIG_mayo_5_verify_with_ctx_str;
31
32
11
  return sig;
33
11
}
34
35
extern int pqmayo_MAYO_5_opt_crypto_sign_keypair(uint8_t *pk, uint8_t *sk);
36
extern int pqmayo_MAYO_5_opt_crypto_sign_signature(uint8_t *sig, size_t *siglen, const uint8_t *m, size_t mlen, const uint8_t *sk);
37
extern int pqmayo_MAYO_5_opt_crypto_sign_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_mayo_5_avx2)
40
extern int pqmayo_MAYO_5_avx2_crypto_sign_keypair(uint8_t *pk, uint8_t *sk);
41
extern int pqmayo_MAYO_5_avx2_crypto_sign_signature(uint8_t *sig, size_t *siglen, const uint8_t *m, size_t mlen, const uint8_t *sk);
42
extern int pqmayo_MAYO_5_avx2_crypto_sign_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_mayo_5_neon)
46
extern int pqmayo_MAYO_5_neon_crypto_sign_keypair(uint8_t *pk, uint8_t *sk);
47
extern int pqmayo_MAYO_5_neon_crypto_sign_signature(uint8_t *sig, size_t *siglen, const uint8_t *m, size_t mlen, const uint8_t *sk);
48
extern int pqmayo_MAYO_5_neon_crypto_sign_verify(const uint8_t *sig, size_t siglen, const uint8_t *m, size_t mlen, const uint8_t *pk);
49
#endif
50
51
11
OQS_API OQS_STATUS OQS_SIG_mayo_5_keypair(uint8_t *public_key, uint8_t *secret_key) {
52
11
#if defined(OQS_ENABLE_SIG_mayo_5_avx2)
53
11
#if defined(OQS_DIST_BUILD)
54
11
  if (OQS_CPU_has_extension(OQS_CPU_EXT_AVX2)) {
55
11
#endif /* OQS_DIST_BUILD */
56
11
    return (OQS_STATUS) pqmayo_MAYO_5_avx2_crypto_sign_keypair(public_key, secret_key);
57
11
#if defined(OQS_DIST_BUILD)
58
11
  } else {
59
0
    return (OQS_STATUS) pqmayo_MAYO_5_opt_crypto_sign_keypair(public_key, secret_key);
60
0
  }
61
11
#endif /* OQS_DIST_BUILD */
62
#elif defined(OQS_ENABLE_SIG_mayo_5_neon)
63
#if defined(OQS_DIST_BUILD)
64
  if (OQS_CPU_has_extension(OQS_CPU_EXT_ARM_NEON)) {
65
#endif /* OQS_DIST_BUILD */
66
    return (OQS_STATUS) pqmayo_MAYO_5_neon_crypto_sign_keypair(public_key, secret_key);
67
#if defined(OQS_DIST_BUILD)
68
  } else {
69
    return (OQS_STATUS) pqmayo_MAYO_5_opt_crypto_sign_keypair(public_key, secret_key);
70
  }
71
#endif /* OQS_DIST_BUILD */
72
#else
73
  return (OQS_STATUS) pqmayo_MAYO_5_opt_crypto_sign_keypair(public_key, secret_key);
74
#endif
75
11
}
76
77
11
OQS_API OQS_STATUS OQS_SIG_mayo_5_sign(uint8_t *signature, size_t *signature_len, const uint8_t *message, size_t message_len, const uint8_t *secret_key) {
78
11
#if defined(OQS_ENABLE_SIG_mayo_5_avx2)
79
11
#if defined(OQS_DIST_BUILD)
80
11
  if (OQS_CPU_has_extension(OQS_CPU_EXT_AVX2)) {
81
11
#endif /* OQS_DIST_BUILD */
82
11
    return (OQS_STATUS) pqmayo_MAYO_5_avx2_crypto_sign_signature(signature, signature_len, message, message_len, secret_key);
83
11
#if defined(OQS_DIST_BUILD)
84
11
  } else {
85
0
    return (OQS_STATUS) pqmayo_MAYO_5_opt_crypto_sign_signature(signature, signature_len, message, message_len, secret_key);
86
0
  }
87
11
#endif /* OQS_DIST_BUILD */
88
#elif defined(OQS_ENABLE_SIG_mayo_5_neon)
89
#if defined(OQS_DIST_BUILD)
90
  if (OQS_CPU_has_extension(OQS_CPU_EXT_ARM_NEON)) {
91
#endif /* OQS_DIST_BUILD */
92
    return (OQS_STATUS) pqmayo_MAYO_5_neon_crypto_sign_signature(signature, signature_len, message, message_len, secret_key);
93
#if defined(OQS_DIST_BUILD)
94
  } else {
95
    return (OQS_STATUS) pqmayo_MAYO_5_opt_crypto_sign_signature(signature, signature_len, message, message_len, secret_key);
96
  }
97
#endif /* OQS_DIST_BUILD */
98
#else
99
  return (OQS_STATUS) pqmayo_MAYO_5_opt_crypto_sign_signature(signature, signature_len, message, message_len, secret_key);
100
#endif
101
11
}
102
103
11
OQS_API OQS_STATUS OQS_SIG_mayo_5_verify(const uint8_t *message, size_t message_len, const uint8_t *signature, size_t signature_len, const uint8_t *public_key) {
104
11
#if defined(OQS_ENABLE_SIG_mayo_5_avx2)
105
11
#if defined(OQS_DIST_BUILD)
106
11
  if (OQS_CPU_has_extension(OQS_CPU_EXT_AVX2)) {
107
11
#endif /* OQS_DIST_BUILD */
108
11
    return (OQS_STATUS) pqmayo_MAYO_5_avx2_crypto_sign_verify(signature, signature_len, message, message_len, public_key);
109
11
#if defined(OQS_DIST_BUILD)
110
11
  } else {
111
0
    return (OQS_STATUS) pqmayo_MAYO_5_opt_crypto_sign_verify(signature, signature_len, message, message_len, public_key);
112
0
  }
113
11
#endif /* OQS_DIST_BUILD */
114
#elif defined(OQS_ENABLE_SIG_mayo_5_neon)
115
#if defined(OQS_DIST_BUILD)
116
  if (OQS_CPU_has_extension(OQS_CPU_EXT_ARM_NEON)) {
117
#endif /* OQS_DIST_BUILD */
118
    return (OQS_STATUS) pqmayo_MAYO_5_neon_crypto_sign_verify(signature, signature_len, message, message_len, public_key);
119
#if defined(OQS_DIST_BUILD)
120
  } else {
121
    return (OQS_STATUS) pqmayo_MAYO_5_opt_crypto_sign_verify(signature, signature_len, message, message_len, public_key);
122
  }
123
#endif /* OQS_DIST_BUILD */
124
#else
125
  return (OQS_STATUS) pqmayo_MAYO_5_opt_crypto_sign_verify(signature, signature_len, message, message_len, public_key);
126
#endif
127
11
}
128
129
0
OQS_API OQS_STATUS OQS_SIG_mayo_5_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_mayo_5_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_mayo_5_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_mayo_5_verify(message, message_len, signature, signature_len, public_key);
140
0
  } else {
141
0
    return OQS_ERROR;
142
0
  }
143
0
}
144
#endif