Add function to validate OracleAnnouncementV0TLV's signature (#2308)

This commit is contained in:
Ben Carman 2020-12-02 06:59:44 -06:00 committed by GitHub
parent 28c37ccf1f
commit 0c03aa9c24
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 15 additions and 0 deletions

View file

@ -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] {

View file

@ -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)