From 88ea13f20a71559858d00713e5f450a748ed0aeb Mon Sep 17 00:00:00 2001 From: SikkieNL Date: Sat, 14 Sep 2024 22:55:09 +0200 Subject: [PATCH] Create neobytescoinconsensus.h --- src/script/neobytescoinconsensus.h | 69 ++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 src/script/neobytescoinconsensus.h diff --git a/src/script/neobytescoinconsensus.h b/src/script/neobytescoinconsensus.h new file mode 100644 index 000000000..96e342201 --- /dev/null +++ b/src/script/neobytescoinconsensus.h @@ -0,0 +1,69 @@ +// Copyright (c) 2009-2010 Satoshi Nakamoto +// Copyright (c) 2009-2015 The Bitcoin Core developers +// Distributed under the MIT software license, see the accompanying +// file COPYING or http://www.opensource.org/licenses/mit-license.php. + +#ifndef BITCOIN_NEOBYTESCONSENSUS_H +#define BITCOIN_NEOBYTESCONSENSUS_H + +#if defined(BUILD_BITCOIN_INTERNAL) && defined(HAVE_CONFIG_H) +#include "config/neobytes-config.h" + #if defined(_WIN32) + #if defined(DLL_EXPORT) + #if defined(HAVE_FUNC_ATTRIBUTE_DLLEXPORT) + #define EXPORT_SYMBOL __declspec(dllexport) + #else + #define EXPORT_SYMBOL + #endif + #endif + #elif defined(HAVE_FUNC_ATTRIBUTE_VISIBILITY) + #define EXPORT_SYMBOL __attribute__ ((visibility ("default"))) + #endif +#elif defined(MSC_VER) && !defined(STATIC_LIBNEOBYTESCONSENSUS) + #define EXPORT_SYMBOL __declspec(dllimport) +#endif + +#ifndef EXPORT_SYMBOL + #define EXPORT_SYMBOL +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#define NEOBYTESCONSENSUS_API_VER 0 + +typedef enum neobytesconsensus_error_t +{ + neobytesconsensus_ERR_OK = 0, + neobytesconsensus_ERR_TX_INDEX, + neobytesconsensus_ERR_TX_SIZE_MISMATCH, + neobytesconsensus_ERR_TX_DESERIALIZE, +} neobytesconsensus_error; + +/** Script verification flags */ +enum +{ + neobytesconsensus_SCRIPT_FLAGS_VERIFY_NONE = 0, + neobytesconsensus_SCRIPT_FLAGS_VERIFY_P2SH = (1U << 0), // evaluate P2SH (BIP16) subscripts + neobytesconsensus_SCRIPT_FLAGS_VERIFY_DERSIG = (1U << 2), // enforce strict DER (BIP66) compliance + neobytesconsensus_SCRIPT_FLAGS_VERIFY_CHECKLOCKTIMEVERIFY = (1U << 9), // enable CHECKLOCKTIMEVERIFY (BIP65) +}; + +/// Returns 1 if the input nIn of the serialized transaction pointed to by +/// txTo correctly spends the scriptPubKey pointed to by scriptPubKey under +/// the additional constraints specified by flags. +/// If not NULL, err will contain an error/success code for the operation +EXPORT_SYMBOL int neobytesconsensus_verify_script(const unsigned char *scriptPubKey, unsigned int scriptPubKeyLen, + const unsigned char *txTo , unsigned int txToLen, + unsigned int nIn, unsigned int flags, neobytesconsensus_error* err); + +EXPORT_SYMBOL unsigned int neobytesconsensus_version(); + +#ifdef __cplusplus +} // extern "C" +#endif + +#undef EXPORT_SYMBOL + +#endif // BITCOIN_NEOBYTESCONSENSUS_H