|
| 1 | +package com.danubetech.dataintegrity; |
| 2 | + |
| 3 | +import com.danubetech.dataintegrity.jsonld.DataIntegrityContexts; |
| 4 | +import com.danubetech.dataintegrity.verifier.DataIntegrityProofLdVerifier; |
| 5 | +import com.danubetech.keyformats.PublicKeyBytes; |
| 6 | +import com.danubetech.keyformats.crypto.PublicKeyVerifier; |
| 7 | +import com.danubetech.keyformats.crypto.PublicKeyVerifierFactory; |
| 8 | +import com.danubetech.keyformats.jose.JWSAlgorithm; |
| 9 | +import com.danubetech.keyformats.jose.KeyTypeName; |
| 10 | +import foundation.identity.jsonld.JsonLDException; |
| 11 | +import foundation.identity.jsonld.JsonLDObject; |
| 12 | +import io.ipfs.multibase.Multibase; |
| 13 | +import org.bitcoinj.crypto.ECKey; |
| 14 | +import org.junit.jupiter.api.Test; |
| 15 | + |
| 16 | +import java.io.IOException; |
| 17 | +import java.io.InputStreamReader; |
| 18 | +import java.security.GeneralSecurityException; |
| 19 | +import java.util.Arrays; |
| 20 | +import java.util.Objects; |
| 21 | + |
| 22 | +import static org.junit.jupiter.api.Assertions.assertTrue; |
| 23 | + |
| 24 | +public class DidBtc1PatchTest { |
| 25 | + |
| 26 | + @Test |
| 27 | + public void testPatch() throws JsonLDException, GeneralSecurityException, IOException { |
| 28 | + |
| 29 | + JsonLDObject jsonLdObject = JsonLDObject.fromJson(new InputStreamReader(Objects.requireNonNull(DidBtc1PatchTest.class.getResourceAsStream("did-btc1-patch.jsonld")))); |
| 30 | + jsonLdObject.setDocumentLoader(DataIntegrityContexts.DOCUMENT_LOADER); |
| 31 | + |
| 32 | + JsonLDObject verificationMethod = JsonLDObject.fromJson(new InputStreamReader(Objects.requireNonNull(DidBtc1PatchTest.class.getResourceAsStream("did-btc1-patch.verification-method.jsonld")))); |
| 33 | + String publicKeyMultibase = (String) verificationMethod.getJsonObject().get("publicKeyMultibase"); |
| 34 | + byte[] publicKeyBytes = Arrays.copyOfRange(Multibase.decode(publicKeyMultibase), 2, 35); |
| 35 | + ECKey publicKey = PublicKeyBytes.bytes_to_secp256k1PublicKey(publicKeyBytes); |
| 36 | + |
| 37 | + PublicKeyVerifier<?> publicKeyVerifier = PublicKeyVerifierFactory.publicKeyVerifierForKey(KeyTypeName.secp256k1, JWSAlgorithm.ES256KS, publicKey); |
| 38 | + DataIntegrityProofLdVerifier verifier = new DataIntegrityProofLdVerifier(publicKeyVerifier); |
| 39 | + boolean verify = verifier.verify(jsonLdObject); |
| 40 | + |
| 41 | + assertTrue(verify); |
| 42 | + } |
| 43 | +} |
0 commit comments