Some checks failed
AOC Guard CI / aoc-guard (push) Has been cancelled
AOC Guard CI / aoc-verify (push) Has been cancelled
Concelier Attestation Tests / attestation-tests (push) Has been cancelled
Docs CI / lint-and-preview (push) Has been cancelled
Policy Lint & Smoke / policy-lint (push) Has been cancelled
Scanner Analyzers / Discover Analyzers (push) Has been cancelled
Scanner Analyzers / Build Analyzers (push) Has been cancelled
Scanner Analyzers / Test Language Analyzers (push) Has been cancelled
Scanner Analyzers / Validate Test Fixtures (push) Has been cancelled
Scanner Analyzers / Verify Deterministic Output (push) Has been cancelled
console-runner-image / build-runner-image (push) Has been cancelled
wine-csp-build / Build Wine CSP Image (push) Has been cancelled
wine-csp-build / Integration Tests (push) Has been cancelled
wine-csp-build / Security Scan (push) Has been cancelled
wine-csp-build / Generate SBOM (push) Has been cancelled
wine-csp-build / Publish Image (push) Has been cancelled
wine-csp-build / Air-Gap Bundle (push) Has been cancelled
wine-csp-build / Test Summary (push) Has been cancelled
- Added BerkeleyDbReader class to read and extract RPM header blobs from BerkeleyDB hash databases. - Implemented methods to detect BerkeleyDB format and extract values, including handling of page sizes and magic numbers. - Added tests for BerkeleyDbReader to ensure correct functionality and header extraction. feat: Add Yarn PnP data tests - Created YarnPnpDataTests to validate package resolution and data loading from Yarn PnP cache. - Implemented tests for resolved keys, package presence, and loading from cache structure. test: Add egg-info package fixtures for Python tests - Created egg-info package fixtures for testing Python analyzers. - Included PKG-INFO, entry_points.txt, and installed-files.txt for comprehensive coverage. test: Enhance RPM database reader tests - Added tests for RpmDatabaseReader to validate fallback to legacy packages when SQLite is missing. - Implemented helper methods to create legacy package files and RPM headers for testing. test: Implement dual signing tests - Added DualSignTests to validate secondary signature addition when configured. - Created stub implementations for crypto providers and key resolvers to facilitate testing. chore: Update CI script for Playwright Chromium installation - Modified ci-console-exports.sh to ensure deterministic Chromium binary installation for console exports tests. - Added checks for Windows compatibility and environment variable setups for Playwright browsers.
77 lines
18 KiB
C#
77 lines
18 KiB
C#
using System;
|
|
using System.Text;
|
|
using FluentAssertions;
|
|
using Microsoft.Extensions.Options;
|
|
using Org.BouncyCastle.Security;
|
|
using Org.BouncyCastle.Pqc.Crypto.Crystals.Dilithium;
|
|
using Org.BouncyCastle.Pqc.Crypto.Falcon;
|
|
using StellaOps.Cryptography;
|
|
using StellaOps.Cryptography.Plugin.PqSoft;
|
|
using Xunit;
|
|
|
|
namespace StellaOps.Cryptography.Tests;
|
|
|
|
public class PqSoftCryptoProviderTests
|
|
{
|
|
private const string DeterministicMessage = "pq-deterministic-msg";
|
|
private const string DilithiumPrivate = "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";
|
|
private const string DilithiumPublic = "oYBqsu5PY/ni2bGQa7tcWid2G7PsU2Z7LcquwBX7GVS+X7FkMVZbTbBPN//XBtAYLY9BTpzRaVosF2GkjZNM+twqXPJguJ65qeY6myL9xc1Bbtfa8v8iPygjkbCIssA7q5MJvpIrdp6zWv+B+bQEiKBTDoaRFeXZlbr7rngszf9hrbBmBy5BU/4WFn0L2c9Wnxz+7RE5tLLHyr2KVM4qBoLCKM6Z0l4E3y3vOR/Pq+LN64q5wV8StozbLYsjW3URo806b04TpyttDG5LYONeQkKIXAsRzZdXA8wUGbjzQxhaoAFd+CeDGkM95hVOXJETYMaYBtvMgZrKvHDRJAY+x+IVrwla0hYCDqAVtziBqYqSLx+t2oOw2/0Btr4nwPtF43rTvkx3+SBD5zjbd7fHx8iVSYK6hTkoEQz35Nc2Hd0a2GQKCpSx16Mu2olIN8394EzMoaTI9Cs7a+yRMCpXB5y9dnQCIjkMc91R6hM1VGE+olpjbcAEL0cHeqrzGbRw4dlu3cV08Md4bhXXhEKLY/qopYUbjBQONH/UPai8JSeHIQ3qc4sfwFb7w1ltSXx5gCZd34dsxTK1yFbvNqPpQA0mk2ohTl+vbIlfhL3MqN4MVlfvxls97NKmPHYkpfnf0drs2g+9tgNSyOewbym1JITezyUmkR4qAhw7eVbh+SNb4H6hH4Xr4Qj0ZPvdJmchUEFJQJoc/ZHxVRbRSaxYCumFmsdnSB/T2ugTEOscHBn265dFsRPEP5i9I9U/QvalIZjG7CCaoMZMWoJcUDOztYhHnnP1TM45yjrs51JJJA+phrY+5nYPjFPg0cXzFMAxeokodoezEAt8MdDY1GuoFBONSuOb+Bt9nw3MNzqdNv6uMZMdUfUw/IzT/+UMt5LAJsG+A4bucIQEcGG7VVwTUrwze8/X8X8M0NPJo15c6S8RFM0D7k/0XdZsQfO6yNiXZCnj3wEmXAaAJdN16NUtol/u5cOucOQPmtQI/7jbgZrgmfAHcEQ/XI3tR19sBHBrObVFf0frm+AWjuh9MUpBx+jJb3GPVKRceqGLxbRY6ksbnGz3iEwwYb+W9vzaomg440WEyC4I5aergvbZJOaAQdkxFUQ6Jq134iBq2fEFCJChGqGcodAFlWZ5Y/Tctxmmu/ExijOnSV0PlLJ1Tm7zkI/06LM0BT1V1wzPSxYRcjouFdEEfiV7wLR8hMOtTjh2QnBeFGQn0JXRkoQMCIJivPOBn2Hj4Q33qjZe+ZRIUarKmXvE9pWx7dTwKIpQNI9Q3PzTtIcueVpWfu2bxk4uJk/KjPowfFnvcMWr61cxcMeRxqKqLYmLp/T1d0PWMdGoYPsRTiOqlSupvQTH5QtlS064ydcukFdWTkldnG1BLMw3fj6Gn+6epDtpHa2HImceq952S6QF2uPvTu82xdHIZ4qBVFCmsoWjDyUPopJDB8hIYIVWImkSsfJibEtUNnlScDpE/vu0EphWN27HBVHbSgxYhqLW1YbS3HB7vA3wnWj9C8JPTqrMG+dLP3HUL4zUXGDJ6ORIobQKxvbKJhZr2a2aq2yrlyBGel0Nkaz9q5KCvkf2K/2LMcyWr2ngAu+vvvaJZ6IZXhGjwXnUsPjjlTdCqMnve3+d2Iao8/UFwlRe1UidxQ4jbjzjruomzd8iJrcngXsdtDkXKJoeZF2aYaq3Pethei//sNJYdnP6f/d7EiYpVGJmcn4GmURDyYNeNR+vDDtKvF8w8SIaW/PSeBVVLPTpR963hXRAm8iXPkLJ9bp5R/INWp5VorDt9hKw6uJTnpKyX0D36U+rueoY3Uxyu7of0S0XsQ3RRODA/r+oPSZB64QROT6VLnnC8iNNSS1p6kA+927VKznN4k8pijy1pSHrvPEBZ4EbMCTDNv4iUYjuj0lum+T9CkKMQLv5bFOze3bUFMIdgSgXaoDEGIKKDe19GVMkzPF7DjriCWc85A9h6jjuGnxtshHKQbGC3zTP+b/O2zWptHHNv2v7TMp0HGbdYROQbPsShdwk18Gti0mTkyzoX+ckwddeXK7IKYiIDlE8JX77cr75tTszpA2OEXd8Nj+2HhUajDfwa6kBIMAFsvGfJyKnODPrJc8pGWKbQxRpnrHoM1NNlLxm2/5GlnR1MLrDfV/T099zIqsO7kyLNFn6fikXXnDHhpNHeqTtv93vHCjxkGHqFexZZEGVKo3E0y9YBe0XlROnWUAB9Wv7by3J07wLxYq3v6Jw02NHiZi71Xp3DX4bJyNJM8bKCpRGT8JJhDTqqnjJWNA/aZjM9Rv9rCkZqhGkTU2ltHzKuX2qWyBbsv1TO1pEVItWP3KJv5RW4PIhJV9WOPGECNZ7LobsHqKDDHX41Z+AWG5uEbSq8HTLhIZJfZUrLpOohvgTIQ8DIFuShaUUPprB4fM+xrAZAooQWDa24nF5w0Mg2Ar0Ycoz4oVMDN2soboWcdsLm7nibLQWJ8F+TQvHq2WFPvFiiuvY5Vzw+PmWfpCJoXFY9ZK2LEPT9b4533gNRYPqc0r7VpVchYd9wEBSwrYy2N1cXdXSC5hjvszwaSJ2zQ4cgPsG8FKvsoBYfSnoj6ysBIdMqbBG9PBxoAI=";
|
|
private const string DilithiumSignature = "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";
|
|
private const string FalconPrivate = "CADAE9CBC9D6BC+DE88+D+9A+7EKAE9/E9B96FI+BF/83BI/AE/++CG7+4AEDE+E76CC8A+++E8CABBDB7/CCA9C4BFD/6G62CBDBHAAF4/BGBJD+BAGA/89JFC+9AB9FG78+EA8EDE/C+D78/J/8B7+/BEF+CBD7+/7F596AADGD/F/EE+DB/A++7CFI/D/A//+9/E+AA/7+D99A988C7ACJ/B+F+BADAB98KFBBEJ+D7+A8EBD/75A9/99BI9BE8A8D/IC/638/A8/6CH+A5CAB+/I9CDG76ALB/ABD947E579AA6BA5/9B5AFCDA7KE97A5DB/FACE//D/F+MD8978/AEE7F3B++C3BEB7C+H/CBE+188EDAD+8+C9EE9AF6IG/4+CCEFFD5HF+7FE/E+/B76+LI8G/A/777A898E98CG8AB8H5EE9CJE+A/+I5DAHD8BFCD+76+9B+/7H7FEA8/A/BHA+JB+D7DE3CFF8B+E898BI6B8FA6//BBA8BFGFB8F9/F+A+BD4A/MA+CBC9+IA/E7D+AC/DFD+DA8B9+CF6BBB9/L2+/A+FEF6+ECB9FC866E2/5DA+C/9C1+HC/AF88A+FFB/C//97A7/BBDD/AHCE8+FC9EBA88H9B7B6AA48BD+DFCC8+/58/GG8CAF+D8AAH/CK/KJACB7/6ICDE8F/DC/ABF6+HEzDHBGBC4B9D+CBDA/++/+AE69FBB7ABCC89785CDFGD6A9/ADKD9C5BD895CC/DFBAD45AAFAB6+EI79C+BBDGK+HC46E9CB7AD+B977/ECC+A/+3ABC+8G878CHGBCG9DDD2+97C7+6DCHCE/6AEG6E0B+AADBDIF8DA39B/85C9//6C9+6G/+BFEAAD57/H/BCB9DJ/AF+ABBH+AABG8EEA/9B8FED6D/D9E9BGEMC+GFBE+9A6+A8JFE7CAAD9BDCBAEC7BADBBF2/EAEB/GKBHC/D/FDDA89//EA/B6/5/GB/AD6A6AE74GAF+CAFd4f/wwCEBw0CS0R9trX5BPh+x4BAcYl+wUJ/xH55e0ICe0IDgINBBf8ABoVJPr/Ggb4HvIvBf3JAxz3/foCDgv4+hm31hkK7QsG5+LmKwUoxBoTAvMgFN/eAB/8+/Ah3/kD9gDpB/X1+A8czukx8w/yGAfw9+vV/fITJQMZGRwCBOL15tMJ9RMJG/732hbU0wcuKPk76/wM8gcK2B//K93j6Ojo6hj7A/8G9cQDE+bpA/In9Q0IDtAxEwH38hQ+CfMj++Tw/vX7Afoe6/gqz/f0AwIIENkU+u/1AggxF+z07AkM1hra5QYnMOvn9wv84O7lFSUx+Q0JChEY9gzqAvz/Lfz3BQj5GgQi/xcYLAvvA9AS9gAL+Qzl8hfk8wgVDx/96eHcH98aIPYPKhjV8vvkIiMELAUm1dcP8+gh7egiAhQK/AsW9dD9AQsD9gMNBxj6HO8Q/xvzBQkSDPEC6P30Hw3X0iX37uUFORr16hzd7+VC2/H2AxbtJxUEGusbJf7iDuTtG+MrFAHSz//m9P4KEQj95wTq//wS+vvWJwbnFgnyDvIRJ+TxGQX2FCgAzfPMAAPdCQoDAy7fuv8OFSIPBv0G6wbftwHuJPspKPnm+vgS3tT1Fe7w3QXT5g4L5DPg6AEVCPX3GEUpIh7xFtssp/n2MAn+LSQF/MTrDMc=";
|
|
private const string FalconPublic = "Jv6LkSCSV25Fk8XuSAZVAYuFsivvFkrde2eUhjeNOIi7FnEOVhDy2tulOoFJYB1eLnKWcfcB4B6iWvuQvZ+NRHYbZJNnlG/JrcCTSQFybqYY5tv7TAYHcozO9Qe6Nju25ThfuANwomnNsCWsizGs4xO2IdZ1inooJGnmcCAhIsa8WvXVIBhoSlSjV/Nxjmw7c5KSFUqUiQ6KFn8dELZNK/10OLBzBMWQIrmCi+0NmUieiKcVk1MdeKJFslEISCHi1vDiUpgQFPTH2MAsOqz591JFAD7FyWarfGLh6Rgd1WwZAWtWxpAnSXGkY9ADO0R+wXnuIoiEOQi1axW0UwjMZCoivmoJf5ZsEn4CyfenMNKqe5K+Z7fiw5Vdjoh4ZqoH0gzbWYZoGlRpC6XmWlQIwbnBaQRFRdkphuMTTBK8NKDHxod1xzEJrXmAiG4xZQGXvopGQMNdqGja8sOcncMN4lN4dp9VDOK4algsVBglrOuwinwp+GxLz+rcHwV0hkNUswmpWOPplUZLJtlmeJ1YJjRk8egce6oQRYde4QsWIIyoKYOfh/7hV2NYdEcIPCknRZsPiXyqcGoFqAZTMlZblFQ5A1e+1FyQ8DPQeKzlO8A1JRAJ7A6eioHBKJ1zYZblxiwyggHOOoXK1HbpU4PvJROQ6MW08ZK4tAkXZI0lw3s50ViSBFd5zI8xtFrzpjRLOZzMY0dkVDGLlr8+9gsBCU48dfyMga6lrbgVJVcW6rFgPD9lG09mhDArGR8opVeSm6WR60Wq9RRI9WCmDFL+9N/Z8YsdGgo8y2Fx9mNz88DRd0hGyQ/pZTluDuuWEHxx0UCyzWofcq7TkT2pLGq5cBBB3klRWK4CgpRns+HRQhuWeEEtH8Pm4pyJ1NYkXeEbOohkk5NgEmfCF/NmlORdZDxAQSi9r/bvBnlGdS6aV9BvpWugvJV3wcDFvQVjR4HT0IlBwwpHyQhJdcrKsebSaynfQfySaUgMOgUGARAn4jl34sZZia3UCQhpO7yYcacxXRwHSK5nTGePiOoiWCfZYwGQ92k0aLO5fIL4GWo6VmrQu/HiJrF1/GCHa9ozFvcW4wHkejos9Nkf8at5c7QoRoNfEl4zkKjvSKivpZyetasiOuf/6UW06A8m2xfHU0ixQB1emzSGRpGP0gWwicUbdE1tcakAKtMV2I3NolR5wO4=";
|
|
private const string FalconSignature = "OfUX6CmZ14QRj1xzxUFf657ng0GtWjPuT3HVLNV+es9pwMAMZe98/2POuD5YQ9z85g2fkSKqDx9pgyiMLG4lTERJ/qorc9KgSKomkUgS1JL+78qdsnkwUS4cA5BDHB0ipP3thSLVkEWt74ReIz2TDDfbzqzX/ZgFf5ZiYPhsZBSQ0fq23cqYYKTWZ4rjDOkiawuFEMUmCaEp9amx9essVLyEcTqQMCfjdFbJ3LTPweD8Q2SGECYNL7PdUbqJWRWWGR9LE14EpNLNckyFPP3uEYevr1CYF+kbUd3nNyXPG0zHKe2KEffTP3EcmO/x5HjGXZSUdrElbQU0FjYiwm8s2vOO7+IfOm8Fj4rslTRlDuuwDHGB40q57r4P3JMv61tqa0ynSglolqkOBp7EZfAyb7sMwrU6arvXpIDlzCmagDW8DGw7SPUxcV1CZ/XvoNs1jfjWQfVOiTrFDWOvm6WSRYZnLkHaVKUN7CMbFI1lzaNdu2UfMQKA6zsRs+NwVeZGJ26q0rvMmkIvVuMUlaav+Rp/kKKIZVM7Sj7LnrkU2zrII+WSsy9JaZmbHi+XxIXUi9XeT2Xc5anTE9manN4x/wvpByQogntxZb6ej8ZXD1t/a6sPQKc9MJWX9UVl2/wr07iHww0317LqLLC2FNHclYcLR7KK/GEVnAvrDn94r4wY88nsusNDmli3Thh1C6UNg17gjsazteq6m0y+Yrzrb3ZmMzl0bkganSnNTOIsgwyCbDo0d8/WTKjMeoNWQQhKUJM2elWn2TvmaFdOZHMV6Iuw17ociTXHko3J/MZKncSPjYE12pw70mHZ2B+ZxvM1Cj4RUbLHfYz0ANGuSbUGjlgzmewiNXJS4KOsY2K6PYcZ";
|
|
[Fact]
|
|
public async Task Dilithium3_Signs_And_Verifies()
|
|
{
|
|
var provider = CreateProvider();
|
|
|
|
var generator = new DilithiumKeyPairGenerator();
|
|
generator.Init(new DilithiumKeyGenerationParameters(new SecureRandom(), DilithiumParameters.Dilithium3));
|
|
var keyPair = generator.GenerateKeyPair();
|
|
|
|
var priv = ((DilithiumPrivateKeyParameters)keyPair.Private).GetEncoded();
|
|
var pub = ((DilithiumPublicKeyParameters)keyPair.Public).GetEncoded();
|
|
|
|
provider.UpsertSigningKey(new CryptoSigningKey(
|
|
new CryptoKeyReference("pq-dil3"),
|
|
SignatureAlgorithms.Dilithium3,
|
|
priv,
|
|
DateTimeOffset.UtcNow,
|
|
publicKey: pub));
|
|
|
|
var signer = provider.GetSigner(SignatureAlgorithms.Dilithium3, new CryptoKeyReference("pq-dil3"));
|
|
var data = Encoding.UTF8.GetBytes("dilithium-soft");
|
|
|
|
var signature = await signer.SignAsync(data);
|
|
(await signer.VerifyAsync(data, signature)).Should().BeTrue();
|
|
}
|
|
|
|
[Fact]
|
|
public async Task Falcon512_Signs_And_Verifies()
|
|
{
|
|
var provider = CreateProvider();
|
|
|
|
provider.UpsertSigningKey(new CryptoSigningKey(
|
|
new CryptoKeyReference("pq-falcon-det"),
|
|
SignatureAlgorithms.Falcon512,
|
|
Convert.FromBase64String(FalconPrivate),
|
|
DateTimeOffset.UtcNow,
|
|
publicKey: Convert.FromBase64String(FalconPublic)));
|
|
|
|
var signer = provider.GetSigner(SignatureAlgorithms.Falcon512, new CryptoKeyReference("pq-falcon-det"));
|
|
var data = Encoding.UTF8.GetBytes(DeterministicMessage);
|
|
var signature = await signer.SignAsync(data);
|
|
(await signer.VerifyAsync(data, signature)).Should().BeTrue();
|
|
}
|
|
|
|
private static PqSoftCryptoProvider CreateProvider()
|
|
{
|
|
var options = Options.Create(new PqSoftProviderOptions
|
|
{
|
|
RequireEnvironmentGate = false
|
|
});
|
|
|
|
return new PqSoftCryptoProvider(options);
|
|
}
|
|
}
|