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()); }
/****************************************************************************/ 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); } }
public async Task Add(IKey key) { await _blobStore.Put(key.Id.ToId() + ".key", Convert.ToBase64String(key.ToArray())); }
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))); }