mirror of
https://github.com/bitcoin-s/bitcoin-s.git
synced 2025-01-19 05:43:51 +01:00
Merge pull request #637 from cwaldron97/2019-07-16-remove-bitcoinj-dep
Remove BitcoinJ from dependencies
This commit is contained in:
commit
245a77b3db
@ -1,61 +1,12 @@
|
|||||||
package org.bitcoins.core.crypto
|
package org.bitcoins.core.crypto
|
||||||
|
|
||||||
import org.bitcoinj.core.Sha256Hash
|
|
||||||
import org.bitcoins.testkit.core.gen.CryptoGenerators
|
import org.bitcoins.testkit.core.gen.CryptoGenerators
|
||||||
import org.bitcoins.testkit.util.BitcoinSUnitTest
|
import org.bitcoins.testkit.util.BitcoinSUnitTest
|
||||||
import org.scalatest.prop.PropertyChecks
|
import org.scalatest.prop.PropertyChecks
|
||||||
import org.scalatest.{FlatSpec, MustMatchers}
|
|
||||||
import scodec.bits._
|
import scodec.bits._
|
||||||
|
|
||||||
class ECPublicKeyTest extends BitcoinSUnitTest {
|
class ECPublicKeyTest extends BitcoinSUnitTest {
|
||||||
|
|
||||||
"ECPublicKey" must "verify that a arbitrary piece of data was signed by the private key corresponding to a public key" in {
|
|
||||||
|
|
||||||
val privateKeyHex =
|
|
||||||
"180cb41c7c600be951b5d3d0a7334acc7506173875834f7a6c4c786a28fcbb19"
|
|
||||||
val key: ECPrivateKey = ECPrivateKey(privateKeyHex)
|
|
||||||
|
|
||||||
val hash = DoubleSha256Digest(ByteVector(Sha256Hash.ZERO_HASH.getBytes))
|
|
||||||
val signature: ECDigitalSignature = key.sign(hash)
|
|
||||||
|
|
||||||
val isValid: Boolean =
|
|
||||||
key.publicKey.verify(ByteVector(Sha256Hash.ZERO_HASH.getBytes), signature)
|
|
||||||
isValid must be(true)
|
|
||||||
}
|
|
||||||
|
|
||||||
it must "fail to verify a piece of data if the wrong public key is given" in {
|
|
||||||
val privateKeyHex =
|
|
||||||
"180cb41c7c600be951b5d3d0a7334acc7506173875834f7a6c4c786a28fcbb19"
|
|
||||||
val key: ECPrivateKey = ECPrivateKey(privateKeyHex)
|
|
||||||
val hash = DoubleSha256Digest(ByteVector(Sha256Hash.ZERO_HASH.getBytes))
|
|
||||||
val signature: ECDigitalSignature = key.sign(hash)
|
|
||||||
|
|
||||||
val wrongPublicKey = ECPublicKey.freshPublicKey
|
|
||||||
val isValid: Boolean = wrongPublicKey.verify(hash, signature)
|
|
||||||
isValid must be(false)
|
|
||||||
}
|
|
||||||
|
|
||||||
it must "verify a piece of data signed with a bitcoinj private key" in {
|
|
||||||
val bitcoinjPrivKey = new org.bitcoinj.core.ECKey
|
|
||||||
val bitcoinjSignature = bitcoinjPrivKey.sign(Sha256Hash.ZERO_HASH)
|
|
||||||
val bitcoinsSignature =
|
|
||||||
ECDigitalSignature(ByteVector(bitcoinjSignature.encodeToDER()))
|
|
||||||
val bitcoinsPublicKey = ECPublicKey(ByteVector(bitcoinjPrivKey.getPubKey))
|
|
||||||
bitcoinsPublicKey.verify(ByteVector(Sha256Hash.ZERO_HASH.getBytes),
|
|
||||||
bitcoinsSignature) must be(true)
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
it must "verify a piece of data was signed with a bitcoins private key inside of bitcoinj" in {
|
|
||||||
val bitcoinsPrivKey = ECPrivateKey.freshPrivateKey
|
|
||||||
val hash = DoubleSha256Digest(ByteVector(Sha256Hash.ZERO_HASH.getBytes))
|
|
||||||
val bitcoinsSignature = bitcoinsPrivKey.sign(hash)
|
|
||||||
val bitcoinjPublicKey = org.bitcoinj.core.ECKey
|
|
||||||
.fromPublicOnly(bitcoinsPrivKey.publicKey.bytes.toArray)
|
|
||||||
bitcoinjPublicKey.verify(Sha256Hash.ZERO_HASH.getBytes,
|
|
||||||
bitcoinsSignature.bytes.toArray) must be(true)
|
|
||||||
}
|
|
||||||
|
|
||||||
it must "be able to decompress keys" in {
|
it must "be able to decompress keys" in {
|
||||||
val uncompressed =
|
val uncompressed =
|
||||||
ECPublicKey(
|
ECPublicKey(
|
||||||
|
@ -18,8 +18,6 @@ import scala.util.Try
|
|||||||
class TransactionSignatureSerializerTest extends FlatSpec with MustMatchers {
|
class TransactionSignatureSerializerTest extends FlatSpec with MustMatchers {
|
||||||
private def logger = BitcoinSLogger.logger
|
private def logger = BitcoinSLogger.logger
|
||||||
|
|
||||||
val scriptPubKey =
|
|
||||||
BitcoinjConversions.toScriptPubKey(BitcoinJTestUtil.multiSigScript)
|
|
||||||
"TransactionSignatureSerializer" must "correctly serialize an input that is being checked where another input in the same tx is using SIGHASH_ANYONECANPAY" in {
|
"TransactionSignatureSerializer" must "correctly serialize an input that is being checked where another input in the same tx is using SIGHASH_ANYONECANPAY" in {
|
||||||
//this is from a test case inside of tx_valid.json
|
//this is from a test case inside of tx_valid.json
|
||||||
//https://github.com/bitcoin/bitcoin/blob/master/src/test/data/tx_valid.json#L91
|
//https://github.com/bitcoin/bitcoin/blob/master/src/test/data/tx_valid.json#L91
|
||||||
|
@ -28,12 +28,6 @@ class Base58Test extends FlatSpec with MustMatchers {
|
|||||||
Base58.decode("Z").head must be(32.toByte)
|
Base58.decode("Z").head must be(32.toByte)
|
||||||
}
|
}
|
||||||
|
|
||||||
it must "decode and return same result as bitcoinj" in {
|
|
||||||
val address = "1AGNa15ZQXAZUgFiqJ2i7Z2DPU2J6hW62i"
|
|
||||||
val bitcoinj = org.bitcoinj.core.Base58.decode(address)
|
|
||||||
Base58.decode(address).toArray must be(bitcoinj)
|
|
||||||
}
|
|
||||||
|
|
||||||
it must "encode tests in base58_encode_decode.json" in {
|
it must "encode tests in base58_encode_decode.json" in {
|
||||||
Base58.encode("") must be("")
|
Base58.encode("") must be("")
|
||||||
Base58.encode("61") must be("2g")
|
Base58.encode("61") must be("2g")
|
||||||
@ -69,25 +63,6 @@ class Base58Test extends FlatSpec with MustMatchers {
|
|||||||
decodedBase58EncodeToHex("1111111111") must be("00000000000000000000")
|
decodedBase58EncodeToHex("1111111111") must be("00000000000000000000")
|
||||||
}
|
}
|
||||||
|
|
||||||
it must "decode address into bytes, then encode bytes back to address the same as bitcoinj" in {
|
|
||||||
//1C4kYhyLftmkn48YarSoLupxHfYFo8kp64
|
|
||||||
val address = TestUtil.bitcoinAddress.get.value
|
|
||||||
val bitcoinj =
|
|
||||||
org.bitcoinj.core.Base58.encode(org.bitcoinj.core.Base58.decode(address))
|
|
||||||
Base58.encode(Base58.decode(address)) must be(bitcoinj)
|
|
||||||
Base58.encode(Base58.decode(address)) must be(
|
|
||||||
"1C4kYhyLftmkn48YarSoLupxHfYFo8kp64")
|
|
||||||
}
|
|
||||||
|
|
||||||
it must "decode multisig address into bytes then encode back to multisig" in {
|
|
||||||
val multi = TestUtil.multiSigAddress.get.value
|
|
||||||
val bitcoinj =
|
|
||||||
org.bitcoinj.core.Base58.encode(org.bitcoinj.core.Base58.decode(multi))
|
|
||||||
Base58.encode(Base58.decode(multi)) must be(
|
|
||||||
TestUtil.multiSigAddress.get.value)
|
|
||||||
Base58.encode(Base58.decode(multi)) must be(bitcoinj)
|
|
||||||
}
|
|
||||||
|
|
||||||
it must "read base58_keys_valid.json and validate each case" in {
|
it must "read base58_keys_valid.json and validate each case" in {
|
||||||
import org.bitcoins.core.util.testprotocol.Base58ValidTestCaseProtocol._
|
import org.bitcoins.core.util.testprotocol.Base58ValidTestCaseProtocol._
|
||||||
val source =
|
val source =
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
package org.bitcoins.core.util
|
package org.bitcoins.core.util
|
||||||
|
|
||||||
import org.bitcoinj.core.DumpedPrivateKey
|
|
||||||
import org.bitcoins.core.crypto.ECPrivateKey
|
import org.bitcoins.core.crypto.ECPrivateKey
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -9,9 +8,6 @@ import org.bitcoins.core.crypto.ECPrivateKey
|
|||||||
trait CryptoTestUtil {
|
trait CryptoTestUtil {
|
||||||
def privateKeyBase58 = "cVLwRLTvz3BxDAWkvS3yzT9pUcTCup7kQnfT2smRjvmmm1wAP6QT"
|
def privateKeyBase58 = "cVLwRLTvz3BxDAWkvS3yzT9pUcTCup7kQnfT2smRjvmmm1wAP6QT"
|
||||||
|
|
||||||
def bitcoinjDumpedPrivateKey =
|
|
||||||
new DumpedPrivateKey(BitcoinJTestUtil.params, privateKeyBase58)
|
|
||||||
def bitcoinjPrivateKey = bitcoinjDumpedPrivateKey.getKey
|
|
||||||
def privateKey = ECPrivateKey.fromWIFToPrivateKey(privateKeyBase58)
|
def privateKey = ECPrivateKey.fromWIFToPrivateKey(privateKeyBase58)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -83,9 +83,6 @@ object Deps {
|
|||||||
|
|
||||||
object Test {
|
object Test {
|
||||||
val async = "org.scala-lang.modules" %% "scala-async" % V.asyncV % "test" withSources () withJavadoc ()
|
val async = "org.scala-lang.modules" %% "scala-async" % V.asyncV % "test" withSources () withJavadoc ()
|
||||||
|
|
||||||
val bitcoinj = ("org.bitcoinj" % "bitcoinj-core" % "0.14.4" % "test")
|
|
||||||
.exclude("org.slf4j", "slf4j-api")
|
|
||||||
val junitInterface = "com.novocode" % "junit-interface" % V.junitV % "test" withSources () withJavadoc ()
|
val junitInterface = "com.novocode" % "junit-interface" % V.junitV % "test" withSources () withJavadoc ()
|
||||||
val logback = Compile.logback % "test"
|
val logback = Compile.logback % "test"
|
||||||
val scalacheck = Compile.scalacheck % "test"
|
val scalacheck = Compile.scalacheck % "test"
|
||||||
@ -118,7 +115,6 @@ object Deps {
|
|||||||
)
|
)
|
||||||
|
|
||||||
val coreTest = List(
|
val coreTest = List(
|
||||||
Test.bitcoinj,
|
|
||||||
Test.junitInterface,
|
Test.junitInterface,
|
||||||
Test.logback,
|
Test.logback,
|
||||||
Test.scalaTest,
|
Test.scalaTest,
|
||||||
|
Loading…
Reference in New Issue
Block a user