Exemple #1
0
        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);
                }
            }
        }
Exemple #2
0
        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);
                    }
                }
        }
Exemple #3
0
        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);
        }
Exemple #4
0
    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);
    }
Exemple #5
0
 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);
 }
Exemple #6
0
 /// <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);
Exemple #7
0
 /// <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);
 }