• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * This file is part of the openHiTLS project.
3  *
4  * openHiTLS is licensed under the Mulan PSL v2.
5  * You can use this software according to the terms and conditions of the Mulan PSL v2.
6  * You may obtain a copy of Mulan PSL v2 at:
7  *
8  *     http://license.coscl.org.cn/MulanPSL2
9  *
10  * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11  * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12  * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
13  * See the Mulan PSL v2 for more details.
14  */
15 
16 #ifndef CRYPT_SLH_DSA_HYPERTREE_H
17 #define CRYPT_SLH_DSA_HYPERTREE_H
18 
19 #include <stdint.h>
20 #include "slh_dsa_local.h"
21 
22 #ifdef HITLS_CRYPTO_SLH_DSA
23 
24 /**
25  * @brief Sign a message using Hypertree
26  *
27  * @param msg Input message to sign
28  * @param msgLen Length of the message
29  * @param treeIdx Index of the tree to use
30  * @param leafIdx Index of the leaf to use
31  * @param ctx Context of SLH-DSA
32  * @param sig Output signature
33  * @param sigLen Length of the signature
34  * @return int 0 on success, error code otherwise
35  */
36 int32_t HypertreeSign(const uint8_t *msg, uint32_t msgLen, uint64_t treeIdx, uint32_t leafIdx,
37                       const CryptSlhDsaCtx *ctx, uint8_t *sig, uint32_t *sigLen);
38 
39 /**
40  * @brief Verify a Hypertree signature
41  *
42  * @param msg Input message that was signed
43  * @param msgLen Length of the message
44  * @param sig Hypertree signature to verify
45  * @param sigLen Length of the signature
46  * @param treeIdx Index of the tree to use
47  * @param leafIdx Index of the leaf to use
48  * @param ctx Context of SLH-DSA
49  * @return int 0 if signature is valid, error code otherwise
50  */
51 int32_t HypertreeVerify(const uint8_t *msg, uint32_t msgLen, const uint8_t *sig, uint32_t sigLen, uint64_t treeIdx,
52                         uint32_t leafIdx, const CryptSlhDsaCtx *ctx);
53 
54 #endif // HITLS_CRYPTO_SLH_DSA
55 #endif // CRYPT_SLH_DSA_HYPERTREE_H