Skip to content

Commit 3caf680

Browse files
authored
Add BLS12381G2 keys to multikey manager (#3640)
1 parent 3e4ece7 commit 3caf680

File tree

2 files changed

+18
-1
lines changed

2 files changed

+18
-1
lines changed

acapy_agent/wallet/keys/manager.py

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
from ...core.profile import ProfileSession
44
from ..base import BaseWallet
5-
from ..key_type import ED25519, P256, KeyType
5+
from ..key_type import BLS12381G2, ED25519, P256, KeyType
66
from ..util import b58_to_bytes, bytes_to_b58
77
from ...utils.multiformats import multibase
88
from ...wallet.error import WalletNotFoundError
@@ -22,6 +22,12 @@
2222
"prefix_hex": "8024",
2323
"prefix_length": 2,
2424
},
25+
"bls12381g2": {
26+
"key_type": BLS12381G2,
27+
"multikey_prefix": "zUC7",
28+
"prefix_hex": "eb01",
29+
"prefix_length": 2,
30+
},
2531
}
2632

2733

@@ -84,6 +90,11 @@ async def resolve_multikey_from_verification_method(self, kid: str):
8490
elif verification_method.type == "Ed25519VerificationKey2020":
8591
multikey = verification_method.public_key_multibase
8692

93+
elif verification_method.type == "Bls12381G2Key2020":
94+
multikey = verkey_to_multikey(
95+
verification_method.public_key_base58, alg="bls12381g2"
96+
)
97+
8798
else:
8899
raise MultikeyManagerError("Unknown verification method type.")
89100

acapy_agent/wallet/keys/tests/test_key_operations.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,10 @@ class TestKeyOperations(IsolatedAsyncioTestCase):
2222
p256_verkey = "demmi97mhJ7JQu31git4hQz8a1PD1dETJH9TVKaynNQv"
2323
p256_alg = "p256"
2424

25+
bls12381g2_multikey = "zUC71fcKNvfU5d4NT3vurh8wdBqD2VSaVz7RdHmsfFBiYqfLDFkJTVK3m3hLb7yYDZq1C95HyssoX5BCr4ZatwP7jEh3UnwW7AMnx5fxdrhNkGVknbVY5QmjJ6S2CmtztCCffFL"
26+
bls12381g2_verkey = "mq4SKF1Ej1CA37G4gkSjKtUHnD8NU1ZVkuC4BPiuoxJXoenfkputxbjfS8dHhGHN3vfQwU1z9BdEuBqTjg3PuHAKgT3Q9XEJgRyZje4WGKMtRh9vzUbd8J23jbA7Je3oAe2"
27+
bls12381g2_alg = "bls12381g2"
28+
2529
async def asyncSetUp(self) -> None:
2630
self.profile = await create_test_profile()
2731
self.profile.context.injector.bind_instance(KeyTypes, KeyTypes())
@@ -32,6 +36,7 @@ async def test_key_creation(self):
3236
[
3337
(self.ed25519_alg, self.ed25519_multikey),
3438
(self.p256_alg, self.p256_multikey),
39+
(self.bls12381g2_alg, self.bls12381g2_multikey),
3540
]
3641
):
3742
kid = f"did:web:example.com#key-0{i}"
@@ -62,6 +67,7 @@ async def test_key_transformations(self):
6267
for alg, multikey, verkey in [
6368
(self.ed25519_alg, self.ed25519_multikey, self.ed25519_verkey),
6469
(self.p256_alg, self.p256_multikey, self.p256_verkey),
70+
(self.bls12381g2_alg, self.bls12381g2_multikey, self.bls12381g2_verkey),
6571
]:
6672
assert multikey_to_verkey(multikey) == verkey
6773
assert verkey_to_multikey(verkey, alg=alg) == multikey

0 commit comments

Comments
 (0)