/// <summary>
        /// Retrieve a list of Sealed Messages.
        /// </summary>
        /// <param name="retrieveRequest">The parameters for the retrieve operation.</param>
        /// <param name="endpointUrl">The endpoint URL for the SMR service.</param>
        /// <returns>A list of Sealed Messages.</returns>
        public SealedMessageType[] Retrieve(retrieve retrieveRequest, Uri endpointUrl)
        {
            Validation.ValidateArgumentRequired("retrieveRequest", retrieveRequest);
            Validation.ValidateArgumentRequired("endpointUrl", endpointUrl);

            Validation.ValidateArgumentRequired("retrieveRequest.receiverOrganisation", retrieveRequest.receiverOrganisation);
            Validation.ValidateArgumentRequired("retrieveRequest.invocationId", retrieveRequest.invocationId);

            if (smrClient is Nehta.SMD2010.SMR.SealedMessageRetrievalClient)
            {
                Nehta.SMD2010.SMR.SealedMessageRetrievalClient client = (Nehta.SMD2010.SMR.SealedMessageRetrievalClient)smrClient;
                client.Endpoint.Address = new EndpointAddress(endpointUrl);
            }

            retrieveRequest request = new retrieveRequest();

            request.retrieve = retrieveRequest;

            retrieveResponse response = smrClient.retrieve(request);

            if (response != null)
            {
                return(response.retrieveResponse1);
            }
            else
            {
                throw new ApplicationException(Properties.Resources.UnexpectedServiceResponse);
            }
        }
        /// <summary>
        /// Retrieve a list of Transport Responses.
        /// </summary>
        /// <param name="retrieveRequest">The parameters for the retrieve operation.</param>
        /// <param name="endpointUrl">The endpoint URL for the TRR service.</param>
        /// <returns>A list of available responses.</returns>
        public TransportResponseListType Retrieve(retrieve retrieveRequest, Uri endpointUrl)
        {
            Validation.ValidateArgumentRequired("retrieveRequest", retrieveRequest);
            Validation.ValidateArgumentRequired("endpointUrl", endpointUrl);

            Validation.ValidateArgumentRequired("retrieveRequest.organisation", retrieveRequest.organisation);

            if (trrClient is Nehta.SMD2010.TRR.TransportResponseRetrievalClient)
            {
                Nehta.SMD2010.TRR.TransportResponseRetrievalClient client = (Nehta.SMD2010.TRR.TransportResponseRetrievalClient)trrClient;
                client.Endpoint.Address = new EndpointAddress(endpointUrl);
            }

            retrieveRequest request = new retrieveRequest();

            request.retrieve = retrieveRequest;

            retrieveResponse1 response = trrClient.retrieve(request);

            if (response != null && response.retrieveResponse != null)
            {
                return(response.retrieveResponse.list);
            }
            else
            {
                throw new ApplicationException(Properties.Resources.UnexpectedServiceResponse);
            }
        }
예제 #3
0
        public void Sample()
        {
            // TLS certificate used to authenticate the client to the TRR service during TLS connection.
            X509Certificate2 tlsCert = X509CertificateUtil.GetCertificate("TlsCertificateSerialNumber", X509FindType.FindBySerialNumber, StoreName.My, StoreLocation.CurrentUser, true);

            // Instantiate client
            TransportResponseRetrievalClient client = new TransportResponseRetrievalClient(tlsCert);

            // ------------------------------------------------------------------------------
            // Retrieve
            // ------------------------------------------------------------------------------

            // Set up request
            retrieve retrieveRequest = new retrieve()
            {
                allAvailable = true,
                limit        = 0,
                organisation = HIQualifiers.HPIOQualifier + "16 digit HPIO of receiver organisation"
            };

            // Invoke the Retrieve operation
            TransportResponseListType responseList = client.Retrieve(retrieveRequest, new Uri("https://TRREndpointUri"));

            // ------------------------------------------------------------------------------
            // Remove
            // ------------------------------------------------------------------------------

            // Build list of retrieved transport response IDs
            string[] responseIds = responseList.response.Select(r => r.metadata.responseId).ToArray();

            // Set up request
            remove removeRequest = new remove()
            {
                force        = true,
                organisation = HIQualifiers.HPIOQualifier + "16 digit HPIO of receiver organisation",
                responseId   = responseIds
            };

            // Invoke the Remove operation
            RemoveResultType[] removeResults = client.Remove(removeRequest, new Uri("https://TRREndpointUri"));
        }
        public void Sample()
        {
            // TLS certificate used to authenticate the client to the SMR service during TLS connection.
            X509Certificate2 tlsCert = X509CertificateUtil.GetCertificate("TlsCertificateSerialNumber", X509FindType.FindBySerialNumber, StoreName.My, StoreLocation.CurrentUser, true);

            // Certificate used to sign the payload.
            X509Certificate2 signingCert = X509CertificateUtil.GetCertificate("SigningCertificateSerialNumber", X509FindType.FindBySerialNumber, StoreName.My, StoreLocation.CurrentUser, true);

            // Certificate used to encrypt the payload.
            X509Certificate2 payloadDecryptionCert = X509CertificateUtil.GetCertificate("DecryptionCertificateSerialNumber", X509FindType.FindBySerialNumber, StoreName.My, StoreLocation.CurrentUser, true);

            // Instantiate client
            SealedMessageRetrievalClient client = new SealedMessageRetrievalClient(tlsCert);

            // ------------------------------------------------------------------------------
            // List
            // ------------------------------------------------------------------------------

            // Set up request
            list listRequest = new list()
            {
                allAvailable         = true,
                limit                = 0,
                receiverOrganisation = HIQualifiers.HPIOQualifier + "16 digit HPIO of receiver organisation"
            };

            // Invoke the List operation
            MessageListType messageList = client.List(listRequest, new Uri("https://SMRServiceEndpointUri"));

            // ------------------------------------------------------------------------------
            // Retrieve
            // ------------------------------------------------------------------------------

            // Get list of invocation IDs obtained from List operation
            string[] invocationIds = messageList.retrievalRecord.Select(r => r.metadata.invocationId).ToArray();

            // Set up request
            retrieve retrieveRequest = new retrieve()
            {
                invocationId         = invocationIds,
                receiverOrganisation = HIQualifiers.HPIOQualifier + "16 digit HPIO of receiver organisation"
            };

            // Invoke the Retrieve operation
            SealedMessageType[] sealedMessages = client.Retrieve(retrieveRequest, new Uri("https://SMRServiceEndpointUri"));

            // ------------------------------------------------------------------------------
            // Obtaining the payload from the Sealed Messages
            // ------------------------------------------------------------------------------

            // Obtain the first Sealed Message to decrypt
            SealedMessageType sealedMessage = sealedMessages[0];

            // Serialize the encrypted payload
            XmlDocument encryptedPayload = sealedMessage.encryptedPayload.SerializeToXml("encryptedPayload");

            // Decrypt the payload, obtaining the signed payload
            XmlDocument decryptedPayload = encryptedPayload.XspDecrypt(payloadDecryptionCert);

            // Obtain the original payload from the signed payload
            XmlDocument originalPayload = decryptedPayload.XspGetPayloadFromSignedDocument();
        }