Skip to content
This repository was archived by the owner on Mar 27, 2024. It is now read-only.

Commit eb52e49

Browse files
committed
[3392] BBS update: support header in creds.
Signed-off-by: Sergey Minaev <[email protected]>
1 parent c7a9005 commit eb52e49

File tree

14 files changed

+59
-58
lines changed

14 files changed

+59
-58
lines changed

pkg/controller/command/verifiable/command_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2934,7 +2934,7 @@ func newBBSSigner(privKey *bbs12381g2pub.PrivateKey) (*bbsSigner, error) {
29342934
func (s *bbsSigner) Sign(data []byte) ([]byte, error) {
29352935
msgs := s.textToLines(string(data))
29362936

2937-
return bbs12381g2pub.New().Sign(msgs, s.privKeyBytes)
2937+
return bbs12381g2pub.New().Sign(nil, msgs, s.privKeyBytes)
29382938
}
29392939

29402940
func (s *bbsSigner) Alg() string {

pkg/controller/rest/verifiable/operation_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1523,7 +1523,7 @@ func newBBSSigner(privKey *bbs12381g2pub.PrivateKey) (*bbsSigner, error) {
15231523
func (s *bbsSigner) Sign(data []byte) ([]byte, error) {
15241524
msgs := s.textToLines(string(data))
15251525

1526-
return bbs12381g2pub.New().Sign(msgs, s.privKeyBytes)
1526+
return bbs12381g2pub.New().Sign(nil, msgs, s.privKeyBytes)
15271527
}
15281528

15291529
func (s *bbsSigner) Alg() string {

pkg/crypto/primitive/bbs12381g2pub/bbs.go

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ const (
5454
)
5555

5656
// Verify makes BLS BBS12-381 signature verification.
57-
func (bbs *BBSG2Pub) Verify(messages [][]byte, sigBytes, pubKeyBytes []byte) error {
57+
func (bbs *BBSG2Pub) Verify(header []byte, messages [][]byte, sigBytes, pubKeyBytes []byte) error {
5858
signature, err := ParseSignature(sigBytes)
5959
if err != nil {
6060
return fmt.Errorf("parse signature: %w", err)
@@ -67,7 +67,7 @@ func (bbs *BBSG2Pub) Verify(messages [][]byte, sigBytes, pubKeyBytes []byte) err
6767

6868
messagesCount := len(messages)
6969

70-
publicKeyWithGenerators, err := pubKey.ToPublicKeyWithGenerators(messagesCount)
70+
publicKeyWithGenerators, err := pubKey.ToPublicKeyWithGenerators(messagesCount, header)
7171
if err != nil {
7272
return fmt.Errorf("build generators from public key: %w", err)
7373
}
@@ -78,7 +78,7 @@ func (bbs *BBSG2Pub) Verify(messages [][]byte, sigBytes, pubKeyBytes []byte) err
7878
}
7979

8080
// Sign signs the one or more messages using private key in compressed form.
81-
func (bbs *BBSG2Pub) Sign(messages [][]byte, privKeyBytes []byte) ([]byte, error) {
81+
func (bbs *BBSG2Pub) Sign(header []byte, messages [][]byte, privKeyBytes []byte) ([]byte, error) {
8282
privKey, err := UnmarshalPrivateKey(privKeyBytes)
8383
if err != nil {
8484
return nil, fmt.Errorf("unmarshal private key: %w", err)
@@ -88,11 +88,11 @@ func (bbs *BBSG2Pub) Sign(messages [][]byte, privKeyBytes []byte) ([]byte, error
8888
return nil, errors.New("messages are not defined")
8989
}
9090

91-
return bbs.SignWithKey(messages, privKey)
91+
return bbs.SignWithKey(header, messages, privKey)
9292
}
9393

9494
// VerifyProof verifies BBS+ signature proof for one ore more revealed messages.
95-
func (bbs *BBSG2Pub) VerifyProof(messagesBytes [][]byte, proof, nonce, pubKeyBytes []byte) error {
95+
func (bbs *BBSG2Pub) VerifyProof(header []byte, messagesBytes [][]byte, proof, nonce, pubKeyBytes []byte) error {
9696
payload, err := parsePoKPayload(proof)
9797
if err != nil {
9898
return fmt.Errorf("parse signature proof: %w", err)
@@ -110,7 +110,7 @@ func (bbs *BBSG2Pub) VerifyProof(messagesBytes [][]byte, proof, nonce, pubKeyByt
110110
return fmt.Errorf("parse public key: %w", err)
111111
}
112112

113-
publicKeyWithGenerators, err := pubKey.ToPublicKeyWithGenerators(payload.messagesCount)
113+
publicKeyWithGenerators, err := pubKey.ToPublicKeyWithGenerators(payload.messagesCount, header)
114114
if err != nil {
115115
return fmt.Errorf("build generators from public key: %w", err)
116116
}
@@ -130,7 +130,7 @@ func (bbs *BBSG2Pub) VerifyProof(messagesBytes [][]byte, proof, nonce, pubKeyByt
130130
}
131131

132132
// DeriveProof derives a proof of BBS+ signature with some messages disclosed.
133-
func (bbs *BBSG2Pub) DeriveProof(messages [][]byte, sigBytes, nonce, pubKeyBytes []byte,
133+
func (bbs *BBSG2Pub) DeriveProof(header []byte, messages [][]byte, sigBytes, nonce, pubKeyBytes []byte,
134134
revealedIndexes []int) ([]byte, error) {
135135
if len(revealedIndexes) == 0 {
136136
return nil, errors.New("no message to reveal")
@@ -147,7 +147,7 @@ func (bbs *BBSG2Pub) DeriveProof(messages [][]byte, sigBytes, nonce, pubKeyBytes
147147
return nil, fmt.Errorf("parse public key: %w", err)
148148
}
149149

150-
publicKeyWithGenerators, err := pubKey.ToPublicKeyWithGenerators(messagesCount)
150+
publicKeyWithGenerators, err := pubKey.ToPublicKeyWithGenerators(messagesCount, header)
151151
if err != nil {
152152
return nil, fmt.Errorf("build generators from public key: %w", err)
153153
}
@@ -179,13 +179,13 @@ func (bbs *BBSG2Pub) DeriveProof(messages [][]byte, sigBytes, nonce, pubKeyBytes
179179
}
180180

181181
// SignWithKey signs the one or more messages using BBS+ key pair.
182-
func (bbs *BBSG2Pub) SignWithKey(messages [][]byte, privKey *PrivateKey) ([]byte, error) {
182+
func (bbs *BBSG2Pub) SignWithKey(header []byte, messages [][]byte, privKey *PrivateKey) ([]byte, error) {
183183
var err error
184184

185185
pubKey := privKey.PublicKey()
186186
messagesCount := len(messages)
187187

188-
pubKeyWithGenerators, err := pubKey.ToPublicKeyWithGenerators(messagesCount)
188+
pubKeyWithGenerators, err := pubKey.ToPublicKeyWithGenerators(messagesCount, header)
189189
if err != nil {
190190
return nil, fmt.Errorf("build generators from public key: %w", err)
191191
}

pkg/crypto/primitive/bbs12381g2pub/bbs_test.go

Lines changed: 31 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -26,16 +26,16 @@ func TestBlsG2Pub_Verify(t *testing.T) {
2626
require.NoError(t, err)
2727

2828
sigBytes := hexStringToBytesTest(t,
29-
"836370c0f9fee53a4518e3294d2cd9880e9ced5a92fd21f20af898cf76c43a1fa88b3b8a0347313b83cb2f52055c3b56"+
30-
"24f8ea83101ff3429b07708c790975a43a1893fa848e1ffec1ab97c61196823d"+
31-
"28c3baa5900943929f3b0fdf36665fa43db9ee82dd855551bb9e7aaa6cc5c764")
29+
"84d9677e651d7e039ff1bd3c6c37a6d465b23ebcc1291cf0082cd94c3971ff2ec64d8ddfd0c2f68d37429f6c751003a7"+
30+
"5435cae4b55250e5a3e357b7bd52589ff830820cd5e07a6125d846245efacccb"+
31+
"5814139b8bef5b329b3a269f576565d33bf6254916468f9e997a685ac68508a6")
3232

3333
messagesBytes := default10messages(t)
3434

3535
bls := bbs12381g2pub.New()
3636

3737
t.Run("valid signature", func(t *testing.T) {
38-
err = bls.Verify(messagesBytes, sigBytes, pkBytes)
38+
err = bls.Verify(nil, messagesBytes, sigBytes, pkBytes)
3939
require.NoError(t, err)
4040
})
4141

@@ -45,13 +45,13 @@ func TestBlsG2Pub_Verify(t *testing.T) {
4545
copy(invalidMessagesBytes, messagesBytes)
4646
invalidMessagesBytes[0] = invalidMessagesBytes[1]
4747

48-
err = bls.Verify(invalidMessagesBytes, sigBytes, pkBytes)
48+
err = bls.Verify(nil, invalidMessagesBytes, sigBytes, pkBytes)
4949
require.Error(t, err)
5050
require.EqualError(t, err, "invalid BLS12-381 signature")
5151
})
5252

5353
t.Run("invalid input public key", func(t *testing.T) {
54-
err = bls.Verify(messagesBytes, sigBytes, []byte("invalid"))
54+
err = bls.Verify(nil, messagesBytes, sigBytes, []byte("invalid"))
5555
require.Error(t, err)
5656
require.EqualError(t, err, "parse public key: invalid size of public key")
5757

@@ -60,13 +60,13 @@ func TestBlsG2Pub_Verify(t *testing.T) {
6060
_, err = rand.Read(pkBytesInvalid)
6161
require.NoError(t, err)
6262

63-
err = bls.Verify(messagesBytes, sigBytes, pkBytesInvalid)
63+
err = bls.Verify(nil, messagesBytes, sigBytes, pkBytesInvalid)
6464
require.Error(t, err)
6565
require.Contains(t, err.Error(), "parse public key: deserialize public key")
6666
})
6767

6868
t.Run("invalid input signature", func(t *testing.T) {
69-
err = bls.Verify(messagesBytes, []byte("invalid"), pkBytes)
69+
err = bls.Verify(nil, messagesBytes, []byte("invalid"), pkBytes)
7070
require.Error(t, err)
7171
require.EqualError(t, err, "parse signature: invalid size of signature")
7272

@@ -75,7 +75,7 @@ func TestBlsG2Pub_Verify(t *testing.T) {
7575
_, err = rand.Read(sigBytesInvalid)
7676
require.NoError(t, err)
7777

78-
err = bls.Verify(messagesBytes, sigBytesInvalid, pkBytes)
78+
err = bls.Verify(nil, messagesBytes, sigBytesInvalid, pkBytes)
7979
require.Error(t, err)
8080
require.Contains(t, err.Error(), "parse signature: deserialize G1 compressed signature")
8181
})
@@ -89,15 +89,15 @@ func TestBBSG2Pub_SignWithKeyPair(t *testing.T) {
8989

9090
messagesBytes := [][]byte{[]byte("message1"), []byte("message2")}
9191

92-
signatureBytes, err := bls.SignWithKey(messagesBytes, privKey)
92+
signatureBytes, err := bls.SignWithKey(nil, messagesBytes, privKey)
9393
require.NoError(t, err)
9494
require.NotEmpty(t, signatureBytes)
9595
require.Len(t, signatureBytes, 112)
9696

9797
pubKeyBytes, err := pubKey.Marshal()
9898
require.NoError(t, err)
9999

100-
require.NoError(t, bls.Verify(messagesBytes, signatureBytes, pubKeyBytes))
100+
require.NoError(t, bls.Verify(nil, messagesBytes, signatureBytes, pubKeyBytes))
101101
}
102102

103103
func TestBBSG2Pub_Sign(t *testing.T) {
@@ -111,24 +111,24 @@ func TestBBSG2Pub_Sign(t *testing.T) {
111111
privKeyBytes, err := privKey.Marshal()
112112
require.NoError(t, err)
113113

114-
signatureBytes, err := bls.Sign(messagesBytes, privKeyBytes)
114+
signatureBytes, err := bls.Sign(nil, messagesBytes, privKeyBytes)
115115
require.NoError(t, err)
116116
require.NotEmpty(t, signatureBytes)
117117
require.Len(t, signatureBytes, 112)
118118

119119
pubKeyBytes, err := pubKey.Marshal()
120120
require.NoError(t, err)
121121

122-
require.NoError(t, bls.Verify(messagesBytes, signatureBytes, pubKeyBytes))
122+
require.NoError(t, bls.Verify(nil, messagesBytes, signatureBytes, pubKeyBytes))
123123

124124
// invalid private key bytes
125-
signatureBytes, err = bls.Sign(messagesBytes, []byte("invalid"))
125+
signatureBytes, err = bls.Sign(nil, messagesBytes, []byte("invalid"))
126126
require.Error(t, err)
127127
require.EqualError(t, err, "unmarshal private key: invalid size of private key")
128128
require.Nil(t, signatureBytes)
129129

130130
// at least one message must be passed
131-
signatureBytes, err = bls.Sign([][]byte{}, privKeyBytes)
131+
signatureBytes, err = bls.Sign(nil, [][]byte{}, privKeyBytes)
132132
require.Error(t, err)
133133
require.EqualError(t, err, "messages are not defined")
134134
require.Nil(t, signatureBytes)
@@ -142,13 +142,13 @@ func TestBBSG2Pub_SignWithPredefinedKeys(t *testing.T) {
142142
messagesBytes := default10messages(t)
143143

144144
bls := bbs12381g2pub.New()
145-
signature, err := bls.Sign(messagesBytes, privateKeyBytes)
145+
signature, err := bls.Sign(nil, messagesBytes, privateKeyBytes)
146146
require.NoError(t, err)
147147

148148
expectedSignatureBytes := hexStringToBytesTest(t,
149-
"836370c0f9fee53a4518e3294d2cd9880e9ced5a92fd21f20af898cf76c43a1fa88b3b8a0347313b83cb2f52055c3b56"+
150-
"24f8ea83101ff3429b07708c790975a43a1893fa848e1ffec1ab97c61196823d"+
151-
"28c3baa5900943929f3b0fdf36665fa43db9ee82dd855551bb9e7aaa6cc5c764")
149+
"84d9677e651d7e039ff1bd3c6c37a6d465b23ebcc1291cf0082cd94c3971ff2ec64d8ddfd0c2f68d37429f6c751003a7"+
150+
"5435cae4b55250e5a3e357b7bd52589ff830820cd5e07a6125d846245efacccb"+
151+
"5814139b8bef5b329b3a269f576565d33bf6254916468f9e997a685ac68508a6")
152152
// TODO signature defined in the spec
153153
// "9157456791e4f9cae1130372f7cf37709ba661e43df5c23cc1c76be91abff7e2603e2ddaaa71fc42bd6f9d44bd58315b"+
154154
// "09ee5cc4e7614edde358f2c497b6b05c8b118fae3f71a52af482dceffccb3785"+
@@ -166,7 +166,7 @@ func TestBBSG2Pub_VerifyProof_SeveralDisclosedMessages(t *testing.T) {
166166
pkBytes, err := privateKey.PublicKey().Marshal()
167167
require.NoError(t, err)
168168

169-
proofBytes := hexStringToBytesTest(t, "000a0005b6f1890b66d4ffaaceda451c4986e36553b4db2622057e8a96b2f29e9274bb8f0249f305088269e39772ec845c267b6c84d60886cec2615e3f0b18a58b4ee97404fcaecff3889b1361df37baaf75bb4c11cb427dcbb91aac11ef32f2d4568540b1e527b52626a4f081f43182f2fcdb3f0197eb6b22d3050be87ece2c719e79b948f00be75d10b851641c6de2b84a49040000007480ce09f9513044ce742c18eb796a6cda777b836931675c7a6b76910c15debf9aa991165bc54a50d1899c00742ecd75dc000000026ae46e197c2fd0f0d7233b7eb8235b85bbbb10664c6b4c69bc645bd4e211df754f14ae46e8358107caab0e91c7a39c7b8d3bb57d6f932a2bc786877fa271bc39a8c3a8823f9246239ed8fe58da4de9bb47d4e535e27e11a764c2ae5d2d9bf5bf38db5d9e71d61d3bbc40896afc79f64f0000000a19de08e7f3ef1dca5b05363a0cf765c5c455a89fcf61513c100d9219d87f60db11ef7535cdc6f6fd6820eb8cfd8b4f89fa80321ec0121daded6257496c7ed24b4b0894a65c2abcdbfec475a10167c58f3801d3dd2563d788b6a9310ba908849135b34c5fa902e08c4f26bcd3fdd197146ee4f5d89b6bc0bd54046b68d07fcf5e42941fb950d223a508639add65e90e52380524c5cc5fef3fdca7a0f12e03f1c7559ff3467e9650230ff491699edb25daafa162c3c1dbd467d94cb2c0d63ec3305a7c022dce4952135fa1d7945af17ec131563a9d1925297945df74b46e19175f234885eea5e7b1b3b0f11aabb7f587271aeae106a6e9a4ea6662d82d5530f05d04bbe0001b8858cca3160df6dfdbcdbf4bf0dd7897f0394615026d81c4b955c13c9a99852c667c08d40de2522b138ae66de5055f9dc79df43a2a2c6522f459a1") //nolint:lll
169+
proofBytes := hexStringToBytesTest(t, "000a0005ab1a7238bc9ba5065c9d1f395720f97b8d68208e89edb1fa8f1cde16c07b7771a46359ef198317ca71cfae5937200485b3e62de95b4d05a95c8d882197c56e582f74b5e6e1e4ae866a93fa13ae32690b8ea1bbbd7f1138f18a750ede1915a6d2898eec5b19028f2765585f36be4f152bd4ac2ad280743bed14ec78e0cdbf80f0547b37b1de62d71144f03e1fdec89b05000000748adcb65ca0ed38b9c6d1649bef5cd942175affdb9c7ad5212b371f0472d39228dc6c220cc80846fb2f44911b7aed2f32000000020910a8400998e7903a401b439d9a84723e46c9f0c03a9949ac9ee2d545caf72a50cd0f2f340a04a22ffbc8c4c6aa15af1ae972c18bbe6b463707836fb08d624089a4b92531729d0ce3f44ca36b47331a4c9a51af11d5b0f9bf4b55d8d09db24c8df59c6ad111ae0f9af56e16681a53df0000000a5916c0c291dc659d25699f2b182e2fbafe091bdf7a0667a4e4f047e80fa3d64214ee7f20d63f31472ec2eeac73ca01e51c2e420f3a26cda4e0cbe82e64f92a62075131c9dfde53d16e8c3e1d0b56bd6ac203f07af450cb94b019c6bb667df2465f9317c9ac178e58f638eb52751638fd54a211ab0ab3aeee8d87a69392de458f6ddb6b9f007589f6bdb5376eeffc4f64f7c7c0c426197be97f4f83a1a6f06ff74473dde98edbb444976ef4083237a859807d1a4c1e94fe68b69609fa00431e4b4622a39bd74791ce4b1f7545291b5ded098a757f680cbe1612312c8f841a8d0b077e5cf3eb5cf85f0ed9a3a061c3aa447c9a6bc87808d3ee1f293d157d1f41f14edd5cd0b1fcb5112d7e09386a276f396d4f31f1660bb65f0206eb92d669d2800f1e0f418be23895ad0cac055f973b50c38d57df54563e5493dd7910308ed9a6") //nolint:lll
170170

171171
// TODO "header": "11223344556677889900aabbccddeeff"
172172
nonce := hexStringToBytesTest(t, "bed231d880675ed101ead304512e043ade9958dd0241ea70b4b3957fba941501")
@@ -177,12 +177,12 @@ func TestBBSG2Pub_VerifyProof_SeveralDisclosedMessages(t *testing.T) {
177177
bls := bbs12381g2pub.New()
178178

179179
t.Run("valid signature", func(t *testing.T) {
180-
err = bls.VerifyProof(revealedMessagesBytes, proofBytes, nonce, pkBytes)
180+
err = bls.VerifyProof(nil, revealedMessagesBytes, proofBytes, nonce, pkBytes)
181181
require.NoError(t, err)
182182
})
183183

184184
t.Run("invalid size of signature proof payload", func(t *testing.T) {
185-
err = bls.VerifyProof(revealedMessagesBytes, []byte("?"), nonce, pkBytes)
185+
err = bls.VerifyProof(nil, revealedMessagesBytes, []byte("?"), nonce, pkBytes)
186186
require.Error(t, err)
187187
require.EqualError(t, err, "parse signature proof: invalid size of PoK payload")
188188
})
@@ -192,7 +192,7 @@ func TestBBSG2Pub_VerifyProof_SeveralDisclosedMessages(t *testing.T) {
192192

193193
copy(proofBytesCopy, proofBytes)
194194

195-
err = bls.VerifyProof(revealedMessagesBytes, proofBytesCopy, nonce, pkBytes)
195+
err = bls.VerifyProof(nil, revealedMessagesBytes, proofBytesCopy, nonce, pkBytes)
196196
require.Error(t, err)
197197
require.EqualError(t, err, "parse signature proof: invalid size of signature proof")
198198
})
@@ -201,15 +201,15 @@ func TestBBSG2Pub_VerifyProof_SeveralDisclosedMessages(t *testing.T) {
201201
proofBytesCopy := make([]byte, len(proofBytes))
202202

203203
copy(proofBytesCopy, proofBytes)
204-
proofBytesCopy[21] = 255 - proofBytesCopy[21]
204+
proofBytesCopy[23] = 255 - proofBytesCopy[23]
205205

206-
err = bls.VerifyProof(revealedMessagesBytes, proofBytesCopy, nonce, pkBytes)
206+
err = bls.VerifyProof(nil, revealedMessagesBytes, proofBytesCopy, nonce, pkBytes)
207207
require.Error(t, err)
208208
require.EqualError(t, err, "parse signature proof: parse G1 point: point is not on curve")
209209
})
210210

211211
t.Run("invalid input public key", func(t *testing.T) {
212-
err = bls.VerifyProof(revealedMessagesBytes, proofBytes, nonce, []byte("invalid public key"))
212+
err = bls.VerifyProof(nil, revealedMessagesBytes, proofBytes, nonce, []byte("invalid public key"))
213213
require.Error(t, err)
214214
require.EqualError(t, err, "parse public key: invalid size of public key")
215215
})
@@ -226,17 +226,17 @@ func TestBBSG2Pub_DeriveProof(t *testing.T) {
226226
messagesBytes := default10messages(t)
227227
bls := bbs12381g2pub.New()
228228

229-
signatureBytes, err := bls.Sign(messagesBytes, privKeyBytes)
229+
signatureBytes, err := bls.Sign(nil, messagesBytes, privKeyBytes)
230230
require.NoError(t, err)
231231

232232
pubKeyBytes, err := pubKey.Marshal()
233233
require.NoError(t, err)
234234

235-
require.NoError(t, bls.Verify(messagesBytes, signatureBytes, pubKeyBytes))
235+
require.NoError(t, bls.Verify(nil, messagesBytes, signatureBytes, pubKeyBytes))
236236

237237
nonce := hexStringToBytesTest(t, "bed231d880675ed101ead304512e043ade9958dd0241ea70b4b3957fba941501")
238238
revealedIndexes := []int{0, 2}
239-
proofBytes, err := bls.DeriveProof(messagesBytes, signatureBytes, nonce, pubKeyBytes, revealedIndexes)
239+
proofBytes, err := bls.DeriveProof(nil, messagesBytes, signatureBytes, nonce, pubKeyBytes, revealedIndexes)
240240
require.NoError(t, err)
241241
require.NotEmpty(t, proofBytes)
242242

@@ -245,11 +245,11 @@ func TestBBSG2Pub_DeriveProof(t *testing.T) {
245245
revealedMessages[i] = messagesBytes[ind]
246246
}
247247

248-
require.NoError(t, bls.VerifyProof(revealedMessages, proofBytes, nonce, pubKeyBytes))
248+
require.NoError(t, bls.VerifyProof(nil, revealedMessages, proofBytes, nonce, pubKeyBytes))
249249

250250
t.Run("DeriveProof with revealedIndexes larger than revealedMessages count", func(t *testing.T) {
251251
revealedIndexes = []int{0, 2, 4, 7, 9, 11}
252-
_, err = bls.DeriveProof(messagesBytes, signatureBytes, nonce, pubKeyBytes, revealedIndexes)
252+
_, err = bls.DeriveProof(nil, messagesBytes, signatureBytes, nonce, pubKeyBytes, revealedIndexes)
253253
require.EqualError(t, err, "init proof of knowledge signature: "+
254254
"invalid revealed index: requested index 11 is larger than 10 messages count")
255255
})

pkg/crypto/primitive/bbs12381g2pub/keys.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ type PublicKeyWithGenerators struct {
5454
}
5555

5656
// ToPublicKeyWithGenerators creates PublicKeyWithGenerators from the PublicKey.
57-
func (pk *PublicKey) ToPublicKeyWithGenerators(messagesCount int) (*PublicKeyWithGenerators, error) {
57+
func (pk *PublicKey) ToPublicKeyWithGenerators(messagesCount int, header []byte) (*PublicKeyWithGenerators, error) {
5858
specGenCnt := 2
5959
genCnt := messagesCount + specGenCnt
6060

@@ -72,7 +72,7 @@ func (pk *PublicKey) ToPublicKeyWithGenerators(messagesCount int) (*PublicKeyWit
7272
}
7373

7474
domainBuilder.addCsID()
75-
// TODO use header. Probably should be a parameter to this func
75+
domainBuilder.addBytes(header)
7676

7777
domain := Hash2scalar(domainBuilder.build())
7878

pkg/crypto/primitive/bbs12381g2pub/keys_test.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -127,10 +127,11 @@ func TestParseMattrKeys(t *testing.T) {
127127
pubKeyBytes := base58.Decode(pubKeyB58)
128128

129129
messagesBytes := [][]byte{[]byte("message1"), []byte("message2")}
130-
signatureBytes, err := bbs.New().Sign(messagesBytes, privKeyBytes)
130+
signatureBytes, err := bbs.New().Sign(nil, messagesBytes, privKeyBytes)
131131
require.NoError(t, err)
132132

133-
err = bbs.New().Verify(messagesBytes, signatureBytes, pubKeyBytes)
133+
err = bbs.New().Verify(nil,
134+
messagesBytes, signatureBytes, pubKeyBytes)
134135
require.NoError(t, err)
135136
}
136137

pkg/crypto/tinkcrypto/primitive/bbs/subtle/bls12381g2_signer.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,5 +32,5 @@ func NewBLS12381G2Signer(privateKey []byte) *BLS12381G2Signer {
3232
// signature in []byte
3333
// error in case of errors
3434
func (s *BLS12381G2Signer) Sign(messages [][]byte) ([]byte, error) {
35-
return s.bbsPrimitive.Sign(messages, s.privateKeyBytes)
35+
return s.bbsPrimitive.Sign(nil, messages, s.privateKeyBytes)
3636
}

pkg/crypto/tinkcrypto/primitive/bbs/subtle/bls12381g2_verifier.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,14 +30,14 @@ func NewBLS12381G2Verifier(signerPublicKey []byte) *BLS12381G2Verifier {
3030
// returns:
3131
// error in case of errors or nil if signature verification was successful
3232
func (v *BLS12381G2Verifier) Verify(messages [][]byte, signature []byte) error {
33-
return v.bbsPrimitive.Verify(messages, signature, v.signerPubKeyBytes)
33+
return v.bbsPrimitive.Verify(nil, messages, signature, v.signerPubKeyBytes)
3434
}
3535

3636
// VerifyProof will verify a BBS+ signature proof (generated e.g. by DeriveProof()) with the signer's public key.
3737
// returns:
3838
// error in case of errors or nil if signature proof verification was successful
3939
func (v *BLS12381G2Verifier) VerifyProof(messages [][]byte, proof, nonce []byte) error {
40-
return v.bbsPrimitive.VerifyProof(messages, proof, nonce, v.signerPubKeyBytes)
40+
return v.bbsPrimitive.VerifyProof(nil, messages, proof, nonce, v.signerPubKeyBytes)
4141
}
4242

4343
// DeriveProof will create a BBS+ signature proof for a list of revealed messages using BBS signature
@@ -47,5 +47,5 @@ func (v *BLS12381G2Verifier) VerifyProof(messages [][]byte, proof, nonce []byte)
4747
// error in case of errors
4848
func (v *BLS12381G2Verifier) DeriveProof(messages [][]byte, signature, nonce []byte,
4949
revealedIndexes []int) ([]byte, error) {
50-
return v.bbsPrimitive.DeriveProof(messages, signature, nonce, v.signerPubKeyBytes, revealedIndexes)
50+
return v.bbsPrimitive.DeriveProof(nil, messages, signature, nonce, v.signerPubKeyBytes, revealedIndexes)
5151
}

pkg/doc/presexch/definition_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1634,7 +1634,7 @@ func newBBSSigner(key *bbs12381g2pub.PrivateKey) (*bbsSigner, error) {
16341634
}
16351635

16361636
func (s *bbsSigner) Sign(data []byte) ([]byte, error) {
1637-
return bbs12381g2pub.New().Sign(s.textToLines(string(data)), s.privateKey)
1637+
return bbs12381g2pub.New().Sign(nil, s.textToLines(string(data)), s.privateKey)
16381638
}
16391639

16401640
func (s *bbsSigner) Alg() string {

0 commit comments

Comments
 (0)