/// <summary> /// End create signature (async). /// </summary> /// <param name="asyncResult">async result</param> /// <returns>KSI signature</returns> public IKsiSignature EndSign(IAsyncResult asyncResult) { KsiServiceAsyncResult serviceAsyncResult = GetKsiServiceAsyncResult(asyncResult); SignRequestResponsePayload responsePayload = GetSignResponsePayload(serviceAsyncResult); LegacyAggregationResponsePayload legacyPayload = responsePayload as LegacyAggregationResponsePayload; AggregationResponsePayload payload = responsePayload as AggregationResponsePayload; IKsiSignature signature = legacyPayload != null ? _ksiSignatureFactory.Create(legacyPayload, serviceAsyncResult.DocumentHash, serviceAsyncResult.Level) : _ksiSignatureFactory.Create(payload, serviceAsyncResult.DocumentHash, serviceAsyncResult.Level); Logger.Debug("End sign successful (request id: {0}){1}{2}", serviceAsyncResult.RequestId, Environment.NewLine, signature); return(signature); }
/// <summary> /// Parse child tag /// </summary> protected override ITlvTag ParseChild(ITlvTag childTag) { switch (childTag.Type) { case Constants.AggregationResponsePayload.TagType: AggregationResponsePayload aggregationResponsePayload = childTag as AggregationResponsePayload ?? new AggregationResponsePayload(childTag); Payloads.Add(aggregationResponsePayload); return aggregationResponsePayload; case Constants.ErrorPayload.TagType: return ErrorPayload = childTag as AggregationErrorPayload ?? new AggregationErrorPayload(childTag); case Constants.AggregatorConfigResponsePayload.TagType: AggregatorConfigResponsePayload aggregatorConfigResponsePayload = childTag as AggregatorConfigResponsePayload ?? new AggregatorConfigResponsePayload(childTag); Payloads.Add(aggregatorConfigResponsePayload); return aggregatorConfigResponsePayload; // not implemented yet, so just return the tag case Constants.AggregationAcknowledgmentResponsePayload.TagType: return childTag; default: return base.ParseChild(childTag); } }