feat: Implement CVSS receipt management client and models
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
devportal-offline / build-offline (push) Has been cancelled
Mirror Thin Bundle Sign & Verify / mirror-sign (push) Has been cancelled
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
devportal-offline / build-offline (push) Has been cancelled
Mirror Thin Bundle Sign & Verify / mirror-sign (push) Has been cancelled
This commit is contained in:
@@ -87,6 +87,31 @@ public sealed class AuthorityJwksServiceTests
|
||||
Assert.Contains(second.Response.Keys, key => key.Kid == "key-2");
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Jwks_IncludesSm2_WhenProviderSupportsIt()
|
||||
{
|
||||
var options = CreateAuthorityOptions();
|
||||
var provider = new TestCryptoProvider();
|
||||
provider.AddSm2Key("sm2-key");
|
||||
var registry = new TestRegistry(provider);
|
||||
using var cache = new MemoryCache(new MemoryCacheOptions());
|
||||
var clock = new FakeTimeProvider(DateTimeOffset.Parse("2025-10-30T12:00:00Z"));
|
||||
var hash = CryptoHashFactory.CreateDefault();
|
||||
var service = new AuthorityJwksService(
|
||||
registry,
|
||||
hash,
|
||||
NullLogger<AuthorityJwksService>.Instance,
|
||||
cache,
|
||||
clock,
|
||||
Options.Create(options));
|
||||
|
||||
var response = service.Get();
|
||||
var sm2 = response.Response.Keys.Single(key => key.Kid == "sm2-key");
|
||||
Assert.Equal(SignatureAlgorithms.Sm2, sm2.Alg);
|
||||
Assert.Equal("SM2", sm2.Crv);
|
||||
Assert.Equal("EC", sm2.Kty);
|
||||
}
|
||||
|
||||
private static StellaOpsAuthorityOptions CreateAuthorityOptions()
|
||||
{
|
||||
return new StellaOpsAuthorityOptions
|
||||
@@ -189,6 +214,19 @@ public sealed class AuthorityJwksServiceTests
|
||||
keys[keyId] = new TestKey(keyId, parameters);
|
||||
}
|
||||
|
||||
public void AddSm2Key(string keyId)
|
||||
{
|
||||
var curve = Org.BouncyCastle.Asn1.GM.GMNamedCurves.GetByName("SM2P256V1");
|
||||
var domain = new Org.BouncyCastle.Crypto.Parameters.ECDomainParameters(curve.Curve, curve.G, curve.N, curve.H, curve.GetSeed());
|
||||
var generator = new Org.BouncyCastle.Crypto.Generators.ECKeyPairGenerator("EC");
|
||||
generator.Init(new Org.BouncyCastle.Crypto.Generators.ECKeyGenerationParameters(domain, new Org.BouncyCastle.Security.SecureRandom()));
|
||||
var pair = generator.GenerateKeyPair();
|
||||
var privateDer = Org.BouncyCastle.Asn1.Pkcs.PrivateKeyInfoFactory.CreatePrivateKeyInfo(pair.Private).GetDerEncoded();
|
||||
var keyRef = new CryptoKeyReference(keyId);
|
||||
var signingKey = new CryptoSigningKey(keyRef, SignatureAlgorithms.Sm2, privateDer, DateTimeOffset.UtcNow);
|
||||
keys[keyId] = new TestKey(keyId, signingKey.PublicParameters);
|
||||
}
|
||||
|
||||
private sealed class TestKey
|
||||
{
|
||||
public TestKey(string keyId, ECParameters parameters)
|
||||
|
||||
Reference in New Issue
Block a user