private static AS4Message SignedNRReceipt(X509Certificate2 cert, AS4Message signedUserMessage, Func <int, int> selection) { IEnumerable <Reference> hashes = signedUserMessage .SecurityHeader .GetReferences() .Select(r => { r.DigestValue = r.DigestValue.Select(v => (byte)selection(v)).ToArray(); return(Reference.CreateFromReferenceElement(r)); }); AS4Message receipt = AS4Message.Create( new Receipt( messageId: $"receipt-{Guid.NewGuid()}", refToMessageId: signedUserMessage.GetPrimaryMessageId(), nonRepudiation: new NonRepudiationInformation(hashes))); return(AS4MessageUtils.SignWithCertificate(receipt, cert)); }