public void IssueBlindedAssetParserTest() { byte[] groupId = ConfidentialAssetsHelper.GetRandomSeed(); ulong syncBlockHeight = 1; uint nonce = 4; byte[] powHash = BinaryHelper.GetPowHash(1234); ushort version = 1; ulong blockHeight = 9; byte[] body; ulong uptodateFunds = 10001; byte[] assetCommitment = ConfidentialAssetsHelper.GetRandomSeed(); byte[] mask = ConfidentialAssetsHelper.GetRandomSeed(); byte[] maskedAssetId = ConfidentialAssetsHelper.GetRandomSeed(); byte[] keyImage = ConfidentialAssetsHelper.GetRandomSeed(); byte[] c = ConfidentialAssetsHelper.GetRandomSeed(); byte[] r = ConfidentialAssetsHelper.GetRandomSeed(); using (MemoryStream ms = new MemoryStream()) { using (BinaryWriter bw = new BinaryWriter(ms)) { bw.Write(uptodateFunds); bw.Write(groupId); bw.Write(assetCommitment); //bw.Write(mask); //bw.Write(maskedAssetId); bw.Write(keyImage); bw.Write(c); bw.Write(r); } body = ms.ToArray(); } byte[] packet = BinaryHelper.GetSignedPacket(PacketType.Transactional, syncBlockHeight, nonce, powHash, version, BlockTypes.Transaction_TransferGroupedAssetsToUtxo, blockHeight, null, body, _privateKey, out byte[] expectedSignature); IssueBlindedAssetParser parser = new IssueBlindedAssetParser(_identityKeyProvidersRegistry); IssueBlindedAsset block = (IssueBlindedAsset)parser.Parse(packet); Assert.Equal(syncBlockHeight, block.SyncBlockHeight); Assert.Equal(nonce, block.Nonce); Assert.Equal(powHash, block.PowHash); Assert.Equal(version, block.Version); Assert.Equal(blockHeight, block.BlockHeight); Assert.Equal(uptodateFunds, block.UptodateFunds); Assert.Equal(groupId, block.GroupId); Assert.Equal(assetCommitment, block.AssetCommitment); Assert.Equal(keyImage, block.KeyImage); Assert.Equal(c, block.UniquencessProof.C); Assert.Equal(r, block.UniquencessProof.R); Assert.Equal(expectedSignature, block.Signature.ToArray()); }
protected override Memory <byte> ParseTransactional(ushort version, Memory <byte> spanBody, out TransactionalPacketBase transactionalBlockBase) { IssueBlindedAsset block = null; if (version == 1) { int readBytes = 0; byte[] groupId = spanBody.Slice(readBytes, Globals.NODE_PUBLIC_KEY_SIZE).ToArray(); readBytes += Globals.NODE_PUBLIC_KEY_SIZE; byte[] assetCommitment = spanBody.Slice(readBytes, Globals.NODE_PUBLIC_KEY_SIZE).ToArray(); readBytes += Globals.NODE_PUBLIC_KEY_SIZE; byte[] keyImage = spanBody.Slice(readBytes, Globals.NODE_PUBLIC_KEY_SIZE).ToArray(); readBytes += Globals.NODE_PUBLIC_KEY_SIZE; byte[] ringSignatureC = spanBody.Slice(readBytes, Globals.NODE_PUBLIC_KEY_SIZE).ToArray(); readBytes += Globals.NODE_PUBLIC_KEY_SIZE; byte[] ringSignatureR = spanBody.Slice(readBytes, Globals.NODE_PUBLIC_KEY_SIZE).ToArray(); readBytes += Globals.NODE_PUBLIC_KEY_SIZE; block = new IssueBlindedAsset { GroupId = groupId, AssetCommitment = assetCommitment, KeyImage = keyImage, UniquencessProof = new RingSignature { C = ringSignatureC, R = ringSignatureR } }; transactionalBlockBase = block; return(spanBody.Slice(readBytes)); } throw new BlockVersionNotSupportedException(version, BlockType); }
public void IssueBlindedAssetSerializerTest() { byte[] groupId = ConfidentialAssetsHelper.GetRandomSeed(); ulong syncBlockHeight = 1; uint nonce = 4; byte[] powHash = BinaryHelper.GetPowHash(1234); ushort version = 1; ulong blockHeight = 9; byte[] body; ulong uptodateFunds = 10001; byte[] assetCommitment = ConfidentialAssetsHelper.GetRandomSeed(); byte[] keyImage = ConfidentialAssetsHelper.GetRandomSeed(); byte[] c = ConfidentialAssetsHelper.GetRandomSeed(); byte[] r = ConfidentialAssetsHelper.GetRandomSeed(); using (MemoryStream ms = new MemoryStream()) { using (BinaryWriter bw = new BinaryWriter(ms)) { bw.Write(uptodateFunds); bw.Write(groupId); bw.Write(assetCommitment); bw.Write(keyImage); bw.Write(c); bw.Write(r); } body = ms.ToArray(); } byte[] expectedPacket = BinaryHelper.GetSignedPacket(PacketType.Transactional, syncBlockHeight, nonce, powHash, version, BlockTypes.Transaction_IssueBlindedAsset, blockHeight, null, body, _privateKey, out byte[] expectedSignature); IssueBlindedAsset issueBlindedAsset = new IssueBlindedAsset { SyncBlockHeight = syncBlockHeight, Nonce = nonce, PowHash = powHash, BlockHeight = blockHeight, GroupId = groupId, UptodateFunds = uptodateFunds, AssetCommitment = assetCommitment, KeyImage = keyImage, UniquencessProof = new RingSignature { C = c, R = r } }; IssueBlindedAssetSerializer serializer = new IssueBlindedAssetSerializer(); serializer.Initialize(issueBlindedAsset); serializer.SerializeBody(); _signingService.Sign(issueBlindedAsset); byte[] actualPacket = serializer.GetBytes(); Assert.Equal(expectedPacket, actualPacket); }