示例#1
0
        public static void RunBatchDeleteTest(IBatchingDatastore <byte[]> ds)
        {
            var keys = new List <DatastoreKey>();

            for (var i = 0; i < 20; i++)
            {
                var blk = new byte[16];
                TestContext.CurrentContext.Random.NextBytes(blk);

                var key = new DatastoreKey(Multibase.EncodeRaw(Multibase.Base32, blk.Take(8).ToArray()));
                keys.Add(key);

                ds.Put(key, blk);
            }

            var batch = ds.Batch();

            foreach (var key in keys)
            {
                batch.Delete(key);
            }

            batch.Commit();

            foreach (var key in keys)
            {
                Assert.Throws <KeyNotFoundException>(() => ds.Get(key));
            }
        }
示例#2
0
        public static void RunBatchTest(IBatchingDatastore <byte[]> ds)
        {
            var batch = ds.Batch();

            var blocks = new List <byte[]>();
            var keys   = new List <DatastoreKey>();

            for (var i = 0; i < 20; i++)
            {
                var blk = new byte[256 * 1024];
                TestContext.CurrentContext.Random.NextBytes(blk);
                blocks.Add(blk);

                var key = new DatastoreKey(Multibase.EncodeRaw(Multibase.Base32, blk.Take(8).ToArray()));
                keys.Add(key);

                batch.Put(key, blk);
            }

            foreach (var key in keys)
            {
                Assert.Throws <KeyNotFoundException>(() => ds.Get(key));
            }

            batch.Commit();

            for (var i = 0; i < keys.Count; i++)
            {
                var blk = ds.Get(keys[i]);

                Assert.That(blk, Is.EqualTo(blocks[i]));
            }
        }
示例#3
0
        public void TestRoundTrip(MultibaseEncoding encoding)
        {
            var rand = new Random(Environment.TickCount);
            var buf  = new byte[rand.Next(16, 256)];

            rand.NextBytes(buf);

            var encoded = Multibase.EncodeRaw(encoding, buf);
            var decoded = Multibase.DecodeRaw(encoding, encoded);

            Assert.Equal(decoded, buf);
        }
示例#4
0
文件: Tag.cs 项目: tabrath/cs-ipld
        public byte[] RawData()
        {
            using (var stream = new MemoryStream())
            {
                stream.Write($"tag {dataSize}\x00");
                stream.Write($"object {Multibase.EncodeRaw(Multibase.Base16, Object.ToSha())}\n");
                stream.Write($"type {Type}\n");
                stream.Write($"tag {Name}\n");

                if (Tagger != null)
                {
                    stream.Write($"tagger {Tagger}\n");
                }

                if (!string.IsNullOrEmpty(Message))
                {
                    stream.Write($"\n{Message}");
                }

                return(stream.ToArray());
            }
        }
示例#5
0
        private static void Process(Options options)
        {
            using (options.Source)
            {
                byte[] data = null;
                using (var mem = new MemoryStream())
                {
                    options.Source.CopyTo(mem);

                    data = mem.ToArray();
                }

                var mh = Multihash.Sum(options.Algorithm, data, options.Length);

                if (string.IsNullOrEmpty(options.Checksum))
                {
                    Console.WriteLine(mh.ToString(options.Encoding));
                    Environment.Exit(0);
                }

                var checksum = Multibase.DecodeRaw(options.Encoding, options.Checksum);
                if (!checksum.SequenceEqual(mh.Digest))
                {
                    if (!options.Quiet)
                    {
                        Console.WriteLine($"Digest mismatch, got: {Multibase.EncodeRaw(options.Encoding, mh.Digest)}, wanted: {Multibase.EncodeRaw(options.Encoding, checksum)}");
                    }

                    Environment.Exit(1);
                }

                if (!options.Quiet)
                {
                    Console.WriteLine("Checksum match");
                }
            }
        }
示例#6
0
 public string ToString(MultibaseEncoding encoding) => Multibase.EncodeRaw(encoding, _bytes.Value);
示例#7
0
 public static string ToHex(this byte[] bytes) => Multibase.EncodeRaw(Multibase.Base16, bytes);