Ejemplo n.º 1
0
        /// <summary>
        /// Return a JSON representation for the given enumeration of blog postings.
        /// </summary>
        /// <param name="BlogPostings">An enumeration of blog postings.</param>
        /// <param name="Skip">The optional number of blog postings to skip.</param>
        /// <param name="Take">The optional number of blog postings to return.</param>
        /// <param name="Embedded">Whether this data is embedded into another data structure.</param>
        public static JArray ToJSON(this IEnumerable <BlogPosting> BlogPostings,
                                    UInt64?Skip           = null,
                                    UInt64?Take           = null,
                                    Boolean Embedded      = false,
                                    InfoStatus ExpandTags = InfoStatus.ShowIdOnly,
                                    BlogPostingToJSONDelegate BlogPostingToJSON = null,
                                    Boolean IncludeCryptoHash = true)


        => BlogPostings?.Any() != true

                   ? new JArray()

                   : new JArray(BlogPostings.
                                Where(dataSet => dataSet != null).
                                OrderBy(dataSet => dataSet.Id).
                                SkipTakeFilter(Skip, Take).
                                SafeSelect(BlogPosting => BlogPostingToJSON != null
                                                                    ? BlogPostingToJSON(BlogPosting,
                                                                                        Embedded,
                                                                                        ExpandTags,
                                                                                        IncludeCryptoHash)

                                                                    : BlogPosting.ToJSON(Embedded,
                                                                                         ExpandTags,
                                                                                         IncludeCryptoHash)));
Ejemplo n.º 2
0
            public BlogPosting Sign(ICipherParameters PrivateKey)
            {
                var posting = new BlogPosting(Id,
                                              Text,
                                              PublicationDate,
                                              GeoLocation,
                                              Tags,
                                              PrivacyLevel,
                                              IsHidden,
                                              Signatures,
                                              DataSource);

                var ctext = posting.ToJSON(Embedded:           false,
                                           ExpandTags:         InfoStatus.ShowIdOnly,
                                           IncludeCryptoHash:  false).ToString(Newtonsoft.Json.Formatting.None);

                var BlockSize = 32;

                var SHA256     = new SHA256Managed();
                var SHA256Hash = SHA256.ComputeHash(ctext.ToUTF8Bytes());
                var signer     = SignerUtilities.GetSigner("NONEwithECDSA");

                signer.Init(true, PrivateKey);
                signer.BlockUpdate(SHA256Hash, 0, BlockSize);

                var signature  = signer.GenerateSignature().ToHexString();
                var signatures = new List <BlogPostingSignature>(Signatures);

                signatures.Add(new BlogPostingSignature("json", "secp256k1", "DER+HEX", signature));

                return(new BlogPosting(Id,
                                       Text,
                                       PublicationDate,
                                       GeoLocation,
                                       Tags,
                                       PrivacyLevel,
                                       IsHidden,
                                       signatures,
                                       DataSource));
            }