#### [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')

## JsonWebKeyExtensions Class

Provides extension methods for the JsonWebKey model to simplify the process of populating its properties from different sources\.
These methods enable easy conversion between JsonWebKey and various cryptographic representations\.

```csharp
public static class JsonWebKeyExtensions
```

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

## JsonWebKeyExtensions\.Apply\(this EllipticCurveJsonWebKey, ECParameters\) Method {#Abblix.Jwt.JsonWebKeyExtensions.Apply(thisAbblix.Jwt.EllipticCurveJsonWebKey,System.Security.Cryptography.ECParameters)}

Applies Elliptic Curve parameters to an EllipticCurveJsonWebKey\.

```csharp
public static Abblix.Jwt.EllipticCurveJsonWebKey Apply(this Abblix.Jwt.EllipticCurveJsonWebKey jwk, System.Security.Cryptography.ECParameters parameters);
```
#### Parameters

###### `jwk` [EllipticCurveJsonWebKey](https://www.abblix.com/en/docs/api/abblix-jwt/Abblix.Jwt.EllipticCurveJsonWebKey 'Abblix\.Jwt\.EllipticCurveJsonWebKey') {#Abblix.Jwt.JsonWebKeyExtensions.Apply(thisAbblix.Jwt.EllipticCurveJsonWebKey,System.Security.Cryptography.ECParameters).jwk}

The EllipticCurveJsonWebKey to which the EC parameters are to be applied\.

###### `parameters` [System\.Security\.Cryptography\.ECParameters](https://learn.microsoft.com/en-us/dotnet/api/system.security.cryptography.ecparameters 'System\.Security\.Cryptography\.ECParameters') {#Abblix.Jwt.JsonWebKeyExtensions.Apply(thisAbblix.Jwt.EllipticCurveJsonWebKey,System.Security.Cryptography.ECParameters).parameters}

The ECParameters providing the Elliptic Curve key information\.

