/// <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)); }
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 } }); }
/// <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)) }); }