diff --git a/src/DotNetLightning.Core/DotNetLightning.Core.fsproj b/src/DotNetLightning.Core/DotNetLightning.Core.fsproj
index 971426728..a4b75c443 100644
--- a/src/DotNetLightning.Core/DotNetLightning.Core.fsproj
+++ b/src/DotNetLightning.Core/DotNetLightning.Core.fsproj
@@ -22,7 +22,7 @@
-
+
@@ -75,6 +75,7 @@
+
diff --git a/src/DotNetLightning.Core/Payment/LSAT/CryptoAlgorithm.fs b/src/DotNetLightning.Core/Payment/LSAT/CryptoAlgorithm.fs
new file mode 100644
index 000000000..ccae7ba93
--- /dev/null
+++ b/src/DotNetLightning.Core/Payment/LSAT/CryptoAlgorithm.fs
@@ -0,0 +1,77 @@
+namespace DotNetLightning.Payment.LSAT
+
+open Macaroons
+open System
+open System.Security.Cryptography
+open NBitcoin
+
+#if BouncyCastle
+type BouncyCastleCryptoAlgorithm() =
+ inherit CryptoAlgorithm()
+ override this.Encrypt(key, plaintext) =
+ raise <| NotSupportedException("Encryption/Decryption for third party caveats are not supported yet for pure C# build.")
+
+ override this.Decrypt(key, cipherText) =
+ raise <| NotSupportedException("Encryption/Decryption for third party caveats are not supported yet for pure C# build.")
+
+module CryptoAlgorithm =
+ /// Run this function if function if you want to use third party caveat feature. Otherwise it is not necessary.
+ /// If you try to add/verify 3rd party caveats without doing this, it will throw Exception.
+ []
+ let initMacaroon() =
+ Macaroon.Crypto <- (BouncyCastleCryptoAlgorithm() :> CryptoAlgorithm)
+
+#else
+type SecretBox = NSec.Experimental.Sodium.NaclXSalsa20Poly1305
+type SecretBoxCryptoAlgorithm(?useRandomNonce: bool) =
+ inherit CryptoAlgorithm()
+ let useRandomNonce = Option.defaultValue false useRandomNonce
+
+ []
+ let SECRET_BOX_NONCE_BYTES = 24
+
+ let secretBox = SecretBox()
+
+ let getNonce () =
+ let mutable arr = Array.zeroCreate SECRET_BOX_NONCE_BYTES
+ if useRandomNonce then
+ arr <- RandomUtils.GetBytes(SECRET_BOX_NONCE_BYTES)
+ arr
+
+ member val UseRandomNonce = useRandomNonce with get, set
+
+ override this.Encrypt(key, plainText) =
+ let n = getNonce()
+ let nonce = NSec.Cryptography.Nonce(ReadOnlySpan(n), 0)
+ use encryptionKey =
+ let keySpan = ReadOnlySpan(key)
+ let blobF = NSec.Cryptography.KeyBlobFormat.RawSymmetricKey;
+ NSec.Cryptography.Key.Import(secretBox, keySpan, blobF)
+ let macAndCipherText = secretBox.Encrypt(encryptionKey, &nonce, ReadOnlySpan(plainText));
+ let result = Array.zeroCreate (n.Length + macAndCipherText.Length)
+ Array.blit n 0 result 0 SECRET_BOX_NONCE_BYTES
+ Array.blit macAndCipherText 0 result n.Length macAndCipherText.Length
+ result
+
+ override this.Decrypt(key, nonceAndMacAndCipherText) =
+ let nonceBytes = Array.zeroCreate(SECRET_BOX_NONCE_BYTES)
+ Buffer.BlockCopy(nonceAndMacAndCipherText, 0, nonceBytes, 0,nonceBytes.Length);
+ let nonce = NSec.Cryptography.Nonce(ReadOnlySpan(nonceBytes), 0);
+ let macAndCipherText = Array.zeroCreate(nonceAndMacAndCipherText.Length - nonceBytes.Length)
+ Buffer.BlockCopy(nonceAndMacAndCipherText, nonceBytes.Length, macAndCipherText, 0, macAndCipherText.Length);
+ let keySpan = new ReadOnlySpan(key);
+ let blobF = NSec.Cryptography.KeyBlobFormat.RawSymmetricKey;
+ use encryptionKey = NSec.Cryptography.Key.Import(secretBox, keySpan, blobF);
+ match (secretBox.Decrypt(encryptionKey, &nonce, ReadOnlySpan(macAndCipherText))) with
+ | true, plaintext -> plaintext
+ | false, _ ->
+ raise <| CryptographicException("Failed to decode data")
+
+module CryptoAlgorithm =
+ []
+ /// Run this function if function if you want to use third party caveat feature. Otherwise it is not necessary.
+ /// If you try to add/verify 3rd party caveats without doing this, it will throw Exception.
+ let initMacaroon() =
+ Macaroon.Crypto <- (SecretBoxCryptoAlgorithm() :> CryptoAlgorithm)
+
+#endif
diff --git a/src/DotNetLightning.Core/Payment/LSAT/MacaroonIdentifier.fs b/src/DotNetLightning.Core/Payment/LSAT/MacaroonIdentifier.fs
index 74c9c8393..b4218a1b0 100644
--- a/src/DotNetLightning.Core/Payment/LSAT/MacaroonIdentifier.fs
+++ b/src/DotNetLightning.Core/Payment/LSAT/MacaroonIdentifier.fs
@@ -1,14 +1,10 @@
namespace DotNetLightning.Payment.LSAT
+
open System
-open System.Net
-open System.Net.Http.Headers
open DotNetLightning.Utils.Primitives
open NBitcoin
open DotNetLightning.Core.Utils.Extensions
open DotNetLightning.Utils
-open Macaroons
-open NSec.Cryptography
-open ResultUtils
open NBitcoin.Crypto
module private Helpers =
diff --git a/src/Macaroons/DummyCryptoAlgorithm.cs b/src/Macaroons/DummyCryptoAlgorithm.cs
new file mode 100644
index 000000000..2f6b2b02d
--- /dev/null
+++ b/src/Macaroons/DummyCryptoAlgorithm.cs
@@ -0,0 +1,15 @@
+namespace Macaroons
+{
+ public class DummyCryptoAlgorithm : CryptoAlgorithm
+ {
+ public override byte[] Encrypt(byte[] key, byte[] plainText)
+ {
+ throw new System.NotImplementedException();
+ }
+
+ public override byte[] Decrypt(byte[] key, byte[] cipherText)
+ {
+ throw new System.NotImplementedException();
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/Macaroons/Macaroon.cs b/src/Macaroons/Macaroon.cs
index 4c9137cc9..4fdbd79b4 100644
--- a/src/Macaroons/Macaroon.cs
+++ b/src/Macaroons/Macaroon.cs
@@ -12,7 +12,7 @@ namespace Macaroons
public class Macaroon
{
- public static CryptoAlgorithm Crypto = new SecretBoxCryptoAlgorithm();
+ public static CryptoAlgorithm Crypto = new DummyCryptoAlgorithm();
public const int MACAROON_HASH_BYTES = 32;
public const int MACAROON_MAX_STRLEN = 32768;
diff --git a/src/Macaroons/Macaroons.csproj b/src/Macaroons/Macaroons.csproj
index bc49c25ba..13fcfed7b 100644
--- a/src/Macaroons/Macaroons.csproj
+++ b/src/Macaroons/Macaroons.csproj
@@ -1,14 +1,9 @@
-
-
-
-
-
netstandard2.1;netstandard2.0
-
+
diff --git a/src/Macaroons/SecretBoxCryptoAlgorithm.cs b/src/Macaroons/SecretBoxCryptoAlgorithm.cs
deleted file mode 100644
index a19226a96..000000000
--- a/src/Macaroons/SecretBoxCryptoAlgorithm.cs
+++ /dev/null
@@ -1,77 +0,0 @@
-using System;
-using System.Security.Cryptography;
-using NBitcoin;
-using NSec.Experimental.Sodium;
-using SecretBox = NSec.Experimental.Sodium.NaclXSalsa20Poly1305;
-
-namespace Macaroons
-{
- public class SecretBoxCryptoAlgorithm : CryptoAlgorithm
- {
- protected bool UseRandomNonce { get; } = false;
- public const int SECRET_BOX_NONCE_BYTES = 24;
-
- public SecretBoxCryptoAlgorithm() {}
- public SecretBoxCryptoAlgorithm(bool useRandomNonce)
- {
- UseRandomNonce = useRandomNonce;
- }
-
- private NaclSecretBoxAlgorithm SecretBox = new SecretBox();
-
- private byte[] GetNonce()
- {
- byte[] arr = new byte[SECRET_BOX_NONCE_BYTES];
- // We usually should use randomize nonce. But because original C implementation and its tests
- // assumes non-random nonce, so made it configurable like this.
- if (UseRandomNonce)
- {
- arr = RandomUtils.GetBytes(SECRET_BOX_NONCE_BYTES);
- }
- return arr;
- }
- public byte[] EncryptWithAD(byte[] key, ReadOnlySpan plainText)
- {
- var nonceBytes = GetNonce();
- var nonce = new NSec.Cryptography.Nonce(nonceBytes, 0);
- var keySpan = new ReadOnlySpan(key);
- var blobF = NSec.Cryptography.KeyBlobFormat.RawSymmetricKey;
- using var encryptionKey = NSec.Cryptography.Key.Import(SecretBox, keySpan, blobF);
- var macAndCipherText = SecretBox.Encrypt(encryptionKey, in nonce, plainText);
-
- var result = new byte[nonceBytes.Length + macAndCipherText.Length];
- Buffer.BlockCopy(nonceBytes, 0, result, 0, SECRET_BOX_NONCE_BYTES);
- Buffer.BlockCopy(macAndCipherText, 0, result, nonceBytes.Length, macAndCipherText.Length);
- return result;
- }
-
- public byte[] DecryptWithAD(byte[] key, byte[] nonceAndMacAndCipherText)
- {
- var nonceBytes = new byte[SECRET_BOX_NONCE_BYTES];
- Buffer.BlockCopy(nonceAndMacAndCipherText, 0, nonceBytes, 0,nonceBytes.Length);
- var nonce = new NSec.Cryptography.Nonce(nonceBytes, 0);
-
- var macAndCipherText = new byte[nonceAndMacAndCipherText.Length - nonceBytes.Length];
- Buffer.BlockCopy(nonceAndMacAndCipherText, nonceBytes.Length, macAndCipherText, 0, macAndCipherText.Length);
-
- var keySpan = new ReadOnlySpan(key);
- var blobF = NSec.Cryptography.KeyBlobFormat.RawSymmetricKey;
- using var encryptionKey = NSec.Cryptography.Key.Import(SecretBox, keySpan, blobF);
- if (SecretBox.Decrypt(encryptionKey, in nonce, macAndCipherText, out var plaintext))
- {
- return plaintext;
- }
- throw new CryptographicException("Failed to decode data");
- }
-
- public override byte[] Encrypt(byte[] key, byte[] plainText)
- {
- return EncryptWithAD(key, plainText.AsSpan());
- }
-
- public override byte[] Decrypt(byte[] key, byte[] cipherText)
- {
- return DecryptWithAD(key, cipherText);
- }
- }
-}
\ No newline at end of file
diff --git a/tests/DotNetLightning.Core.Tests/LSATTests.fs b/tests/DotNetLightning.Core.Tests/LSATTests.fs
index 01b9ef9b6..d9f9202d9 100644
--- a/tests/DotNetLightning.Core.Tests/LSATTests.fs
+++ b/tests/DotNetLightning.Core.Tests/LSATTests.fs
@@ -1,17 +1,104 @@
module DotNetLightning.Tests.LSATTests
-open System.Collections.Generic
-open System.Collections.Immutable
+open System
+open System.Linq
open Expecto
open DotNetLightning.Payment.LSAT
-open DotNetLightning.Payment.LSAT
-open DotNetLightning.Payment.LSAT
-open Macaroons
open Macaroons
open ResultUtils
+// These tests go through the examples from the tutorial on
+// the original libmacaroons GitHub page at https://github.com/rescrv/libmacaroons
+[]
+let macaroonTests =
+ let Secret = "this is our super secret key; only we should know it";
+ let Identifier = "we used our secret key";
+ let Location = "http://mybank/";
+
+ let Secret2 = "this is a different super-secret key; never use the same secret twice";
+ let Identifier2 = "we used our other secret key";
+ let Location2 = "http://mybank/"
+ CryptoAlgorithm.initMacaroon()
+ testList "macaroon sanity tests" [
+ testCase "can create empty macaroon with signature" <| fun _ ->
+ let m = Macaroon(Location, Secret, Identifier)
+ Expect.equal Identifier (m.Identifier.ToString()) ""
+ Expect.equal Location (m.Location.ToString()) ""
+ Expect.equal("E3D9E02908526C4C0039AE15114115D97FDD68BF2BA379B342AAF0F617D0552F".ToLowerInvariant()) (m.Signature.ToString()) ""
+ Expect.equal (0) (m.Caveats.Count) ""
+ testCase "can Add third party caveat" <| fun _ ->
+ try
+ let m = new Macaroon(Location2, Secret2, Identifier2);
+ m.AddFirstPartyCaveat("account = 3735928559") |> ignore
+
+ // - just checking (this should although be covered in other tests) ...
+ Expect.equal("1434e674ad84fdfdc9bc1aa00785325c8b6d57341fc7ce200ba4680c80786dda") (m.Signature.ToString()) ""
+
+ // Act
+ let caveat_key = "4; guaranteed random by a fair toss of the dice"
+ // string predicate = "user = Alice";
+ // # send_to_auth(caveat_key, predicate)
+ // # identifier = recv_from_auth()
+ let identifier = "this was how we remind auth of key/pred"
+
+ m.AddThirdPartyCaveat("http://auth.mybank/", caveat_key, identifier) |> ignore
+
+ // Assert
+ Expect.equal("d27db2fd1f22760e4c3dae8137e2d8fc1df6c0741c18aed4b97256bf78d1f55c") (m.Signature.ToString()) ""
+
+ let expectedStringRepresentation =
+ [
+ @"Location = http://mybank/";
+ @"Identifier = we used our other secret key";
+ @"CId = account = 3735928559";
+ @"CId = this was how we remind auth of key/pred";
+ @" VId = AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA027FAuBYhtHwJ58FX6UlVNFtFsGxQHS7uD_w_dedwv4Jjw7UorCREw5rXbRqIKhr";
+ @" Cl = http://auth.mybank/";
+ @"Signature = d27db2fd1f22760e4c3dae8137e2d8fc1df6c0741c18aed4b97256bf78d1f55c"
+ ""
+ ]
+ |> String.concat Environment.NewLine
+
+ Expect.equal(expectedStringRepresentation) (m.Inspect()) ""
+
+ let thirdPartyCaveats = m.ThirdPartyCaveats.ToList()
+ Expect.equal 1 (thirdPartyCaveats.Count) ""
+ Expect.equal "http://auth.mybank/" (thirdPartyCaveats.[0].Cl.ToString()) ""
+ Expect.equal "this was how we remind auth of key/pred" (thirdPartyCaveats.[0].CId.ToString()) ""
+ with
+ | :? NotSupportedException ->
+ // We do not (yet) support third party caveats in BouncyCastle build.
+ // So this exception is fine.
+ ()
+
+ testCase "Can prepare for request" <| fun _ ->
+ try
+ // Arrange
+ let m = new Macaroon(Location2, Secret2, Identifier2);
+ m.AddFirstPartyCaveat("account = 3735928559") |> ignore
+
+ let caveat_key = "4; guaranteed random by a fair toss of the dice";
+ let identifier = "this was how we remind auth of key/pred";
+ m.AddThirdPartyCaveat("http://auth.mybank/", caveat_key, identifier) |> ignore
+
+ let d = Macaroon("http://auth.mybank/", caveat_key, identifier)
+ d.AddFirstPartyCaveat("time < 2015-01-01T00:00") |> ignore
+
+ // Act
+ let dp = m.PrepareForRequest(d)
+
+ // Assert
+ Expect.equal("82a80681f9f32d419af12f6a71787a1bac3ab199df934ed950ddf20c25ac8c65") (d.Signature.ToString()) ""
+ Expect.equal("2eb01d0dd2b4475330739140188648cf25dda0425ea9f661f1574ca0a9eac54e") (dp.Signature.ToString()) ""
+ with
+ | :? NotSupportedException ->
+ // We do not (yet) support third party caveats in BouncyCastle build.
+ // So this exception is fine.
+ ()
+ ]
+
[]
-let tests =
+let lsatTests =
testList "LSAT tests" [
testCase "service decode tests" <| fun _ ->
let r = Service.ParseMany("a:0")
diff --git a/tests/Macaroons.Tests/SanityTests.cs b/tests/Macaroons.Tests/SanityTests.cs
deleted file mode 100644
index 31ececc1e..000000000
--- a/tests/Macaroons.Tests/SanityTests.cs
+++ /dev/null
@@ -1,160 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Reflection.Emit;
-using Xunit;
-
-namespace Macaroons.Tests
-{
- // These tests go through the examples from the tutorial on
- // the original libmacaroons GitHub page at https://github.com/rescrv/libmacaroons
- public class SanityTests : TestBase
- {
- const string Secret2 = "this is a different super-secret key; never use the same secret twice";
- const string Identifier2 = "we used our other secret key";
- const string Location2 = "http://mybank/";
-
- public SanityTests()
- {
- Macaroon.Crypto = new SecretBoxCryptoAlgorithm(false);
- }
-
- [Fact]
- public void CanCreateEmptyMacaroonWithSignature()
- {
- Macaroon m = new Macaroon(Location, Secret, Identifier);
-
- Assert.Equal(Identifier, m.Identifier.ToString());
- Assert.Equal(Location, m.Location.ToString());
- Assert.Equal("E3D9E02908526C4C0039AE15114115D97FDD68BF2BA379B342AAF0F617D0552F".ToLowerInvariant(), m.Signature.ToString());
- Assert.Equal(0, m.Caveats.Count);
- }
-
- [Fact]
- public void CanAddOneFirstPartyCaveat()
- {
- var m = new Macaroon(Location, Secret, Identifier);
-
- Assert.Equal(Identifier, m.Identifier.ToString());
- m.AddFirstPartyCaveat("account = 3735928559");
-
- Assert.Equal(1, m.Caveats.Count);
- Assert.Equal("CId = account = 3735928559", m.Caveats[0].Inspect());
- Assert.Equal("1EFE4763F290DBCE0C1D08477367E11F4EEE456A64933CF662D79772DBB82128".ToLowerInvariant(), m.Signature.ToString());
- }
-
- [Fact]
- public void CanAddMultipleFirstPartyCaveats()
- {
- Macaroon m = new Macaroon(Location, Secret, Identifier);
-
- m.AddFirstPartyCaveat("account = 3735928559");
- m.AddFirstPartyCaveat("time < 2015-01-01T00:00");
- m.AddFirstPartyCaveat("email = alice@example.org");
-
- Assert.Equal(3, m.Caveats.Count);
- Assert.Equal("CId = account = 3735928559", m.Caveats[0].Inspect());
- Assert.Equal("CId = time < 2015-01-01T00:00", m.Caveats[1].Inspect());
- Assert.Equal("CId = email = alice@example.org", m.Caveats[2].Inspect());
- Assert.Equal("882E6D59496ED5245EDB7AB5B8839ECD63E5D504E54839804F164070D8EED952".ToLowerInvariant(), m.Signature.ToString());
-
- string expectedStringRepresentation = @"Location = http://mybank/
-Identifier = we used our secret key
-CId = account = 3735928559
-CId = time < 2015-01-01T00:00
-CId = email = alice@example.org
-Signature = 882e6d59496ed5245edb7ab5b8839ecd63e5d504e54839804f164070d8eed952
-";
-
- Assert.Equal(expectedStringRepresentation, m.Inspect());
- }
-
- [Fact]
- public void CanAddThirdPartyCaveat()
- {
- // Arrange
- Macaroon m = new Macaroon(Location2, Secret2, Identifier2);
- m.AddFirstPartyCaveat("account = 3735928559");
-
- // - just checking (this should although be covered in other tests) ...
- Assert.Equal("1434e674ad84fdfdc9bc1aa00785325c8b6d57341fc7ce200ba4680c80786dda", m.Signature.ToString());
-
- // Act
- string caveat_key = "4; guaranteed random by a fair toss of the dice";
- // string predicate = "user = Alice";
- // # send_to_auth(caveat_key, predicate)
- // # identifier = recv_from_auth()
- string identifier = "this was how we remind auth of key/pred";
-
- m.AddThirdPartyCaveat("http://auth.mybank/", caveat_key, identifier);
-
- // Assert
- Assert.Equal("d27db2fd1f22760e4c3dae8137e2d8fc1df6c0741c18aed4b97256bf78d1f55c", m.Signature.ToString());
-
- string expectedStringRepresentation = @"Location = http://mybank/
-Identifier = we used our other secret key
-CId = account = 3735928559
-CId = this was how we remind auth of key/pred
- VId = AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA027FAuBYhtHwJ58FX6UlVNFtFsGxQHS7uD_w_dedwv4Jjw7UorCREw5rXbRqIKhr
- Cl = http://auth.mybank/
-Signature = d27db2fd1f22760e4c3dae8137e2d8fc1df6c0741c18aed4b97256bf78d1f55c
-";
-
- Assert.Equal(expectedStringRepresentation, m.Inspect());
-
- List thirdPartyCaveats = m.ThirdPartyCaveats.ToList();
- Assert.Single(thirdPartyCaveats);
- Assert.Equal("http://auth.mybank/", thirdPartyCaveats[0].Cl.ToString());
- Assert.Equal("this was how we remind auth of key/pred", thirdPartyCaveats[0].CId.ToString());
- }
-
- [Fact]
- public void CanPrepareForRequest()
- {
- // Arrange
- Macaroon m = new Macaroon(Location2, Secret2, Identifier2);
- m.AddFirstPartyCaveat("account = 3735928559");
-
- string caveat_key = "4; guaranteed random by a fair toss of the dice";
- string identifier = "this was how we remind auth of key/pred";
- m.AddThirdPartyCaveat("http://auth.mybank/", caveat_key, identifier);
-
- Macaroon d = new Macaroon("http://auth.mybank/", caveat_key, identifier);
- d.AddFirstPartyCaveat("time < 2015-01-01T00:00");
-
- // Act
- Macaroon dp = m.PrepareForRequest(d);
-
- // Assert
- Assert.Equal("82a80681f9f32d419af12f6a71787a1bac3ab199df934ed950ddf20c25ac8c65", d.Signature.ToString());
- Assert.Equal("2eb01d0dd2b4475330739140188648cf25dda0425ea9f661f1574ca0a9eac54e", dp.Signature.ToString());
- }
-
- [Fact]
- public void CanVerifyWithDischargeMacaroon()
- {
- // Arrange
- Macaroon m = new Macaroon(Location2, Secret2, Identifier2);
- m.AddFirstPartyCaveat("account = 3735928559");
-
- string caveat_key = "4; guaranteed random by a fair toss of the dice";
- string identifier = "this was how we remind auth of key/pred";
- m.AddThirdPartyCaveat("http://auth.mybank/", caveat_key, identifier);
-
- Macaroon d = new Macaroon("http://auth.mybank/", caveat_key, identifier);
- d.AddFirstPartyCaveat("time < 2115-01-01T00:00");
-
- Macaroon dp = m.PrepareForRequest(d);
-
- Verifier v = new Verifier();
- v.SatisfyExact("account = 3735928559");
- v.SatisfyGeneral(TimeVerifier);
-
- // Act
- VerificationResult result = m.Verify(v, Secret2, new List { dp });
-
- // Assert
- Assert.True(result.Success);
- }
- }
-}
\ No newline at end of file
diff --git a/tests/Macaroons.Tests/SerializationTests.cs b/tests/Macaroons.Tests/SerializationTests.cs
index b39465ce8..1dc724670 100644
--- a/tests/Macaroons.Tests/SerializationTests.cs
+++ b/tests/Macaroons.Tests/SerializationTests.cs
@@ -69,7 +69,7 @@ public void CanDeserializeMultipleFirstPartyCaveats()
}
- [Fact]
+ [Fact(Skip = "Skip third party caveat tests")]
public void CanSerializeAndDeserializeThirdPartyCaveats()
{
// Arrange
diff --git a/tests/Macaroons.Tests/VerificationTests.cs b/tests/Macaroons.Tests/VerificationTests.cs
index 30a351cd2..1005cc82e 100644
--- a/tests/Macaroons.Tests/VerificationTests.cs
+++ b/tests/Macaroons.Tests/VerificationTests.cs
@@ -160,7 +160,7 @@ public void VerificationFailsWithInvalidSignature()
}
- [Fact]
+ [Fact(Skip = "Skip third party caveat tests")]
public void CanVerifyWithMultipleDischargeMacaroons()
{
// Arrange
@@ -201,7 +201,7 @@ public void CanVerifyWithMultipleDischargeMacaroons()
}
- [Fact]
+ [Fact(Skip = "Skip third party caveat tests")]
public void VerificationFailsWhenDischargeMacaroonIsMissing()
{
// Arrange
@@ -244,7 +244,7 @@ public void VerificationFailsWhenDischargeMacaroonIsMissing()
}
- [Fact]
+ [Fact(Skip = "Skip third party caveat tests")]
public void VerificationFailsWhenPredicatesForThirdPartyCaveatIsMissing()
{
// Arrange
@@ -285,7 +285,7 @@ public void VerificationFailsWhenPredicatesForThirdPartyCaveatIsMissing()
}
- [Fact]
+ [Fact(Skip = "Skip third party caveat tests")]
public void VerificationFailsWhenHavingCircularMacaroonReferences()
{
// Arrange