#### [Abblix\.SecurityEvents](https://www.abblix.com/en/docs/api/abblix-securityevents 'index')
### [Abblix\.SecurityEvents\.Validation\.Steps](https://www.abblix.com/en/docs/api/abblix-securityevents/Abblix.SecurityEvents.Validation.Steps 'Abblix\.SecurityEvents\.Validation\.Steps')

## SignatureStep Class

Verifies the token's signature and, on success, promotes the claims from parsed shape to the
issuer's words: this is the step that sets the context's validated token, which every step
reading trusted claims requires\.

```csharp
public sealed class SignatureStep : Abblix.SecurityEvents.Validation.ISecurityCriticalValidator, Abblix.SecurityEvents.Validation.ISecurityEventTokenValidator
```

Inheritance [System\.Object](https://learn.microsoft.com/en-us/dotnet/api/system.object 'System\.Object') → SignatureStep

Implements [ISecurityCriticalValidator](https://www.abblix.com/en/docs/api/abblix-securityevents/Abblix.SecurityEvents.Validation.ISecurityCriticalValidator 'Abblix\.SecurityEvents\.Validation\.ISecurityCriticalValidator'), [ISecurityEventTokenValidator](https://www.abblix.com/en/docs/api/abblix-securityevents/Abblix.SecurityEvents.Validation.ISecurityEventTokenValidator 'Abblix\.SecurityEvents\.Validation\.ISecurityEventTokenValidator')

### Remarks
The verification itself lives behind [ISecurityEventTokenVerifier](https://www.abblix.com/en/docs/api/abblix-securityevents/Abblix.SecurityEvents.Abstractions.ISecurityEventTokenVerifier 'Abblix\.SecurityEvents\.Abstractions\.ISecurityEventTokenVerifier'), which owns key
resolution and the algorithm allowlist and hands back the verified token against the exact
bytes received \- RFC 8417 Section 5\.1: unless integrity is ensured by other means, a SET
"MUST be signed using JWS by an issuer that is trusted to do so for the use case"\.
### Constructors

## SignatureStep\(ISecurityEventTokenVerifier\) Constructor {#Abblix.SecurityEvents.Validation.Steps.SignatureStep.SignatureStep(Abblix.SecurityEvents.Abstractions.ISecurityEventTokenVerifier)}

Verifies the token's signature and, on success, promotes the claims from parsed shape to the
issuer's words: this is the step that sets the context's validated token, which every step
reading trusted claims requires\.

```csharp
public SignatureStep(Abblix.SecurityEvents.Abstractions.ISecurityEventTokenVerifier verifier);
```
#### Parameters

###### `verifier` [ISecurityEventTokenVerifier](https://www.abblix.com/en/docs/api/abblix-securityevents/Abblix.SecurityEvents.Abstractions.ISecurityEventTokenVerifier 'Abblix\.SecurityEvents\.Abstractions\.ISecurityEventTokenVerifier') {#Abblix.SecurityEvents.Validation.Steps.SignatureStep.SignatureStep(Abblix.SecurityEvents.Abstractions.ISecurityEventTokenVerifier).verifier}

The bridge to the host's cryptography\.

### Remarks
The verification itself lives behind [ISecurityEventTokenVerifier](https://www.abblix.com/en/docs/api/abblix-securityevents/Abblix.SecurityEvents.Abstractions.ISecurityEventTokenVerifier 'Abblix\.SecurityEvents\.Abstractions\.ISecurityEventTokenVerifier'), which owns key
resolution and the algorithm allowlist and hands back the verified token against the exact
bytes received \- RFC 8417 Section 5\.1: unless integrity is ensured by other means, a SET
"MUST be signed using JWS by an issuer that is trusted to do so for the use case"\.
### Methods

## SignatureStep\.ValidateAsync\(SecurityEventTokenValidationContext, CancellationToken\) Method {#Abblix.SecurityEvents.Validation.Steps.SignatureStep.ValidateAsync(Abblix.SecurityEvents.Validation.SecurityEventTokenValidationContext,System.Threading.CancellationToken)}

Checks the token in flight\.

```csharp
public System.Threading.Tasks.ValueTask<Abblix.SecurityEvents.Validation.SecurityEventTokenValidationError?> ValidateAsync(Abblix.SecurityEvents.Validation.SecurityEventTokenValidationContext context, System.Threading.CancellationToken cancellationToken);
```
#### Parameters

###### `context` [SecurityEventTokenValidationContext](https://www.abblix.com/en/docs/api/abblix-securityevents/Abblix.SecurityEvents.Validation.SecurityEventTokenValidationContext 'Abblix\.SecurityEvents\.Validation\.SecurityEventTokenValidationContext') {#Abblix.SecurityEvents.Validation.Steps.SignatureStep.ValidateAsync(Abblix.SecurityEvents.Validation.SecurityEventTokenValidationContext,System.Threading.CancellationToken).context}

The state accumulated by earlier steps\.

###### `cancellationToken` [System\.Threading\.CancellationToken](https://learn.microsoft.com/en-us/dotnet/api/system.threading.cancellationtoken 'System\.Threading\.CancellationToken') {#Abblix.SecurityEvents.Validation.Steps.SignatureStep.ValidateAsync(Abblix.SecurityEvents.Validation.SecurityEventTokenValidationContext,System.Threading.CancellationToken).cancellationToken}

Cancels I/O the step performs, such as key retrieval\.

Implements [ValidateAsync\(SecurityEventTokenValidationContext, CancellationToken\)](https://www.abblix.com/en/docs/api/abblix-securityevents/Abblix.SecurityEvents.Validation.ISecurityEventTokenValidator#Abblix.SecurityEvents.Validation.ISecurityEventTokenValidator.ValidateAsync(Abblix.SecurityEvents.Validation.SecurityEventTokenValidationContext,System.Threading.CancellationToken) 'Abblix\.SecurityEvents\.Validation\.ISecurityEventTokenValidator\.ValidateAsync\(Abblix\.SecurityEvents\.Validation\.SecurityEventTokenValidationContext, System\.Threading\.CancellationToken\)')

#### Returns
[System\.Threading\.Tasks\.ValueTask&lt;](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.valuetask-1 'System\.Threading\.Tasks\.ValueTask\`1')[SecurityEventTokenValidationError](https://www.abblix.com/en/docs/api/abblix-securityevents/Abblix.SecurityEvents.Validation.SecurityEventTokenValidationError 'Abblix\.SecurityEvents\.Validation\.SecurityEventTokenValidationError')[&gt;](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.valuetask-1 'System\.Threading\.Tasks\.ValueTask\`1')  
Null to pass the token on; an error to stop the pipeline with that verdict\.
