mirror of
https://github.com/bitcoin-s/bitcoin-s.git
synced 2025-03-13 19:37:30 +01:00
Add function to validate OracleAnnouncementV0TLV's signature (#2308)
This commit is contained in:
parent
28c37ccf1f
commit
0c03aa9c24
2 changed files with 15 additions and 0 deletions
|
@ -589,6 +589,8 @@ sealed trait OracleAnnouncementTLV extends TLV {
|
|||
def eventTLV: OracleEventTLV
|
||||
def announcementSignature: SchnorrDigitalSignature
|
||||
def publicKey: SchnorrPublicKey
|
||||
|
||||
def validateSignature: Boolean
|
||||
}
|
||||
|
||||
case class OracleAnnouncementV0TLV(
|
||||
|
@ -600,6 +602,11 @@ case class OracleAnnouncementV0TLV(
|
|||
|
||||
override val value: ByteVector =
|
||||
announcementSignature.bytes ++ publicKey.bytes ++ eventTLV.bytes
|
||||
|
||||
override def validateSignature: Boolean = {
|
||||
publicKey.verify(CryptoUtil.sha256(eventTLV.bytes).bytes,
|
||||
announcementSignature)
|
||||
}
|
||||
}
|
||||
|
||||
object OracleAnnouncementV0TLV extends TLVFactory[OracleAnnouncementV0TLV] {
|
||||
|
|
|
@ -96,6 +96,7 @@ class DLCOracleTest extends DLCOracleFixture {
|
|||
|
||||
eventOpt <- dlcOracle.findEvent(announcement.eventTLV)
|
||||
} yield {
|
||||
assert(announcement.validateSignature)
|
||||
assert(eventOpt.isDefined)
|
||||
val event = eventOpt.get
|
||||
|
||||
|
@ -151,6 +152,7 @@ class DLCOracleTest extends DLCOracleFixture {
|
|||
|
||||
eventOpt <- dlcOracle.findEvent(announcement.eventTLV)
|
||||
} yield {
|
||||
assert(announcement.validateSignature)
|
||||
assert(eventOpt.isDefined)
|
||||
val event = eventOpt.get
|
||||
|
||||
|
@ -303,6 +305,8 @@ class DLCOracleTest extends DLCOracleFixture {
|
|||
unit = "units",
|
||||
precision = Int32.zero)
|
||||
|
||||
_ = assert(announcement.validateSignature)
|
||||
|
||||
eventTLV = announcement.eventTLV
|
||||
|
||||
event <- dlcOracle.signDigits(eventTLV, outcome)
|
||||
|
@ -372,6 +376,8 @@ class DLCOracleTest extends DLCOracleFixture {
|
|||
unit = "units",
|
||||
precision = Int32.zero)
|
||||
|
||||
_ = assert(announcement.validateSignature)
|
||||
|
||||
eventTLV = announcement.eventTLV
|
||||
|
||||
event <- dlcOracle.signDigits(eventTLV, outcome)
|
||||
|
@ -442,6 +448,8 @@ class DLCOracleTest extends DLCOracleFixture {
|
|||
unit = "units",
|
||||
precision = Int32.zero)
|
||||
|
||||
_ = assert(announcement.validateSignature)
|
||||
|
||||
eventTLV = announcement.eventTLV
|
||||
|
||||
event <- dlcOracle.signDigits(eventTLV, outcome)
|
||||
|
|
Loading…
Add table
Reference in a new issue