IPWorks Auth 2020 Python Edition

Questions / Feedback?

add_header_param Method

Adds additional header parameters.

Syntax

def add_header_param(name: str, value: str, data_type: int) -> None: ...

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 ParamProperty
algalgorithm
kidkey_id

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 encryption_algorithm and other properties that may be set.

Parameters Automatically Set:

Header ParamProperty
alg encryption_algorithm
enc content_encryption_algorithm
kid key_id
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)

Copyright (c) 2022 /n software inc. - All rights reserved.
IPWorks Auth 2020 Python Edition - Version 20.0 [Build 8155]