Ejemplo n.º 1
0
        public async Task <IEnumerable <BlobId> > SplitData(int parts, Stream stream)
        {
            Console.WriteLine($"Splitting data into {parts} parts", Color.GreenYellow);

            var partSize    = (stream.Length + (parts - 1)) / parts;
            var blobStreams = SplitStream(stream, partSize);

            return(blobStreams.Select(blobStream => _blobStore.Put(blobStream)).ToList());
        }
Ejemplo n.º 2
0
        /****************************************************************************/
        public async Task Add(IKey key)
        {
            var list = new List <string>();

            list.Add(key.Policy.Padding);
            list.Add(key.Policy.Mode);
            list.Add(key.Policy.Algorithm);

            var policyData = string.Join(";", list);

            byte[] output = null;

            using (var memStream = new MemoryStream())
            {
                using (var writer = new BinaryWriter(memStream))
                {
                    writer.Write(key.Policy.KeySize);
                    writer.Write(key.Policy.BlockSize.Value);
                    writer.Write(key.ToArray());
                    writer.Write(key.Policy.Expires.Ticks);
                    writer.Write(policyData);

                    writer.Flush();
                }

                output = memStream.ToArray();
            }

            // Encrypt the entire package
            var cipherData = await _keyEncryptor.Encrypt(output);

            Array.Clear(output, 0, output.Length);

            try
            {
                // Store package
                await _blobStore.Put(key.Id.ToId(), Convert.ToBase64String(cipherData));
            }
            finally
            {
                Array.Clear(cipherData, 0, cipherData.Length);
            }
        }
Ejemplo n.º 3
0
 public async Task Add(IKey key)
 {
     await _blobStore.Put(key.Id.ToId() + ".key", Convert.ToBase64String(key.ToArray()));
 }
Ejemplo n.º 4
0
 public Response Apply(RecordExpenditure req)
 {
     _blobStore.Put($"{Clock.UnixUtcNow.Millis}-{req.DocumentName}", req.DocumentBytes());
     return(_accounts.Apply(new TransactionRequest(AccountId, $"Expenditure - {req.Description}", -req.Amount)));
 }