#### [Abblix\.Jwt](https://www.abblix.com/en/docs/api/abblix-jwt 'index')
### [Abblix\.Jwt](https://www.abblix.com/en/docs/api/abblix-jwt/Abblix.Jwt 'Abblix\.Jwt')

## KeyVersion Struct

One version of a custodian\-held key: its public half and when the custodian created that version\. The
public key carries the version\-specific `kid` that routes a private operation back to this exact
version, so publishing a key's versions lets a client verify a signature made by any of them and lets the
server unwrap a JWE encrypted to any of them\. The creation time is what a rotation policy reads to hold a
freshly minted version as announced\-but\-not\-yet\-signing until client JWKS caches catch up \(the propagation
window\), and to keep a superseded version published until its tokens expire\.

```csharp
public readonly record struct KeyVersion : System.IEquatable<Abblix.Jwt.KeyVersion>
```

Implements [System\.IEquatable&lt;](https://learn.microsoft.com/en-us/dotnet/api/system.iequatable-1 'System\.IEquatable\`1')[KeyVersion](https://www.abblix.com/en/docs/api/abblix-jwt/Abblix.Jwt.KeyVersion 'Abblix\.Jwt\.KeyVersion')[&gt;](https://learn.microsoft.com/en-us/dotnet/api/system.iequatable-1 'System\.IEquatable\`1')
### Constructors

## KeyVersion\(JsonWebKey, DateTimeOffset\) Constructor {#Abblix.Jwt.KeyVersion.KeyVersion(Abblix.Jwt.JsonWebKey,System.DateTimeOffset)}

One version of a custodian\-held key: its public half and when the custodian created that version\. The
public key carries the version\-specific `kid` that routes a private operation back to this exact
version, so publishing a key's versions lets a client verify a signature made by any of them and lets the
server unwrap a JWE encrypted to any of them\. The creation time is what a rotation policy reads to hold a
freshly minted version as announced\-but\-not\-yet\-signing until client JWKS caches catch up \(the propagation
window\), and to keep a superseded version published until its tokens expire\.

```csharp
public KeyVersion(Abblix.Jwt.JsonWebKey PublicKey, System.DateTimeOffset CreatedAt);
```
#### Parameters

###### `PublicKey` [JsonWebKey](https://www.abblix.com/en/docs/api/abblix-jwt/Abblix.Jwt.JsonWebKey 'Abblix\.Jwt\.JsonWebKey') {#Abblix.Jwt.KeyVersion.KeyVersion(Abblix.Jwt.JsonWebKey,System.DateTimeOffset).PublicKey}

The public\-only key material for this version, with its version\-specific `kid`\.

###### `CreatedAt` [System\.DateTimeOffset](https://learn.microsoft.com/en-us/dotnet/api/system.datetimeoffset 'System\.DateTimeOffset') {#Abblix.Jwt.KeyVersion.KeyVersion(Abblix.Jwt.JsonWebKey,System.DateTimeOffset).CreatedAt}

When the custodian created this version\. A custodian that does not track a creation
            time reports [System\.DateTimeOffset\.MinValue](https://learn.microsoft.com/en-us/dotnet/api/system.datetimeoffset.minvalue 'System\.DateTimeOffset\.MinValue'), which a rotation policy treats as "always past the
            propagation window", so a single non\-rotating key is always eligible to sign\.
### Properties

## KeyVersion\.CreatedAt Property {#Abblix.Jwt.KeyVersion.CreatedAt}

When the custodian created this version\. A custodian that does not track a creation
            time reports [System\.DateTimeOffset\.MinValue](https://learn.microsoft.com/en-us/dotnet/api/system.datetimeoffset.minvalue 'System\.DateTimeOffset\.MinValue'), which a rotation policy treats as "always past the
            propagation window", so a single non\-rotating key is always eligible to sign\.

```csharp
public System.DateTimeOffset CreatedAt { get; init; }
```

#### Property Value
[System\.DateTimeOffset](https://learn.microsoft.com/en-us/dotnet/api/system.datetimeoffset 'System\.DateTimeOffset')

## KeyVersion\.PublicKey Property {#Abblix.Jwt.KeyVersion.PublicKey}

The public\-only key material for this version, with its version\-specific `kid`\.

```csharp
public Abblix.Jwt.JsonWebKey PublicKey { get; init; }
```

#### Property Value
[JsonWebKey](https://www.abblix.com/en/docs/api/abblix-jwt/Abblix.Jwt.JsonWebKey 'Abblix\.Jwt\.JsonWebKey')
