public void SignStaticMultiPayloadsResponseIncludingErrorPayloadTest() { Ksi ksi = GetStaticKsi(Resources.KsiService_AggregationResponsePdu_Multi_Payloads_Including_ErrorPayload, 2); KsiServiceException ex = Assert.Throws <KsiServiceException>(delegate { ksi.Sign(new DataHash(Base16.Decode("0111A700B0C8066C47ECBA05ED37BC14DCADB238552D86C659342D1D7E87B8772D"))); }); Assert.That(ex.Message.StartsWith("Server responded with error message. Status: 418464624128; Message: anon"), "Unexpected inner exception message: " + ex.Message); }
public void EndGetPublicationsFileInvalidAsyncResultTest() { KsiService service = GetKsiService(); KsiServiceException ex = Assert.Throws <KsiServiceException>(delegate { service.EndGetPublicationsFile(new TestAsyncResult()); }); Assert.That(ex.Message.StartsWith("Invalid asyncResult type:"), "Unexpected exception message: " + ex.Message); }
public void EndGetPublicationsFileWithoutPublicationsFileServiceProtocol() { KsiService service = new KsiService(null, null, null, null, null, null); KsiServiceException ex = Assert.Throws <KsiServiceException>(delegate { service.EndGetPublicationsFile(new TestAsyncResult()); }); Assert.That(ex.Message.StartsWith("Publications file service protocol is missing from service"), "Unexpected exception message: " + ex.Message); }
public void EndGetExtenderConfigWithoutExtendingServiceProtocol() { KsiService service = new KsiService(null, null, null, null, null, null); KsiServiceException ex = Assert.Throws <KsiServiceException>(delegate { service.EndGetExtenderConfig(new TestAsyncResult()); }); Assert.That(ex.Message.StartsWith("Extending service protocol is missing from service"), "Unexpected exception message: " + ex.Message); }
public void LegacySignStaticInvalidMacAlgorithmTest() { Ksi ksi = GetStaticKsi(Resources.KsiService_LegacyAggregationResponsePdu, 318748698, null, PduVersion.v1, HashAlgorithm.Sha2512); KsiServiceException ex = Assert.Throws <KsiServiceException>(delegate { ksi.Sign(new DataHash(Base16.Decode("0111A700B0C8066C47ECBA05ED37BC14DCADB238552D86C659342D1D7E87B8772D"))); }); Assert.That(ex.Message.StartsWith("HMAC algorithm mismatch."), "Unexpected exception message: " + ex.Message); }
public void SignStaticInvalidPduTypeTest() { Ksi ksi = GetStaticKsi(new byte[] { 1, 2, 3, 4, 5 }); KsiServiceException ex = Assert.Throws <KsiServiceException>(delegate { ksi.Sign(new DataHash(Base16.Decode("0111A700B0C8066C47ECBA05ED37BC14DCADB238552D86C659342D1D7E87B8772D"))); }); Assert.That(ex.Message.StartsWith("Unknown response PDU tag type"), "Unexpected exception message: " + ex.Message); }
public void BeginSignWithoutSigningServiceProtocol() { KsiService service = new KsiService(null, null, null, null, null, null); KsiServiceException ex = Assert.Throws <KsiServiceException>(delegate { service.BeginSign(new DataHash(Base16.Decode("0111A700B0C8066C47ECBA05ED37BC14DCADB238552D86C659342D1D7E87B8772D")), null, null); }); Assert.That(ex.Message.StartsWith("Signing service protocol is missing from service"), "Unexpected exception message: " + ex.Message); }
public void SignStaticInvalidPduContentTest() { Ksi ksi = GetStaticKsi(new byte[] { 0x82, 0x21, 0x08, 0xA7, 0x01 }); KsiServiceException ex = Assert.Throws <KsiServiceException>(delegate { ksi.Sign(new DataHash(Base16.Decode("0111A700B0C8066C47ECBA05ED37BC14DCADB238552D86C659342D1D7E87B8772D"))); }); Assert.That(ex.Message.StartsWith("Could not parse response message"), "Unexpected exception message: " + ex.Message); }
public void BeginGetAggregatorConfigWithoutSigningServiceProtocol() { KsiService service = new KsiService(null, null, null, null, null, null); KsiServiceException ex = Assert.Throws <KsiServiceException>(delegate { service.BeginGetAggregatorConfig(null, null); }); Assert.That(ex.Message.StartsWith("Signing service protocol is missing from service"), "Unexpected exception message: " + ex.Message); }
public void SignStaticInvalidMacTest() { Ksi ksi = GetStaticKsi(Resources.KsiService_AggregationResponsePdu_Invalid_Mac, 1584727637); KsiServiceException ex = Assert.Throws <KsiServiceException>(delegate { ksi.Sign(new DataHash(Base16.Decode("0111A700B0C8066C47ECBA05ED37BC14DCADB238552D86C659342D1D7E87B8772D"))); }); Assert.That(ex.Message.StartsWith("Invalid MAC in response PDU."), "Unexpected exception message: " + ex.Message); }
public void BeginExtendWithoutExtendingServiceProtocol() { KsiService service = new KsiService(null, null, null, null, null, null); KsiServiceException ex = Assert.Throws <KsiServiceException>(delegate { service.BeginExtend(1, null, null); }); Assert.That(ex.Message.StartsWith("Extending service protocol is missing from service"), "Unexpected exception message: " + ex.Message); }
public void EndSignInvalidAsyncResultTest() { IKsiService service = GetStaticKsiService(new byte[] { 0 }); KsiServiceException ex = Assert.Throws <KsiServiceException>(delegate { service.EndSign(new TestAsyncResult()); }); Assert.That(ex.Message.StartsWith("Invalid asyncResult type:"), "Unexpected exception message: " + ex.Message); }
public void LegacySignStaticInvalidRequestIdTest() { Ksi ksi = GetStaticKsi(Resources.KsiService_LegacyAggregationResponsePdu, 0, null, PduVersion.v1); KsiServiceException ex = Assert.Throws <KsiServiceException>(delegate { ksi.Sign(new DataHash(Base16.Decode("0111A700B0C8066C47ECBA05ED37BC14DCADB238552D86C659342D1D7E87B8772D"))); }); Assert.That(ex.Message.StartsWith("Unknown request ID:"), "Unexpected exception message: " + ex.Message); }
public void SignStaticWithDeprecatedInputHashAlgorithmTest() { Ksi ksi = GetStaticKsi(new byte[] { }); KsiServiceException ex = Assert.Throws <KsiServiceException>(delegate { ksi.Sign(new DataHash(Base16.Decode("0011A700B0C8066C47ECBA05ED37BC14DCADB23855"))); }); Assert.That(ex.Message.StartsWith("Hash algorithm SHA1 is deprecated since 2016-07-01 and can not be used for signing."), "Unexpected exception message: " + ex.Message); }
public void ExtendStaticResponseHasOnlyUnknownNonCriticalPayloadTest() { IKsiSignature signature = new KsiSignatureFactory().Create(File.ReadAllBytes(Path.Combine(TestSetup.LocalPath, Resources.KsiSignature_Ok))); Ksi ksi = GetStaticKsi(Resources.KsiService_ExtenderResponseUnkownNonCriticalPayload, 1234567890); KsiServiceException ex = Assert.Throws <KsiServiceException>(delegate { ksi.Extend(signature); }); Assert.That(ex.Message.StartsWith("Could not parse response message"), "Unexpected exception message: " + ex.Message); }
public void LegacyExtendStaticInvalidMacAlgorithmTest() { IKsiSignature signature = new KsiSignatureFactory().Create(File.ReadAllBytes(Path.Combine(TestSetup.LocalPath, Resources.KsiSignature_Ok))); Ksi ksi = GetStaticKsi(Resources.KsiService_LegacyExtendResponsePdu, 3491956840, null, PduVersion.v1, null, HashAlgorithm.Sha2512); KsiServiceException ex = Assert.Throws <KsiServiceException>(delegate { ksi.Extend(signature); }); Assert.That(ex.Message.StartsWith("HMAC algorithm mismatch."), "Unexpected exception message: " + ex.Message); }
public void ExtendStaticMultiPayloadsResponseIncludingErrorPayloadTest() { IKsiSignature signature = new KsiSignatureFactory().Create(File.ReadAllBytes(Path.Combine(TestSetup.LocalPath, Resources.KsiSignature_Ok))); Ksi ksi = GetStaticKsi(Resources.KsiService_ExtendResponsePdu_Multi_Payloads_Including_ErrorPayload); KsiServiceException ex = Assert.Throws <KsiServiceException>(delegate { ksi.Extend(signature); }); Assert.That(ex.Message.StartsWith("Server responded with error message. Status: 418464624128; Message: anon"), "Unexpected inner exception message: " + ex.Message); }
public void ExtenderConfigRequestInvalidStaticTest() { // pdu does not contain extender config payload Ksi ksi = GetStaticKsi(Resources.KsiService_ExtendResponsePdu_RequestId_1043101455); KsiServiceException ex = Assert.Throws <KsiServiceException>(delegate { ksi.GetExtenderConfig(); }); Assert.That(ex.Message.StartsWith("Invalid response PDU. Could not find a valid payload."), "Unexpected exception message: " + ex.Message); }
public void SignStaticResponseHasOnlyUnknownNonCriticalPayloadTest() { // Response has only unknown non-ciritcal payload. Ksi ksi = GetStaticKsi(Resources.KsiService_AggregationResponseUnknownNonCriticalPayload, 1234567890); KsiServiceException ex = Assert.Throws <KsiServiceException>(delegate { ksi.Sign(new DataHash(Base16.Decode("019f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08"))); }); Assert.That(ex.Message.StartsWith("Could not parse response message"), "Unexpected exception message: " + ex.Message); }
public void SignStaticResponseWithWrongRequestIdTest() { // Response has additional unknown non-ciritcal payload. Ksi ksi = GetStaticKsi(Resources.KsiService_AggregationResponsePdu_RequestId_1584727637, 1234567890); KsiServiceException ex = Assert.Throws <KsiServiceException>(delegate { ksi.Sign(new DataHash(Base16.Decode("019f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08"))); }); Assert.That(ex.Message.StartsWith("Invalid response PDU. Could not find a valid payload."), "Unexpected exception message: " + ex.Message); }
public void LegacyExtendStaticWithNonZeroPayloadStatusTest() { IKsiSignature signature = new KsiSignatureFactory().Create(File.ReadAllBytes(Path.Combine(TestSetup.LocalPath, Resources.KsiSignature_Ok))); Ksi ksi = GetStaticKsi(Resources.KsiService_LegacyExtendResponsePdu_NonZeroPayloadStatus, 768278381, null, PduVersion.v1); KsiServiceException ex = Assert.Throws <KsiServiceException>(delegate { ksi.Extend(signature); }); Assert.That(ex.Message.StartsWith("Server responded with error message. Status: 17; Message: No error."), "Unexpected exception message: " + ex.Message); }
public void LegacyExtendStaticInvalidRequestIdTest() { IKsiSignature signature = new KsiSignatureFactory().Create(File.ReadAllBytes(Path.Combine(TestSetup.LocalPath, Resources.KsiSignature_Ok))); Ksi ksi = GetStaticKsi(Resources.KsiService_LegacyExtendResponsePdu, 0, null, PduVersion.v1); KsiServiceException ex = Assert.Throws <KsiServiceException>(delegate { ksi.Extend(signature); }); Assert.That(ex.Message.StartsWith("Unknown request ID:"), "Unexpected exception message: " + ex.Message); }
public void BeginGetExtenderConfigWithoutExtendingServiceCredentials() { TestKsiServiceProtocol protocol = new TestKsiServiceProtocol(); KsiService service = new KsiService(null, null, protocol, null, null, null); KsiServiceException ex = Assert.Throws <KsiServiceException>(delegate { service.BeginGetExtenderConfig(null, null); }); Assert.That(ex.Message.StartsWith("Extending service credentials are missing."), "Unexpected exception message: " + ex.Message); }
public void SignStaticErrorPayloadTest() { Ksi ksi = GetStaticKsi(Resources.KsiService_AggregationResponsePdu_ErrorPayload, 2); KsiServiceException ex = Assert.Throws <KsiServiceException>(delegate { ksi.Sign(new DataHash(Base16.Decode("0111A700B0C8066C47ECBA05ED37BC14DCADB238552D86C659342D1D7E87B8772D"))); }); Assert.That(ex.Message.StartsWith("Server responded with error message. Status: 258; Message: The request could not be authenticated."), "Unexpected exception message: " + ex.Message); }
public void ExtendStaticResponseWithWrongRequestIdTest() { IKsiSignature signature = new KsiSignatureFactory().Create(File.ReadAllBytes(Path.Combine(TestSetup.LocalPath, Resources.KsiSignature_Ok))); Ksi ksi = GetStaticKsi(Resources.KsiService_ExtendResponsePdu_RequestId_1043101455, 1234567890); KsiServiceException ex = Assert.Throws <KsiServiceException>(delegate { ksi.Extend(signature); }); Assert.That(ex.Message.StartsWith("Invalid response PDU. Could not find a valid payload."), "Unexpected exception message: " + ex.Message); }
public void ExtendStaticErrorPayloadTest() { IKsiSignature signature = new KsiSignatureFactory().Create(File.ReadAllBytes(Path.Combine(TestSetup.LocalPath, Resources.KsiSignature_Ok))); Ksi ksi = GetStaticKsi(Resources.KsiService_ExtenderResponsePdu_ErrorPayload); KsiServiceException ex = Assert.Throws <KsiServiceException>(delegate { ksi.Extend(signature); }); Assert.That(ex.Message.StartsWith("Server responded with error message. Status: 258; Message: The request could not be authenticated."), "Unexpected exception message: " + ex.Message); }
public void EndSignWithoutSigningServiceProtocol() { IKsiService serviceBegin = GetStaticKsiService(File.ReadAllBytes(Path.Combine(TestSetup.LocalPath, Resources.KsiService_AggregationResponsePdu_RequestId_1584727637)), 1584727637); IAsyncResult asyncResult = serviceBegin.BeginSign(new DataHash(Base16.Decode("0111A700B0C8066C47ECBA05ED37BC14DCADB238552D86C659342D1D7E87B8772D")), null, null); KsiService serviceEnd = new KsiService(null, null, null, null, null, null); KsiServiceException ex = Assert.Throws <KsiServiceException>(delegate { serviceEnd.EndSign(asyncResult); }); Assert.That(ex.Message.StartsWith("Signing service protocol is missing from service"), "Unexpected exception message: " + ex.Message); }
/// <summary> /// Parse KSI service response. /// </summary> /// <param name="data">Response byte array</param> /// <param name="requestId">Request ID</param> /// <returns></returns> public PduPayload Parse(byte[] data, ulong?requestId = null) { if (data == null) { throw new ArgumentNullException(nameof(data)); } RawTag rawTag = null; Pdu pdu = null; LegacyPdu legacyPdu = null; try { using (TlvReader reader = new TlvReader(new MemoryStream(data))) { rawTag = new RawTag(reader.ReadTag()); } if (rawTag.Type == GetPduTagType(false)) { if (_pduVersion == PduVersion.v1) { throw new KsiServiceUnexpectedResponseFormatException("Received PDU v2 response to PDU v1 request. Configure the SDK to use PDU v2 format."); } pdu = GetPdu(rawTag); } else if (rawTag.Type == GetPduTagType(true)) { if (_pduVersion == PduVersion.v2) { if (!IsLegacyRequestSupported()) { throw new KsiServiceUnexpectedResponseFormatException("Received PDU v1 response to PDU v2 request."); } throw new KsiServiceUnexpectedResponseFormatException("Received PDU v1 response to PDU v2 request. Configure the SDK to use PDU v1 format."); } legacyPdu = GetLegacyPdu(rawTag); } else { throw new KsiServiceException("Unknown response PDU tag type: " + rawTag.Type.ToString("X")); } if (legacyPdu != null) { return(GetLegacyResponsePayload(legacyPdu, requestId)); } else { CheckAggregatorConfigChange(pdu); CheckExtenderConfigChange(pdu); return(GetResponsePayload(data, pdu, requestId)); } } catch (TlvException e) { KsiException ksiException = new KsiServiceException("Could not parse response message: " + Base16.Encode(data), e); if (requestId.HasValue) { Logger.Warn("Request failed (request id: {0}): {1}", requestId, ksiException); } else { Logger.Warn("Request failed: {0}", ksiException); } throw ksiException; } catch (KsiException e) { if (requestId.HasValue) { Logger.Warn("Request failed (request id: {0}){1}{2}{1}PDU:{1}{3}", requestId, Environment.NewLine, e, legacyPdu ?? pdu ?? (ITlvTag)rawTag); } else { Logger.Warn("Request failed.{0}{1}{0}PDU:{0}{2}", Environment.NewLine, e, legacyPdu ?? pdu ?? (ITlvTag)rawTag); } throw; } }