/// <summary> /// Sign given hashes. Returns uni-signatures. /// </summary> public IEnumerable <IKsiSignature> Sign() { _canAddItems = false; if (_leafNodes.Count == 0) { return(new List <IKsiSignature>()); } TreeNode root = _treeBuilder.GetTreeRoot(); if (root.Left == null && root.Right == null) { Logger.Debug("Only one node in the tree. Signing the hash. Level: {0}; Hash: {1}", root.Level, root.Hash); return(new List <IKsiSignature>() { _ksiService.Sign(root.Hash, root.Level) }); } Logger.Debug("Signing root node hash. Level: {0}; Hash: {1}", root.Level, root.Hash); SignRequestResponsePayload signResponsePayload = _ksiService.GetSignResponsePayload(_ksiService.BeginSign(root.Hash, root.Level, null, null)); return(CreateUniSignatures(new KsiSignature(false, false, signResponsePayload.GetSignatureChildTags()))); }
/// <summary> /// End sub-service signing request. /// </summary> /// <param name="service">sub-service</param> /// <param name="asyncResult">async result</param> protected override object SubServiceEndRequest(IKsiService service, IAsyncResult asyncResult) { if (_returnResponsePayload) { return(service.GetSignResponsePayload(asyncResult)); } return(service.EndSign(asyncResult)); }