AddHeaderParam Method
Adds additional header parameters.
Syntax
async jwt.addHeaderParam(name : string, value : string, dataType : number): Promise<void>
Remarks
This method is used to add additional header parameters before calling Encrypt or Sign.
The Name and Value parameters define the name and value of the parameter respectively. The DataType parameter specifies the JSON data type of the value. Possible values for DataType are:
- 0 (Object)
- 1 (Array)
- 2 (String)
- 3 (Number)
- 4 (Bool)
- 5 (Null)
Signing
To add additional parameters to the JOSE header use this method. For instance to create this header:
{
"alg"
:
"HS256"
,
"crit"
: [
"myheader"
],
"myheader"
:
"testvalue"
}
The following code can be used:
byte
[] key =
new
byte
[] { 170, 171, 221, 209, 7, 181, 48, 178, 48, 118, 242, 132, 36, 218, 74, 140, 216, 165, 161, 70, 11, 42, 246, 205, 235, 231, 19, 48, 87, 141, 122, 10 };
//Sign the payload using HS256
Jwt jwt =
new
Jwt();
jwt.SigningAlgorithm = JwtSigningAlgorithms.saHS256;
jwt.ClaimAudience =
"audience"
;
jwt.ClaimIssuer =
"issuer"
;
jwt.ClaimExp =
"1498508071"
;
jwt.AddHeaderParam(
"crit"
,
"[\"myheader\"]"
, 1);
jwt.AddHeaderParam(
"myheader"
,
"testvalue"
, 2);
jwt.KeyB = key;
jwt.Sign();
string
signedData = jwt.EncodedJWT;
Note: when calling Sign the class will automatically add some headers based on properties that are set.
Parameters Automatically Set:
Header Param | Property |
alg | Algorithm |
kid | KeyId |
Encrypting
To add additional parameters to the JOSE header use this method. For instance to create this header:
{
"alg"
:
"A256GCMKW"
,
"enc"
:
"A128CBC-HS256"
,
"iv"
:
"cPTXlBL7aMiv-Dnf"
,
"tag"
:
"r5tmS-tXmfFngrybpnnt5g"
,
"crit"
: [
"myheader"
],
"myheader"
:
"testvalue"
}
The following code can be used:
byte
[] key =
new
byte
[] { 164, 60, 194, 0, 161, 189, 41, 38, 130, 89, 141, 164, 45, 170, 159, 209, 69, 137, 243, 216, 191, 131, 47, 250, 32, 107, 231, 117, 37, 158, 225, 234 };
Jwt jwt =
new
Jwt();
jwt.KeyB = key;
jwt.ClaimAudience =
"audience"
;
jwt.ClaimIssuer =
"issuer"
;
jwt.ClaimExp =
"1498508071"
;
jwt.AddHeaderParam(
"crit"
,
"[\"myheader\"]"
,1);
jwt.AddHeaderParam(
"myheader"
,
"testvalue"
,2);
jwt.EncryptionAlgorithm = JwtEncryptionAlgorithms.eaA256GCMKW;
jwt.Encrypt();
string
encryptedData = jwt.EncodedJWT;
Note: When calling Encrypt the class will automatically add headers based on the selected EncryptionAlgorithm and other properties that may be set.
Parameters Automatically Set:
Header Param | Property |
alg | EncryptionAlgorithm |
enc | ContentEncryptionAlgorithm |
kid | KeyId |
zip | CompressionAlgorithm |
p2c | PBES2Count (PBES Algorithms Only) |
apu | PartyUInfo (ECDH Algorithms Only) |
apv | PartyVInfo (ECDH Algorithms Only) |
iv | N/A - Automatically Generated (AES Algorithms Only) |
tag | N/A - Automatically Generated (AES Algorithms Only) |
p2s | N/A - Automatically Generated (PBES Algorithms Only) |
epk | N/A - Automatically Generated (ECDH Algorithms Only) |