public override byte[] Protect(ArraySegment <byte> originalMessage) { originalMessage.Array.NonNull(nameof(originalMessage)); if (originalMessage.Count < 1) { throw new SecurityException(StringConsts.ARGUMENT_ERROR + "{0}.Protect(originalMessage.len < 1)".Args(GetType().Name)); } var iv = ComponentDirector.GenerateRandomBytes(IV_LEN); var keys = getKeys(iv); var hmac = getHMAC(keys.hmac, new ArraySegment <byte>(iv), originalMessage); using (var aes = makeAES()) { using (var encryptor = aes.CreateEncryptor(keys.aes, iv)) { var encrypted = encryptor.TransformFinalBlock(originalMessage.Array, originalMessage.Offset, originalMessage.Count); var result = new byte[HDR_LEN + encrypted.Length]; Array.Copy(iv, 0, result, 0, IV_LEN); Array.Copy(hmac, 0, result, IV_LEN, HMAC_LEN); Array.Copy(encrypted, 0, result, HDR_LEN, encrypted.Length); return(result); } } }
protected internal override void Write(Datum aggregatedDatum, object batchContext, object typeContext) { var batchDict = batchContext as Dictionary <string, object>; var typeDict = typeContext as Dictionary <string, object>; lock (m_Providers) foreach (var provider in m_Providers) { try { object providerBatchContext = null; if (batchDict != null) { batchDict.TryGetValue(provider.Name, out providerBatchContext); } object providerTypeContext = null; if (typeDict != null) { typeDict.TryGetValue(provider.Name, out providerTypeContext); } provider.Write(aggregatedDatum, providerBatchContext, providerTypeContext); } catch (Exception error) { ComponentDirector.Log(MessageType.Error, GetType().Name + ".Write", error.ToMessageWithType(), error); } } }
private CRUDQueryHandler searchForScript(string name) { var asm = Assembly.Load(m_ScriptAssembly); var asmname = asm.FullName; var ic = asmname.IndexOf(','); if (ic > 0) { asmname = asmname.Substring(0, ic); } var resources = asm.GetManifestResourceNames(); var resName = name + ComponentDirector.ScriptFileSuffix; var res = resources.FirstOrDefault(r => r.EqualsIgnoreCase(resName) || r.EqualsIgnoreCase(asmname + "." + resName)); if (res != null) { using (var stream = asm.GetManifestResourceStream(res)) using (var reader = new StreamReader(stream)) { var script = reader.ReadToEnd(); var qsource = new QuerySource(name, script); return(ComponentDirector.MakeScriptQueryHandler(qsource)); } } return(null); }
public async Task <GdidBlock> AllocateBlockAsync(string scopeName, string sequenceName, int blockSize, ulong?vicinity = 1152921504606846975) { var result = await ComponentDirector.CallServiceAsync(ESConsts.SVC_PATH_GDID, ++m_Shard, async (client) => { var json = await client.PostAndGetJsonMapAsync("", new { scopeName, sequenceName, blockSize, vicinity }); var block = new GdidBlock(); JsonReader.ToDoc(block, json); return(block); } ); return(result); }
internal void log(MessageType type, string from, string text, Exception error = null, Guid?related = null) { ComponentDirector.WriteLog(type, "ManagedApp({0}).{1}".Args(Name, from), text, error, related); }
/// <summary> /// Gets <see cref="IShard"/> for the shard of this set routed to /// using the specified <see cref="ShardKey"/> /// </summary> public IShard GetShardFor(ShardKey key) => ComponentDirector.GetShardFor(this, key);
/// <summary> /// Handles processing exception - this implementation uses server-wide behavior. /// All parameters except ERROR can be null - which indicates error that happened during WorkContext dispose /// </summary> public virtual void HandleException(WorkContext work, WorkFilter filter, WorkHandler handler, Exception error) { ComponentDirector.HandleException(work, filter, handler, error); }