/// <summary>
        /// Creates a new token member.
        /// </summary>
        /// <param name="memberId">the member ID</param>
        /// <param name="operations">the operations to apply</param>
        /// <param name="metadata">the metadata of the operations</param>
        /// <param name="signer">the signer used to sign the request</param>
        /// <returns>the created member</returns>
        public Task <ProtoMember> CreateMember(
            string memberId,
            IList <MemberOperation> operations,
            IList <MemberOperationMetadata> metadata,
            ISigner signer)
        {
            var update = new MemberUpdate
            {
                MemberId   = memberId,
                Operations = { operations }
            };
            var request = new UpdateMemberRequest
            {
                Update          = update,
                UpdateSignature = new Signature
                {
                    MemberId   = memberId,
                    KeyId      = signer.GetKeyId(),
                    Signature_ = signer.Sign(update)
                },
                Metadata = { metadata }
            };

            return(gateway.UpdateMemberAsync(request)
                   .ToTask(response => response.Member));
        }
Ejemplo n.º 2
0
        public static UpdateMemberRequest ToUpdateMemberRequest(
            ProtoMember member,
            IList <MemberOperation> operations,
            ISigner signer,
            IList <MemberOperationMetadata> metadata)
        {
            var update = new MemberUpdate
            {
                MemberId   = member.Id,
                PrevHash   = member.LastHash,
                Operations = { operations }
            };

            return(new UpdateMemberRequest
            {
                Update = update,
                UpdateSignature = new Signature
                {
                    MemberId = member.Id,
                    KeyId = signer.GetKeyId(),
                    Signature_ = signer.Sign(update)
                },
                Metadata = { metadata }
            });
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Signs a token payload.
        /// </summary>
        /// <param name="payload"></param>
        /// <param name="keyLevel"></param>
        /// <returns></returns>
        public Signature SignTokenPayload(TokenPayload payload, Level keyLevel)
        {
            ISigner signer = cryptoEngine.CreateSigner(keyLevel);

            return(new Signature
            {
                KeyId = signer.GetKeyId(),
                MemberId = MemberId,
                Signature_ = signer.Sign(Stringify(payload, TokenAction.Endorsed))
            });
        }