signature.h (2865B)
1 /* signature.h 2 * 3 * Copyright (C) 2006-2025 wolfSSL Inc. 4 * 5 * This file is part of wolfSSL. 6 * 7 * wolfSSL is free software; you can redistribute it and/or modify 8 * it under the terms of the GNU General Public License as published by 9 * the Free Software Foundation; either version 3 of the License, or 10 * (at your option) any later version. 11 * 12 * wolfSSL is distributed in the hope that it will be useful, 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 * GNU General Public License for more details. 16 * 17 * You should have received a copy of the GNU General Public License 18 * along with this program; if not, write to the Free Software 19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA 20 */ 21 22 /*! 23 \file wolfssl/wolfcrypt/signature.h 24 */ 25 26 27 #ifndef WOLF_CRYPT_SIGNATURE_H 28 #define WOLF_CRYPT_SIGNATURE_H 29 30 #include <wolfssl/wolfcrypt/types.h> 31 #include <wolfssl/wolfcrypt/hash.h> 32 #include <wolfssl/wolfcrypt/random.h> 33 34 #ifdef __cplusplus 35 extern "C" { 36 #endif 37 38 enum wc_SignatureType { 39 WC_SIGNATURE_TYPE_NONE = 0, 40 WC_SIGNATURE_TYPE_ECC = 1, 41 WC_SIGNATURE_TYPE_RSA = 2, 42 WC_SIGNATURE_TYPE_RSA_W_ENC = 3 /* Adds DER header via wc_EncodeSignature */ 43 }; 44 45 WOLFSSL_API int wc_SignatureGetSize(enum wc_SignatureType sig_type, 46 const void* key, word32 key_len); 47 48 WOLFSSL_API int wc_SignatureVerifyHash( 49 enum wc_HashType hash_type, enum wc_SignatureType sig_type, 50 const byte* hash_data, word32 hash_len, 51 const byte* sig, word32 sig_len, 52 const void* key, word32 key_len); 53 54 WOLFSSL_API int wc_SignatureVerify( 55 enum wc_HashType hash_type, enum wc_SignatureType sig_type, 56 const byte* data, word32 data_len, 57 const byte* sig, word32 sig_len, 58 const void* key, word32 key_len); 59 60 WOLFSSL_API int wc_SignatureGenerateHash( 61 enum wc_HashType hash_type, enum wc_SignatureType sig_type, 62 const byte* hash_data, word32 hash_len, 63 byte* sig, word32 *sig_len, 64 const void* key, word32 key_len, WC_RNG* rng); 65 WOLFSSL_API int wc_SignatureGenerateHash_ex( 66 enum wc_HashType hash_type, enum wc_SignatureType sig_type, 67 const byte* hash_data, word32 hash_len, 68 byte* sig, word32 *sig_len, 69 const void* key, word32 key_len, WC_RNG* rng, int verify); 70 WOLFSSL_API int wc_SignatureGenerate( 71 enum wc_HashType hash_type, enum wc_SignatureType sig_type, 72 const byte* data, word32 data_len, 73 byte* sig, word32 *sig_len, 74 const void* key, word32 key_len, 75 WC_RNG* rng); 76 WOLFSSL_API int wc_SignatureGenerate_ex( 77 enum wc_HashType hash_type, enum wc_SignatureType sig_type, 78 const byte* data, word32 data_len, 79 byte* sig, word32 *sig_len, 80 const void* key, word32 key_len, 81 WC_RNG* rng, int verify); 82 83 #ifdef __cplusplus 84 } /* extern "C" */ 85 #endif 86 87 #endif /* WOLF_CRYPT_SIGNATURE_H */