2014-01-09 06:46:05 +01:00
|
|
|
// Copyright (c) 2013-2014 Conformal Systems LLC.
|
2013-05-30 18:50:58 +02:00
|
|
|
// Use of this source code is governed by an ISC
|
|
|
|
// license that can be found in the LICENSE file.
|
|
|
|
|
|
|
|
/*
|
|
|
|
This test file is part of the btcutil package rather than than the
|
|
|
|
btcutil_test package so it can bridge access to the internals to properly test
|
|
|
|
cases which are either not possible or can't reliably be tested via the public
|
|
|
|
interface. The functions are only exported while the tests are being run.
|
|
|
|
*/
|
|
|
|
|
|
|
|
package btcutil
|
|
|
|
|
2014-01-03 17:10:25 +01:00
|
|
|
import (
|
2014-12-11 16:28:43 +01:00
|
|
|
"golang.org/x/crypto/ripemd160"
|
|
|
|
|
2015-01-15 22:13:38 +01:00
|
|
|
"github.com/btcsuite/btcutil/base58"
|
2014-01-08 06:05:07 +01:00
|
|
|
"github.com/conformal/btcec"
|
2014-01-03 17:10:25 +01:00
|
|
|
)
|
|
|
|
|
2013-08-05 19:41:31 +02:00
|
|
|
// SetBlockBytes sets the internal serialized block byte buffer to the passed
|
|
|
|
// buffer. It is used to inject errors and is only available to the test
|
|
|
|
// package.
|
2013-05-30 18:50:58 +02:00
|
|
|
func (b *Block) SetBlockBytes(buf []byte) {
|
2013-08-05 19:41:31 +02:00
|
|
|
b.serializedBlock = buf
|
2013-05-30 18:50:58 +02:00
|
|
|
}
|
2013-11-10 19:27:39 +01:00
|
|
|
|
|
|
|
// TstAppDataDir makes the internal appDataDir function available to the test
|
|
|
|
// package.
|
|
|
|
func TstAppDataDir(goos, appName string, roaming bool) string {
|
|
|
|
return appDataDir(goos, appName, roaming)
|
|
|
|
}
|
2014-01-03 17:10:25 +01:00
|
|
|
|
|
|
|
// TstAddressPubKeyHash makes an AddressPubKeyHash, setting the
|
2014-02-26 20:51:49 +01:00
|
|
|
// unexported fields with the parameters hash and netID.
|
2014-01-03 17:10:25 +01:00
|
|
|
func TstAddressPubKeyHash(hash [ripemd160.Size]byte,
|
2014-02-26 20:51:49 +01:00
|
|
|
netID byte) *AddressPubKeyHash {
|
2014-01-03 17:10:25 +01:00
|
|
|
|
|
|
|
return &AddressPubKeyHash{
|
2014-02-26 20:51:49 +01:00
|
|
|
hash: hash,
|
|
|
|
netID: netID,
|
2014-01-03 17:10:25 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// TstAddressScriptHash makes an AddressScriptHash, setting the
|
2014-02-26 20:51:49 +01:00
|
|
|
// unexported fields with the parameters hash and netID.
|
2014-01-03 17:10:25 +01:00
|
|
|
func TstAddressScriptHash(hash [ripemd160.Size]byte,
|
2014-02-26 20:51:49 +01:00
|
|
|
netID byte) *AddressScriptHash {
|
2014-01-03 17:10:25 +01:00
|
|
|
|
|
|
|
return &AddressScriptHash{
|
2014-02-26 20:51:49 +01:00
|
|
|
hash: hash,
|
|
|
|
netID: netID,
|
2014-01-03 17:10:25 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2014-01-08 06:05:07 +01:00
|
|
|
// TstAddressPubKey makes an AddressPubKey, setting the unexported fields with
|
|
|
|
// the parameters.
|
|
|
|
func TstAddressPubKey(serializedPubKey []byte, pubKeyFormat PubKeyFormat,
|
2014-02-26 20:51:49 +01:00
|
|
|
netID byte) *AddressPubKey {
|
2014-01-08 06:05:07 +01:00
|
|
|
|
|
|
|
pubKey, _ := btcec.ParsePubKey(serializedPubKey, btcec.S256())
|
|
|
|
return &AddressPubKey{
|
|
|
|
pubKeyFormat: pubKeyFormat,
|
|
|
|
pubKey: (*btcec.PublicKey)(pubKey),
|
2014-05-28 00:06:00 +02:00
|
|
|
pubKeyHashID: netID,
|
2014-01-08 06:05:07 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2014-01-03 17:10:25 +01:00
|
|
|
// TstAddressSAddr returns the expected script address bytes for
|
|
|
|
// P2PKH and P2SH bitcoin addresses.
|
|
|
|
func TstAddressSAddr(addr string) []byte {
|
2014-12-17 14:07:53 +01:00
|
|
|
decoded := base58.Decode(addr)
|
2014-01-03 17:10:25 +01:00
|
|
|
return decoded[1 : 1+ripemd160.Size]
|
|
|
|
}
|