38 lines
1.2 KiB
C#
38 lines
1.2 KiB
C#
using System.Security.Cryptography;
|
|
using Xunit;
|
|
using XWorld.PublishTool;
|
|
|
|
namespace XWorld.PublishTool.Tests
|
|
{
|
|
public class ManifestSignerTests
|
|
{
|
|
[Fact]
|
|
public void Sign_Then_Verify_Succeeds()
|
|
{
|
|
using var rsa = RSA.Create(2048);
|
|
string priv = rsa.ExportRSAPrivateKeyPem();
|
|
string pub = rsa.ExportRSAPublicKeyPem();
|
|
|
|
byte[] sig = ManifestSigner.Sign("digest-content", priv);
|
|
Assert.True(ManifestSigner.Verify("digest-content", sig, pub));
|
|
}
|
|
|
|
[Fact]
|
|
public void Verify_Fails_OnTamperedContent()
|
|
{
|
|
using var rsa = RSA.Create(2048);
|
|
byte[] sig = ManifestSigner.Sign("original", rsa.ExportRSAPrivateKeyPem());
|
|
Assert.False(ManifestSigner.Verify("tampered", sig, rsa.ExportRSAPublicKeyPem()));
|
|
}
|
|
|
|
[Fact]
|
|
public void Verify_Fails_OnWrongKey()
|
|
{
|
|
using var signer = RSA.Create(2048);
|
|
using var other = RSA.Create(2048);
|
|
byte[] sig = ManifestSigner.Sign("c", signer.ExportRSAPrivateKeyPem());
|
|
Assert.False(ManifestSigner.Verify("c", sig, other.ExportRSAPublicKeyPem()));
|
|
}
|
|
}
|
|
}
|