Branch data Line data Source code
# 1 : : // Copyright (c) 2009-2010 Satoshi Nakamoto
# 2 : : // Copyright (c) 2009-2018 The Bitcoin Core developers
# 3 : : // Distributed under the MIT software license, see the accompanying
# 4 : : // file COPYING or http://www.opensource.org/licenses/mit-license.php.
# 5 : :
# 6 : : #ifndef BITCOIN_SCRIPT_BITCOINCONSENSUS_H
# 7 : : #define BITCOIN_SCRIPT_BITCOINCONSENSUS_H
# 8 : :
# 9 : : #include <stdint.h>
# 10 : :
# 11 : : #if defined(BUILD_BITCOIN_INTERNAL) && defined(HAVE_CONFIG_H)
# 12 : : #include <config/bitcoin-config.h>
# 13 : : #if defined(_WIN32)
# 14 : : #if defined(HAVE_DLLEXPORT_ATTRIBUTE)
# 15 : : #define EXPORT_SYMBOL __declspec(dllexport)
# 16 : : #else
# 17 : : #define EXPORT_SYMBOL
# 18 : : #endif
# 19 : : #elif defined(HAVE_DEFAULT_VISIBILITY_ATTRIBUTE)
# 20 : : #define EXPORT_SYMBOL __attribute__ ((visibility ("default")))
# 21 : : #endif
# 22 : : #elif defined(MSC_VER) && !defined(STATIC_LIBBITCOINCONSENSUS)
# 23 : : #define EXPORT_SYMBOL __declspec(dllimport)
# 24 : : #endif
# 25 : :
# 26 : : #ifndef EXPORT_SYMBOL
# 27 : : #define EXPORT_SYMBOL
# 28 : : #endif
# 29 : :
# 30 : : #ifdef __cplusplus
# 31 : : extern "C" {
# 32 : : #endif
# 33 : :
# 34 : 0 : #define BITCOINCONSENSUS_API_VER 1
# 35 : :
# 36 : : typedef enum bitcoinconsensus_error_t
# 37 : : {
# 38 : : bitcoinconsensus_ERR_OK = 0,
# 39 : : bitcoinconsensus_ERR_TX_INDEX,
# 40 : : bitcoinconsensus_ERR_TX_SIZE_MISMATCH,
# 41 : : bitcoinconsensus_ERR_TX_DESERIALIZE,
# 42 : : bitcoinconsensus_ERR_AMOUNT_REQUIRED,
# 43 : : bitcoinconsensus_ERR_INVALID_FLAGS,
# 44 : : } bitcoinconsensus_error;
# 45 : :
# 46 : : /** Script verification flags */
# 47 : : enum
# 48 : : {
# 49 : : bitcoinconsensus_SCRIPT_FLAGS_VERIFY_NONE = 0,
# 50 : : bitcoinconsensus_SCRIPT_FLAGS_VERIFY_P2SH = (1U << 0), // evaluate P2SH (BIP16) subscripts
# 51 : : bitcoinconsensus_SCRIPT_FLAGS_VERIFY_DERSIG = (1U << 2), // enforce strict DER (BIP66) compliance
# 52 : : bitcoinconsensus_SCRIPT_FLAGS_VERIFY_NULLDUMMY = (1U << 4), // enforce NULLDUMMY (BIP147)
# 53 : : bitcoinconsensus_SCRIPT_FLAGS_VERIFY_CHECKLOCKTIMEVERIFY = (1U << 9), // enable CHECKLOCKTIMEVERIFY (BIP65)
# 54 : : bitcoinconsensus_SCRIPT_FLAGS_VERIFY_CHECKSEQUENCEVERIFY = (1U << 10), // enable CHECKSEQUENCEVERIFY (BIP112)
# 55 : : bitcoinconsensus_SCRIPT_FLAGS_VERIFY_WITNESS = (1U << 11), // enable WITNESS (BIP141)
# 56 : : bitcoinconsensus_SCRIPT_FLAGS_VERIFY_ALL = bitcoinconsensus_SCRIPT_FLAGS_VERIFY_P2SH | bitcoinconsensus_SCRIPT_FLAGS_VERIFY_DERSIG |
# 57 : : bitcoinconsensus_SCRIPT_FLAGS_VERIFY_NULLDUMMY | bitcoinconsensus_SCRIPT_FLAGS_VERIFY_CHECKLOCKTIMEVERIFY |
# 58 : : bitcoinconsensus_SCRIPT_FLAGS_VERIFY_CHECKSEQUENCEVERIFY | bitcoinconsensus_SCRIPT_FLAGS_VERIFY_WITNESS
# 59 : : };
# 60 : :
# 61 : : /// Returns 1 if the input nIn of the serialized transaction pointed to by
# 62 : : /// txTo correctly spends the scriptPubKey pointed to by scriptPubKey under
# 63 : : /// the additional constraints specified by flags.
# 64 : : /// If not nullptr, err will contain an error/success code for the operation
# 65 : : EXPORT_SYMBOL int bitcoinconsensus_verify_script(const unsigned char *scriptPubKey, unsigned int scriptPubKeyLen,
# 66 : : const unsigned char *txTo , unsigned int txToLen,
# 67 : : unsigned int nIn, unsigned int flags, bitcoinconsensus_error* err);
# 68 : :
# 69 : : EXPORT_SYMBOL int bitcoinconsensus_verify_script_with_amount(const unsigned char *scriptPubKey, unsigned int scriptPubKeyLen, int64_t amount,
# 70 : : const unsigned char *txTo , unsigned int txToLen,
# 71 : : unsigned int nIn, unsigned int flags, bitcoinconsensus_error* err);
# 72 : :
# 73 : : EXPORT_SYMBOL unsigned int bitcoinconsensus_version();
# 74 : :
# 75 : : #ifdef __cplusplus
# 76 : : } // extern "C"
# 77 : : #endif
# 78 : :
# 79 : : #undef EXPORT_SYMBOL
# 80 : :
# 81 : : #endif // BITCOIN_SCRIPT_BITCOINCONSENSUS_H
|