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())); } } }