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

## Abblix\.Jwt\.Signing Namespace

| Interfaces | |
| :--- | :--- |
| [IDataSigner](https://www.abblix.com/docs/api/abblix-jwt/Abblix.Jwt.Signing.IDataSigner 'Abblix\.Jwt\.Signing\.IDataSigner') | A signing backend that owns a slice of the server's signing keys and produces JWS signature bytes for the keys it owns\. Backends compose as peers behind [Abblix\.Jwt\.Signing\.CompositeSigner](https://learn.microsoft.com/en-us/dotnet/api/abblix.jwt.signing.compositesigner 'Abblix\.Jwt\.Signing\.CompositeSigner'), which asks each in turn whether it owns the key \([CanSign\(JsonWebKey\)](https://www.abblix.com/docs/api/abblix-jwt/Abblix.Jwt.Signing.IDataSigner#Abblix.Jwt.Signing.IDataSigner.CanSign(Abblix.Jwt.JsonWebKey) 'Abblix\.Jwt\.Signing\.IDataSigner\.CanSign\(Abblix\.Jwt\.JsonWebKey\)')\) and routes to the first that does: the in\-process [Abblix\.Jwt\.Signing\.LocalKeySigner](https://learn.microsoft.com/en-us/dotnet/api/abblix.jwt.signing.localkeysigner 'Abblix\.Jwt\.Signing\.LocalKeySigner') owns keys that carry private material, an external custodian backend \([Abblix\.Jwt\.ExternalKeys\.ExternalKeySigner](https://learn.microsoft.com/en-us/dotnet/api/abblix.jwt.externalkeys.externalkeysigner 'Abblix\.Jwt\.ExternalKeys\.ExternalKeySigner')\) owns the public\-only keys whose `kid` is its handle\. This is the byte\-level counterpart of the token\-level [IJsonWebTokenSigner](https://www.abblix.com/docs/api/abblix-jwt/Abblix.Jwt.IJsonWebTokenSigner 'Abblix\.Jwt\.IJsonWebTokenSigner'): it works with bytes, not a whole token, so an HSM/KMS/vault integration is one more backend and never touches JWS framing\. |
| [ISignatureAlgorithm&lt;TJsonWebKey&gt;](https://www.abblix.com/docs/api/abblix-jwt/Abblix.Jwt.Signing.ISignatureAlgorithm_TJsonWebKey_ 'Abblix\.Jwt\.Signing\.ISignatureAlgorithm\<TJsonWebKey\>') | Defines the contract for signing and verifying JWT tokens using a specific cryptographic algorithm\. |