#### Returns
[EllipticCurveJsonWebKey](https://www.abblix.com/en/docs/api/abblix-jwt/Abblix.Jwt.EllipticCurveJsonWebKey 'Abblix\.Jwt\.EllipticCurveJsonWebKey')  
The updated EllipticCurveJsonWebKey with applied Elliptic Curve parameters\.

## JsonWebKeyExtensions\.Apply\(this RsaJsonWebKey, RSAParameters\) Method {#Abblix.Jwt.JsonWebKeyExtensions.Apply(thisAbblix.Jwt.RsaJsonWebKey,System.Security.Cryptography.RSAParameters)}

Applies RSA parameters to an RsaJsonWebKey\.

```csharp
public static Abblix.Jwt.RsaJsonWebKey Apply(this Abblix.Jwt.RsaJsonWebKey jwk, System.Security.Cryptography.RSAParameters parameters);
```
#### Parameters

###### `jwk` [RsaJsonWebKey](https://www.abblix.com/en/docs/api/abblix-jwt/Abblix.Jwt.RsaJsonWebKey 'Abblix\.Jwt\.RsaJsonWebKey') {#Abblix.Jwt.JsonWebKeyExtensions.Apply(thisAbblix.Jwt.RsaJsonWebKey,System.Security.Cryptography.RSAParameters).jwk}

The RsaJsonWebKey to which the RSA parameters are to be applied\.

###### `parameters` [System\.Security\.Cryptography\.RSAParameters](https://learn.microsoft.com/en-us/dotnet/api/system.security.cryptography.rsaparameters 'System\.Security\.Cryptography\.RSAParameters') {#Abblix.Jwt.JsonWebKeyExtensions.Apply(thisAbblix.Jwt.RsaJsonWebKey,System.Security.Cryptography.RSAParameters).parameters}

The RSAParameters providing the RSA key information\.

#### Returns
[RsaJsonWebKey](https://www.abblix.com/en/docs/api/abblix-jwt/Abblix.Jwt.RsaJsonWebKey 'Abblix\.Jwt\.RsaJsonWebKey')  
The updated RsaJsonWebKey with applied RSA parameters\.

## JsonWebKeyExtensions\.Apply\<T\>\(this T, X509Certificate2\) Method {#Abblix.Jwt.JsonWebKeyExtensions.Apply_T_(thisT,System.Security.Cryptography.X509Certificates.X509Certificate2)}

Applies X509Certificate2 properties to a JsonWebKey\.

```csharp
public static T Apply<T>(this T jwk, System.Security.Cryptography.X509Certificates.X509Certificate2 certificate)
    where T : Abblix.Jwt.JsonWebKey;
```
#### Type parameters

###### `T` {#Abblix.Jwt.JsonWebKeyExtensions.Apply_T_(thisT,System.Security.Cryptography.X509Certificates.X509Certificate2).T}

The type of JsonWebKey \(must be a subclass\)\.
#### Parameters

###### `jwk` [T](https://www.abblix.com/en/docs/api/abblix-jwt/Abblix.Jwt.JsonWebKeyExtensions#Abblix.Jwt.JsonWebKeyExtensions.Apply_T_(thisT,System.Security.Cryptography.X509Certificates.X509Certificate2).T 'Abblix\.Jwt\.JsonWebKeyExtensions\.Apply\<T\>\(this T, System\.Security\.Cryptography\.X509Certificates\.X509Certificate2\)\.T') {#Abblix.Jwt.JsonWebKeyExtensions.Apply_T_(thisT,System.Security.Cryptography.X509Certificates.X509Certificate2).jwk}

The JsonWebKey to which the certificate properties are to be applied\.

###### `certificate` [System\.Security\.Cryptography\.X509Certificates\.X509Certificate2](https://learn.microsoft.com/en-us/dotnet/api/system.security.cryptography.x509certificates.x509certificate2 'System\.Security\.Cryptography\.X509Certificates\.X509Certificate2') {#Abblix.Jwt.JsonWebKeyExtensions.Apply_T_(thisT,System.Security.Cryptography.X509Certificates.X509Certificate2).certificate}

The X509Certificate2 providing the properties\.

#### Returns
[T](https://www.abblix.com/en/docs/api/abblix-jwt/Abblix.Jwt.JsonWebKeyExtensions#Abblix.Jwt.JsonWebKeyExtensions.Apply_T_(thisT,System.Security.Cryptography.X509Certificates.X509Certificate2).T 'Abblix\.Jwt\.JsonWebKeyExtensions\.Apply\<T\>\(this T, System\.Security\.Cryptography\.X509Certificates\.X509Certificate2\)\.T')  
The updated JsonWebKey with applied certificate properties\.

## JsonWebKeyExtensions\.ToEcdsa\(this EllipticCurveJsonWebKey\) Method {#Abblix.Jwt.JsonWebKeyExtensions.ToEcdsa(thisAbblix.Jwt.EllipticCurveJsonWebKey)}

Converts an EllipticCurveJsonWebKey to an ECDsa object,
which represents an ECDSA public and private key pair or just a public key\.

```csharp
public static System.Security.Cryptography.ECDsa ToEcdsa(this Abblix.Jwt.EllipticCurveJsonWebKey key);
```
#### Parameters

###### `key` [EllipticCurveJsonWebKey](https://www.abblix.com/en/docs/api/abblix-jwt/Abblix.Jwt.EllipticCurveJsonWebKey 'Abblix\.Jwt\.EllipticCurveJsonWebKey') {#Abblix.Jwt.JsonWebKeyExtensions.ToEcdsa(thisAbblix.Jwt.EllipticCurveJsonWebKey).key}

The EllipticCurveJsonWebKey to be converted\.

#### Returns
[System\.Security\.Cryptography\.ECDsa](https://learn.microsoft.com/en-us/dotnet/api/system.security.cryptography.ecdsa 'System\.Security\.Cryptography\.ECDsa')  
An ECDsa object based on the provided EllipticCurveJsonWebKey\.

## JsonWebKeyExtensions\.ToEcParameters\(this EllipticCurveJsonWebKey\) Method {#Abblix.Jwt.JsonWebKeyExtensions.ToEcParameters(thisAbblix.Jwt.EllipticCurveJsonWebKey)}

Converts an EllipticCurveJsonWebKey to ECParameters,
which represent the key parameters used in ECDSA cryptographic operations\.
Supports P\-256, P\-384, and P\-521 curves as defined in NIST standards\.

```csharp
public static System.Security.Cryptography.ECParameters ToEcParameters(this Abblix.Jwt.EllipticCurveJsonWebKey key);
```
#### Parameters

###### `key` [EllipticCurveJsonWebKey](https://www.abblix.com/en/docs/api/abblix-jwt/Abblix.Jwt.EllipticCurveJsonWebKey 'Abblix\.Jwt\.EllipticCurveJsonWebKey') {#Abblix.Jwt.JsonWebKeyExtensions.ToEcParameters(thisAbblix.Jwt.EllipticCurveJsonWebKey).key}

The EllipticCurveJsonWebKey to be converted\.

#### Returns
[System\.Security\.Cryptography\.ECParameters](https://learn.microsoft.com/en-us/dotnet/api/system.security.cryptography.ecparameters 'System\.Security\.Cryptography\.ECParameters')  
An ECParameters object based on the provided EllipticCurveJsonWebKey\.

#### Exceptions

[System\.InvalidOperationException](https://learn.microsoft.com/en-us/dotnet/api/system.invalidoperationexception 'System\.InvalidOperationException')  
Thrown when the curve type is not supported\.

## JsonWebKeyExtensions\.ToJsonWebKey\(this X509Certificate2, bool\) Method {#Abblix.Jwt.JsonWebKeyExtensions.ToJsonWebKey(thisSystem.Security.Cryptography.X509Certificates.X509Certificate2,bool)}

Converts an X509Certificate2 to a JsonWebKey\. The private keys can be optionally included in the conversion\.

```csharp
public static Abblix.Jwt.JsonWebKey ToJsonWebKey(this System.Security.Cryptography.X509Certificates.X509Certificate2 certificate, bool includePrivateKeys=false);
```
#### Parameters

###### `certificate` [System\.Security\.Cryptography\.X509Certificates\.X509Certificate2](https://learn.microsoft.com/en-us/dotnet/api/system.security.cryptography.x509certificates.x509certificate2 'System\.Security\.Cryptography\.X509Certificates\.X509Certificate2') {#Abblix.Jwt.JsonWebKeyExtensions.ToJsonWebKey(thisSystem.Security.Cryptography.X509Certificates.X509Certificate2,bool).certificate}

The X509Certificate2 to convert\.

###### `includePrivateKeys` [System\.Boolean](https://learn.microsoft.com/en-us/dotnet/api/system.boolean 'System\.Boolean') {#Abblix.Jwt.JsonWebKeyExtensions.ToJsonWebKey(thisSystem.Security.Cryptography.X509Certificates.X509Certificate2,bool).includePrivateKeys}

Indicates whether to include private keys in the conversion\.

#### Returns
[JsonWebKey](https://www.abblix.com/en/docs/api/abblix-jwt/Abblix.Jwt.JsonWebKey 'Abblix\.Jwt\.JsonWebKey')  
A JsonWebKey representing the certificate\.

## JsonWebKeyExtensions\.ToRsa\(this RsaJsonWebKey\) Method {#Abblix.Jwt.JsonWebKeyExtensions.ToRsa(thisAbblix.Jwt.RsaJsonWebKey)}

Converts an RsaJsonWebKey to an RSA object, which represents an RSA public and private key pair or just a public key\.

```csharp
public static System.Security.Cryptography.RSA ToRsa(this Abblix.Jwt.RsaJsonWebKey key);
```
#### Parameters

###### `key` [RsaJsonWebKey](https://www.abblix.com/en/docs/api/abblix-jwt/Abblix.Jwt.RsaJsonWebKey 'Abblix\.Jwt\.RsaJsonWebKey') {#Abblix.Jwt.JsonWebKeyExtensions.ToRsa(thisAbblix.Jwt.RsaJsonWebKey).key}

The RsaJsonWebKey to be converted\.

#### Returns
[System\.Security\.Cryptography\.RSA](https://learn.microsoft.com/en-us/dotnet/api/system.security.cryptography.rsa 'System\.Security\.Cryptography\.RSA')  
An RSA object based on the provided RsaJsonWebKey\.

## JsonWebKeyExtensions\.ToRsaParameters\(this RsaJsonWebKey\) Method {#Abblix.Jwt.JsonWebKeyExtensions.ToRsaParameters(thisAbblix.Jwt.RsaJsonWebKey)}

Converts an RsaJsonWebKey to RSAParameters, which represent the key parameters used in RSA cryptographic operations\.

```csharp
public static System.Security.Cryptography.RSAParameters ToRsaParameters(this Abblix.Jwt.RsaJsonWebKey key);
```
#### Parameters

###### `key` [RsaJsonWebKey](https://www.abblix.com/en/docs/api/abblix-jwt/Abblix.Jwt.RsaJsonWebKey 'Abblix\.Jwt\.RsaJsonWebKey') {#Abblix.Jwt.JsonWebKeyExtensions.ToRsaParameters(thisAbblix.Jwt.RsaJsonWebKey).key}

The RsaJsonWebKey to be converted\.

#### Returns
[System\.Security\.Cryptography\.RSAParameters](https://learn.microsoft.com/en-us/dotnet/api/system.security.cryptography.rsaparameters 'System\.Security\.Cryptography\.RSAParameters')  
An RSAParameters object based on the provided RsaJsonWebKey\.
