Loading...
Searching...
No Matches
Constants and properties

## Macros

#define | I_OK 0
| Success.
#define | I_ERROR 1
| Error.
#define | I_ERROR_PARAM 2
| Error in parameters.
#define | I_ERROR_MEMORY 3
| Memory error.
#define | I_ERROR_UNAUTHORIZED 4
| Request unauthorized.
#define | I_ERROR_SERVER 5
| Server error.
#define | I_RESPONSE_TYPE_NONE 0x00000000
| No response type.
#define | I_RESPONSE_TYPE_CODE 0x00000001
| Response type code.
#define | I_RESPONSE_TYPE_TOKEN 0x00000010
| Response type token.
#define | I_RESPONSE_TYPE_ID_TOKEN 0x00000100
| Response type id_token.
#define | I_RESPONSE_TYPE_PASSWORD 0x00001000
| Grant type password.
#define | I_RESPONSE_TYPE_CLIENT_CREDENTIALS 0x00010000
| Grant type client_credentials.
#define | I_RESPONSE_TYPE_REFRESH_TOKEN 0x00100000
| Grant type refresh_token.
#define | I_RESPONSE_TYPE_DEVICE_CODE 0x01000000
| Grant type urn:ietf:params:oauth:grant-type:device_code.
#define | I_RESPONSE_TYPE_CIBA 0x10000000
| Grant type urn:openid:params:grant-type:ciba.
#define | I_AUTH_METHOD_GET 0x00000001
| auth endpoint using GET method
#define | I_AUTH_METHOD_POST 0x00000010
| auth endpoint using POST method
#define | I_AUTH_METHOD_JWT_SIGN_SECRET 0x00000100
| auth endpoint using a JWT signed with the client secret
#define | I_AUTH_METHOD_JWT_SIGN_PRIVKEY 0x00001000
| auth endpoint using a JWT signed with the client private key
#define | I_AUTH_METHOD_JWT_ENCRYPT_SECRET 0x00010000
| auth endpoint using a JWT encrypted with the client secret
#define | I_AUTH_METHOD_JWT_ENCRYPT_PUBKEY 0x00100000
| auth endpoint using a JWT encrypted with the server public key
#define | I_TOKEN_AUTH_METHOD_NONE 0x00000000
| token endpoint using no authentication
#define | I_TOKEN_AUTH_METHOD_SECRET_BASIC 0x00000001
| token endpoint using HTTP basic auth with client_id and client password
#define | I_TOKEN_AUTH_METHOD_SECRET_POST 0x00000010
| token endpoint using secret send in POST parameters
#define | I_TOKEN_AUTH_METHOD_TLS_CERTIFICATE 0x00000100
| token endpoint using TLS Certificate authentication
#define | I_TOKEN_AUTH_METHOD_JWT_SIGN_SECRET 0x00001000
| token endpoint using a JWT signed with the client secret
#define | I_TOKEN_AUTH_METHOD_JWT_SIGN_PRIVKEY 0x00010000
| token endpoint using a JWT signed with the client private key
#define | I_TOKEN_AUTH_METHOD_JWT_ENCRYPT_SECRET 0x00100000
| token endpoint using a JWT encrypted with the client secret
#define | I_TOKEN_AUTH_METHOD_JWT_ENCRYPT_PUBKEY 0x01000000
| token endpoint using a JWT signed with the client private key and encrypted with the server public key or the client secret
#define | I_STRICT_NO 0x00000000
| Do not stricly conform to openid config result.
#define | I_STRICT_YES 0x00000001
| Stricly conform to openid config result.
#define | I_STRICT_JWT_AT_SIGNATURE 0x00000010
| Verify JWT access tokens signatures.
#define | I_STRICT_JWT_AT_HEADER_TYP 0x00000100
| Verify JWT access tokens header typ value.
#define | I_STRICT_JWT_AT_CLAIM 0x00001000
| Verify JWT access tokens claims values.
#define | I_AUTH_SIGN_ALG_MAX_LENGTH 8
| Max length of a sign algorithm name.
#define | I_BEARER_TYPE_HEADER 0
| Bearer type header, the token will be available in the header.
#define | I_BEARER_TYPE_BODY 1
| Bearer type body, the token will be available as a body url-encoded parameter.
#define | I_BEARER_TYPE_URL 2
| Bearer type url, the token will be available as a url query parameter.
#define | I_INTROSPECT_REVOKE_AUTH_NONE 0
| Introspection/Revocation - no authentication.
#define | I_INTROSPECT_REVOKE_AUTH_ACCESS_TOKEN 1
| Introspection/Revocation - authentication using access token.
#define | I_INTROSPECT_REVOKE_AUTH_CLIENT_TARGET 2
| Introspection/Revocation - authentication with client credentials.
#define | I_TOKEN_TYPE_ACCESS_TOKEN 0
#define | I_TOKEN_TYPE_ID_TOKEN 1
#define | I_TOKEN_TYPE_USERINFO 2
#define | I_TOKEN_TYPE_INTROSPECTION 3
#define | I_TOKEN_TYPE_RESPONSE_AUTH 4
#define | I_HEADER_PREFIX_BEARER "Bearer "
#define | I_HEADER_PREFIX_DPOP "DPoP "
#define | I_HEADER_AUTHORIZATION "Authorization"
#define | I_CONTENT_TYPE_JWKS "application/jwk-set+json"
#define | I_BODY_URL_PARAMETER "access_token"
#define | I_HEADER_DPOP "DPoP"
#define | I_REMOTE_VERIFY_NONE 0x0000
| No TLS Verification.
#define | I_REMOTE_HOST_VERIFY_PEER 0x0001
| Verify TLS session with peers.
#define | I_REMOTE_HOST_VERIFY_HOSTNAME 0x0010
| Verify TLS session with hostname.
#define | I_REMOTE_PROXY_VERIFY_PEER 0x0100
| Verify TLS session with peers.
#define | I_REMOTE_PROXY_VERIFY_HOSTNAME 0x1000
| Verify TLS session with hostname.
#define | I_PKCE_NONE 0
| No PKCE.
#define | I_PKCE_METHOD_PLAIN 1
| PKCE using method plain.
#define | I_PKCE_METHOD_S256 2
| PKCE using method SHA256.
#define | I_CLAIM_TARGET_ALL 0
| Add claim to userinfo and id_token.
#define | I_CLAIM_TARGET_USERINFO 1
| Add claim to userinfo.
#define | I_CLAIM_TARGET_ID_TOKEN 2
| Add claim to id_token.
#define | I_CLAIM_ESSENTIAL_NULL 0
| Set claim value to null.
#define | I_CLAIM_ESSENTIAL_TRUE 1
| Set claim essential value to true.
#define | I_CLAIM_ESSENTIAL_FALSE 2
| Set claim essential value to false.
#define | I_CLAIM_ESSENTIAL_IGNORE 3
#define | I_CIBA_MODE_NONE 0
#define | I_CIBA_MODE_POLL 1
#define | I_CIBA_MODE_PING 2
#define | I_CIBA_MODE_PUSH 3
#define | I_CIBA_LOGIN_HINT_FORMAT_JSON 0
#define | I_CIBA_LOGIN_HINT_FORMAT_JWT 1
#define | I_CIBA_LOGIN_HINT_FORMAT_ID_TOKEN 2
#define | I_DEFAULT_RESPONSE_MAX_BODY_SIZE 4194304
#define | I_DEFAULT_RESPONSE_MAX_HEADER_COUNT 64

## Enumerations

enum

i_option {
I_OPT_NONE = 0 , I_OPT_RESPONSE_TYPE = 1 , I_OPT_SCOPE = 2 , I_OPT_SCOPE_APPEND = 3 ,
I_OPT_STATE = 4 , I_OPT_NONCE = 5 , I_OPT_REDIRECT_URI = 6 , I_OPT_REDIRECT_TO = 7 ,
I_OPT_CLIENT_ID = 8 , I_OPT_CLIENT_SECRET = 9 , I_OPT_ADDITIONAL_PARAMETER = 10 , I_OPT_ADDITIONAL_RESPONSE = 11 ,
I_OPT_AUTH_ENDPOINT = 12 , I_OPT_TOKEN_ENDPOINT = 13 , I_OPT_OPENID_CONFIG_ENDPOINT = 14 , I_OPT_OPENID_CONFIG = 15 ,
I_OPT_OPENID_CONFIG_STRICT = 16 , I_OPT_USERINFO_ENDPOINT = 17 , I_OPT_RESULT = 18 , I_OPT_ERROR = 19 ,
I_OPT_ERROR_DESCRIPTION = 20 , I_OPT_ERROR_URI = 21 , I_OPT_CODE = 22 , I_OPT_REFRESH_TOKEN = 23 ,
I_OPT_ACCESS_TOKEN = 24 , I_OPT_ID_TOKEN = 25 , I_OPT_AUTH_METHOD = 28 , I_OPT_TOKEN_METHOD = 29 ,
I_OPT_TOKEN_TYPE = 30 , I_OPT_EXPIRES_IN = 31 , I_OPT_EXPIRES_AT = 32 , I_OPT_USERNAME = 33 ,
I_OPT_USER_PASSWORD = 34 , I_OPT_ISSUER = 35 , I_OPT_USERINFO = 36 , I_OPT_NONCE_GENERATE = 37 ,
I_OPT_STATE_GENERATE = 38 , I_OPT_X5U_FLAGS = 39 , I_OPT_SERVER_KID = 40 , I_OPT_SERVER_ENC_ALG = 41 ,
I_OPT_SERVER_ENC = 42 , I_OPT_SERVER_JWKS_CACHE_EXPIRATION = 43 , I_OPT_CLIENT_KID = 44 , I_OPT_CLIENT_SIGN_ALG = 45 ,
I_OPT_CLIENT_ENC_ALG = 46 , I_OPT_CLIENT_ENC = 47 , I_OPT_TOKEN_JTI = 48 , I_OPT_TOKEN_JTI_GENERATE = 49 ,
I_OPT_TOKEN_EXP = 50 , I_OPT_TOKEN_TARGET = 51 , I_OPT_TOKEN_TARGET_TYPE_HINT = 52 , I_OPT_REVOCATION_ENDPOINT = 53 ,
I_OPT_INTROSPECTION_ENDPOINT = 54 , I_OPT_REGISTRATION_ENDPOINT = 55 , I_OPT_REGISTRATION_CLIENT_URI = 56 , I_OPT_DEVICE_AUTHORIZATION_ENDPOINT = 57 ,
I_OPT_DEVICE_AUTH_CODE = 58 , I_OPT_DEVICE_AUTH_USER_CODE = 59 , I_OPT_DEVICE_AUTH_VERIFICATION_URI = 60 , I_OPT_DEVICE_AUTH_VERIFICATION_URI_COMPLETE = 61 ,
I_OPT_DEVICE_AUTH_EXPIRES_IN = 62 , I_OPT_DEVICE_AUTH_INTERVAL = 63 , I_OPT_END_SESSION_ENDPOINT = 64 , I_OPT_CHECK_SESSION_IRAME = 65 ,
I_OPT_PUSHED_AUTH_REQ_ENDPOINT = 66 , I_OPT_PUSHED_AUTH_REQ_REQUIRED = 67 , I_OPT_PUSHED_AUTH_REQ_EXPIRES_IN = 68 , I_OPT_PUSHED_AUTH_REQ_URI = 69 ,
I_OPT_USE_DPOP = 70 , I_OPT_DPOP_KID = 71 , I_OPT_DECRYPT_CODE = 72 , I_OPT_DECRYPT_REFRESH_TOKEN = 73 ,
I_OPT_DECRYPT_ACCESS_TOKEN = 74 , I_OPT_DPOP_SIGN_ALG = 75 , I_OPT_HTTP_PROXY = 76 , I_OPT_TLS_KEY_FILE = 77 ,
I_OPT_TLS_CERT_FILE = 78 , I_OPT_REMOTE_CERT_FLAG = 79 , I_OPT_PKCE_CODE_VERIFIER = 80 , I_OPT_PKCE_CODE_VERIFIER_GENERATE = 81 ,
I_OPT_PKCE_METHOD = 82 , I_OPT_RESOURCE_INDICATOR = 83 , I_OPT_ACCESS_TOKEN_SIGNING_ALG = 84 , I_OPT_ACCESS_TOKEN_ENCRYPTION_ALG = 85 ,
I_OPT_ACCESS_TOKEN_ENCRYPTION_ENC = 86 , I_OPT_ID_TOKEN_SIGNING_ALG = 87 , I_OPT_ID_TOKEN_ENCRYPTION_ALG = 88 , I_OPT_ID_TOKEN_ENCRYPTION_ENC = 89 ,
I_OPT_USERINFO_SIGNING_ALG = 90 , I_OPT_USERINFO_ENCRYPTION_ALG = 91 , I_OPT_USERINFO_ENCRYPTION_ENC = 92 , I_OPT_REQUEST_OBJECT_SIGNING_ALG = 93 ,
I_OPT_REQUEST_OBJECT_ENCRYPTION_ALG = 94 , I_OPT_REQUEST_OBJECT_ENCRYPTION_ENC = 95 , I_OPT_TOKEN_ENDPOINT_SIGNING_ALG = 96 , I_OPT_TOKEN_ENDPOINT_ENCRYPTION_ALG = 97 ,
I_OPT_TOKEN_ENDPOINT_ENCRYPTION_ENC = 98 , I_OPT_CIBA_REQUEST_SIGNING_ALG = 99 , I_OPT_CIBA_REQUEST_ENCRYPTION_ALG = 100 , I_OPT_CIBA_REQUEST_ENCRYPTION_ENC = 101 ,
I_OPT_AUTH_RESPONSE_SIGNING_ALG = 102 , I_OPT_AUTH_RESPONSE_ENCRYPTION_ALG = 103 , I_OPT_AUTH_RESPONSE_ENCRYPTION_ENC = 104 , I_OPT_CIBA_ENDPOINT = 105 ,
I_OPT_CIBA_MODE = 106 , I_OPT_CIBA_USER_CODE = 107 , I_OPT_CIBA_LOGIN_HINT = 108 , I_OPT_CIBA_LOGIN_HINT_FORMAT = 109 ,
I_OPT_CIBA_LOGIN_HINT_KID = 110 , I_OPT_CIBA_BINDING_MESSAGE = 111 , I_OPT_CIBA_REQUESTED_EXPIRY = 112 , I_OPT_CIBA_CLIENT_NOTIFICATION_TOKEN = 113 ,
I_OPT_CIBA_CLIENT_NOTIFICATION_TOKEN_GENERATE = 114 , I_OPT_CIBA_ACR_VALUES = 115 , I_OPT_CIBA_ACR_VALUES_APPEND = 116 , I_OPT_CIBA_AUTH_REQ_ID = 117 ,
I_OPT_CIBA_CLIENT_NOTIFICATION_ENDPOINT = 118 , I_OPT_CIBA_AUTH_REQ_EXPIRES_IN = 119 , I_OPT_CIBA_AUTH_REQ_INTERVAL = 120 , I_OPT_FRONTCHANNEL_LOGOUT_URI = 121 ,
I_OPT_FRONTCHANNEL_LOGOUT_SESSION_REQUIRED = 122 , I_OPT_BACKCHANNEL_LOGOUT_URI = 123 , I_OPT_BACKCHANNEL_LOGOUT_SESSION_REQUIRED = 124 , I_OPT_POST_LOGOUT_REDIRECT_URI = 125 ,
I_OPT_ID_TOKEN_SID = 126 , I_OPT_SAVE_HTTP_REQUEST_RESPONSE = 127 , I_OPT_DPOP_NONCE_AS = 128 , I_OPT_DPOP_NONCE_RS = 129 ,
I_OPT_RESPONSE_MAX_BODY_SIZE = 130 , I_OPT_RESPONSE_MAX_HEADER_COUNT = 131
}

## Detailed Description

Iddawc OAuth2 client library

iddawc.h: structures and functions declarations

Copyright 2019-2022 Nicolas Mora mail@.nosp@m.babe.nosp@m.loues.nosp@m.t.or.nosp@m.g

This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; version 2.1 of the License.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU GENERAL PUBLIC LICENSE for more details.

You should have received a copy of the GNU General Public License along with this library. If not, see http://www.gnu.org/licenses/.

Constant values used as input or output

## Macro Definition Documentation

## I_AUTH_METHOD_GET

#define I_AUTH_METHOD_GET 0x00000001

auth endpoint using GET method

## I_AUTH_METHOD_JWT_ENCRYPT_PUBKEY

#define I_AUTH_METHOD_JWT_ENCRYPT_PUBKEY 0x00100000

auth endpoint using a JWT encrypted with the server public key

## I_AUTH_METHOD_JWT_ENCRYPT_SECRET

#define I_AUTH_METHOD_JWT_ENCRYPT_SECRET 0x00010000

auth endpoint using a JWT encrypted with the client secret

## I_AUTH_METHOD_JWT_SIGN_PRIVKEY

#define I_AUTH_METHOD_JWT_SIGN_PRIVKEY 0x00001000

auth endpoint using a JWT signed with the client private key

## I_AUTH_METHOD_JWT_SIGN_SECRET

#define I_AUTH_METHOD_JWT_SIGN_SECRET 0x00000100

auth endpoint using a JWT signed with the client secret

## I_AUTH_METHOD_POST

#define I_AUTH_METHOD_POST 0x00000010

auth endpoint using POST method

## I_AUTH_SIGN_ALG_MAX_LENGTH

#define I_AUTH_SIGN_ALG_MAX_LENGTH 8

Max length of a sign algorithm name.

## I_BEARER_TYPE_BODY

#define I_BEARER_TYPE_BODY 1

Bearer type body, the token will be available as a body url-encoded parameter.

## I_BEARER_TYPE_HEADER

#define I_BEARER_TYPE_HEADER 0

Bearer type header, the token will be available in the header.

## I_BEARER_TYPE_URL

#define I_BEARER_TYPE_URL 2

Bearer type url, the token will be available as a url query parameter.

## I_BODY_URL_PARAMETER

#define I_BODY_URL_PARAMETER "access_token"

## I_CIBA_LOGIN_HINT_FORMAT_ID_TOKEN

#define I_CIBA_LOGIN_HINT_FORMAT_ID_TOKEN 2

## I_CIBA_LOGIN_HINT_FORMAT_JSON

#define I_CIBA_LOGIN_HINT_FORMAT_JSON 0

## I_CIBA_LOGIN_HINT_FORMAT_JWT

#define I_CIBA_LOGIN_HINT_FORMAT_JWT 1

## I_CIBA_MODE_NONE

#define I_CIBA_MODE_NONE 0

## I_CIBA_MODE_PING

#define I_CIBA_MODE_PING 2

## I_CIBA_MODE_POLL

#define I_CIBA_MODE_POLL 1

## I_CIBA_MODE_PUSH

#define I_CIBA_MODE_PUSH 3

## I_CLAIM_ESSENTIAL_FALSE

#define I_CLAIM_ESSENTIAL_FALSE 2

Set claim essential value to false.

## I_CLAIM_ESSENTIAL_IGNORE

#define I_CLAIM_ESSENTIAL_IGNORE 3

## I_CLAIM_ESSENTIAL_NULL

#define I_CLAIM_ESSENTIAL_NULL 0

Set claim value to null.

## I_CLAIM_ESSENTIAL_TRUE

#define I_CLAIM_ESSENTIAL_TRUE 1

Set claim essential value to true.

## I_CLAIM_TARGET_ALL

#define I_CLAIM_TARGET_ALL 0

Add claim to userinfo and id_token.

## I_CLAIM_TARGET_ID_TOKEN

#define I_CLAIM_TARGET_ID_TOKEN 2

Add claim to id_token.

## I_CLAIM_TARGET_USERINFO

#define I_CLAIM_TARGET_USERINFO 1

Add claim to userinfo.

## I_CONTENT_TYPE_JWKS

#define I_CONTENT_TYPE_JWKS "application/jwk-set+json"

## I_DEFAULT_RESPONSE_MAX_BODY_SIZE

#define I_DEFAULT_RESPONSE_MAX_BODY_SIZE 4194304

## I_DEFAULT_RESPONSE_MAX_HEADER_COUNT

#define I_DEFAULT_RESPONSE_MAX_HEADER_COUNT 64

## I_ERROR

#define I_ERROR 1

Error.

## I_ERROR_MEMORY

#define I_ERROR_MEMORY 3

Memory error.

## I_ERROR_PARAM

#define I_ERROR_PARAM 2

Error in parameters.

## I_ERROR_SERVER

#define I_ERROR_SERVER 5

Server error.

## I_ERROR_UNAUTHORIZED

#define I_ERROR_UNAUTHORIZED 4

Request unauthorized.

## I_HEADER_AUTHORIZATION

#define I_HEADER_AUTHORIZATION "Authorization"

## I_HEADER_DPOP

#define I_HEADER_DPOP "DPoP"

## I_HEADER_PREFIX_BEARER

#define I_HEADER_PREFIX_BEARER "Bearer "

## I_HEADER_PREFIX_DPOP

#define I_HEADER_PREFIX_DPOP "DPoP "

## I_INTROSPECT_REVOKE_AUTH_ACCESS_TOKEN

#define I_INTROSPECT_REVOKE_AUTH_ACCESS_TOKEN 1

Introspection/Revocation - authentication using access token.

## I_INTROSPECT_REVOKE_AUTH_CLIENT_TARGET

#define I_INTROSPECT_REVOKE_AUTH_CLIENT_TARGET 2

Introspection/Revocation - authentication with client credentials.

## I_INTROSPECT_REVOKE_AUTH_NONE

#define I_INTROSPECT_REVOKE_AUTH_NONE 0

Introspection/Revocation - no authentication.

## I_OK

#define I_OK 0

Success.

## I_PKCE_METHOD_PLAIN

#define I_PKCE_METHOD_PLAIN 1

PKCE using method plain.

## I_PKCE_METHOD_S256

#define I_PKCE_METHOD_S256 2

PKCE using method SHA256.

## I_PKCE_NONE

#define I_PKCE_NONE 0

No PKCE.

## I_REMOTE_HOST_VERIFY_HOSTNAME

#define I_REMOTE_HOST_VERIFY_HOSTNAME 0x0010

Verify TLS session with hostname.

## I_REMOTE_HOST_VERIFY_PEER

#define I_REMOTE_HOST_VERIFY_PEER 0x0001

Verify TLS session with peers.

## I_REMOTE_PROXY_VERIFY_HOSTNAME

#define I_REMOTE_PROXY_VERIFY_HOSTNAME 0x1000

Verify TLS session with hostname.

## I_REMOTE_PROXY_VERIFY_PEER

#define I_REMOTE_PROXY_VERIFY_PEER 0x0100

Verify TLS session with peers.

## I_REMOTE_VERIFY_NONE

#define I_REMOTE_VERIFY_NONE 0x0000

No TLS Verification.

## I_RESPONSE_TYPE_CIBA

#define I_RESPONSE_TYPE_CIBA 0x10000000

Grant type urn:openid:params:grant-type:ciba.

## I_RESPONSE_TYPE_CLIENT_CREDENTIALS

#define I_RESPONSE_TYPE_CLIENT_CREDENTIALS 0x00010000

Grant type client_credentials.

## I_RESPONSE_TYPE_CODE

#define I_RESPONSE_TYPE_CODE 0x00000001

Response type code.

## I_RESPONSE_TYPE_DEVICE_CODE

#define I_RESPONSE_TYPE_DEVICE_CODE 0x01000000

Grant type urn:ietf:params:oauth:grant-type:device_code.

## I_RESPONSE_TYPE_ID_TOKEN

#define I_RESPONSE_TYPE_ID_TOKEN 0x00000100

Response type id_token.

## I_RESPONSE_TYPE_NONE

#define I_RESPONSE_TYPE_NONE 0x00000000

No response type.

## I_RESPONSE_TYPE_PASSWORD

#define I_RESPONSE_TYPE_PASSWORD 0x00001000

Grant type password.

## I_RESPONSE_TYPE_REFRESH_TOKEN

#define I_RESPONSE_TYPE_REFRESH_TOKEN 0x00100000

Grant type refresh_token.

## I_RESPONSE_TYPE_TOKEN

#define I_RESPONSE_TYPE_TOKEN 0x00000010

Response type token.

## I_STRICT_JWT_AT_CLAIM

#define I_STRICT_JWT_AT_CLAIM 0x00001000

Verify JWT access tokens claims values.

## I_STRICT_JWT_AT_HEADER_TYP

#define I_STRICT_JWT_AT_HEADER_TYP 0x00000100

Verify JWT access tokens header typ value.

## I_STRICT_JWT_AT_SIGNATURE

#define I_STRICT_JWT_AT_SIGNATURE 0x00000010

Verify JWT access tokens signatures.

## I_STRICT_NO

#define I_STRICT_NO 0x00000000

Do not stricly conform to openid config result.

## I_STRICT_YES

#define I_STRICT_YES 0x00000001

Stricly conform to openid config result.

## I_TOKEN_AUTH_METHOD_JWT_ENCRYPT_PUBKEY

#define I_TOKEN_AUTH_METHOD_JWT_ENCRYPT_PUBKEY 0x01000000

token endpoint using a JWT signed with the client private key and encrypted with the server public key or the client secret

## I_TOKEN_AUTH_METHOD_JWT_ENCRYPT_SECRET

#define I_TOKEN_AUTH_METHOD_JWT_ENCRYPT_SECRET 0x00100000

token endpoint using a JWT encrypted with the client secret

## I_TOKEN_AUTH_METHOD_JWT_SIGN_PRIVKEY

#define I_TOKEN_AUTH_METHOD_JWT_SIGN_PRIVKEY 0x00010000

token endpoint using a JWT signed with the client private key

## I_TOKEN_AUTH_METHOD_JWT_SIGN_SECRET

#define I_TOKEN_AUTH_METHOD_JWT_SIGN_SECRET 0x00001000

token endpoint using a JWT signed with the client secret

## I_TOKEN_AUTH_METHOD_NONE

#define I_TOKEN_AUTH_METHOD_NONE 0x00000000

token endpoint using no authentication

## I_TOKEN_AUTH_METHOD_SECRET_BASIC

#define I_TOKEN_AUTH_METHOD_SECRET_BASIC 0x00000001

token endpoint using HTTP basic auth with client_id and client password

## I_TOKEN_AUTH_METHOD_SECRET_POST

#define I_TOKEN_AUTH_METHOD_SECRET_POST 0x00000010

token endpoint using secret send in POST parameters

## I_TOKEN_AUTH_METHOD_TLS_CERTIFICATE

#define I_TOKEN_AUTH_METHOD_TLS_CERTIFICATE 0x00000100

token endpoint using TLS Certificate authentication

## I_TOKEN_TYPE_ACCESS_TOKEN

#define I_TOKEN_TYPE_ACCESS_TOKEN 0

## I_TOKEN_TYPE_ID_TOKEN

#define I_TOKEN_TYPE_ID_TOKEN 1

## I_TOKEN_TYPE_INTROSPECTION

#define I_TOKEN_TYPE_INTROSPECTION 3

## I_TOKEN_TYPE_RESPONSE_AUTH

#define I_TOKEN_TYPE_RESPONSE_AUTH 4

## I_TOKEN_TYPE_USERINFO

#define I_TOKEN_TYPE_USERINFO 2

## Enumeration Type Documentation

## i_option

enum i_option

Options available to set or get properties using i_set_int_parameter, i_set_str_parameter, i_get_int_parameter, i_get_str_parameter or i_set_parameter_list

Enumerator
I_OPT_NONE | Empty option to complete a i_set_parameter_list.
I_OPT_RESPONSE_TYPE | response_type, values available are I_RESPONSE_TYPE_CODE, I_RESPONSE_TYPE_TOKEN, I_RESPONSE_TYPE_ID_TOKEN, I_RESPONSE_TYPE_PASSWORD, I_RESPONSE_TYPE_CLIENT_CREDENTIALS and I_RESPONSE_TYPE_REFRESH_TOKEN
I_OPT_SCOPE | scope values, string, multiple scopes must be separated by a space character: "scope1 openid"
I_OPT_SCOPE_APPEND | append another scope value to the scope list, string
I_OPT_STATE | state value, string
I_OPT_NONCE | nonce value, string
I_OPT_REDIRECT_URI | redirect_uri, string
I_OPT_REDIRECT_TO | url where the oauth2 is redirected to after a /auth request
I_OPT_CLIENT_ID | client_id, string
I_OPT_CLIENT_SECRET | client secret, string
I_OPT_ADDITIONAL_PARAMETER | use this option to pass any additional parameter value in the /auth request
I_OPT_ADDITIONAL_RESPONSE |
I_OPT_AUTH_ENDPOINT | absolute url for the auth endpoint, string
I_OPT_TOKEN_ENDPOINT | absolute url for the token endpoint, string
I_OPT_OPENID_CONFIG_ENDPOINT | absolute url for the .well-known/openid-configuration endpoint, string
I_OPT_OPENID_CONFIG | result of the .well-known/openid-configuration
I_OPT_OPENID_CONFIG_STRICT | must the .well-known/openid-configuration parameters be strictly verified? After i_init_session(), the value is I_STRICT_NO|I_STRICT_JWT_AT_SIGNATURE|I_STRICT_JWT_AT_HEADER_TYP|I_STRICT_JWT_AT_CLAIM, if the function i_get_openid_config() is used, then the flag I_STRICT_NO will be replaced by I_STRICT_YES, the others will remain
I_OPT_USERINFO_ENDPOINT | absolute url for the userinfo endpoint or equivalent, string
I_OPT_RESULT | result of a request
I_OPT_ERROR | error value of a failed request, string
I_OPT_ERROR_DESCRIPTION | error description of a failed request, string
I_OPT_ERROR_URI | error uri of a failed request, string
I_OPT_CODE | code given after a succesfull auth request using the response_type I_RESPONSE_TYPE_CODE
I_OPT_REFRESH_TOKEN | refresh token given after a succesfull token request using the proper response_type
I_OPT_ACCESS_TOKEN | access token given after a succesfull auth or token request using the proper response_type
I_OPT_ID_TOKEN | id_token given after a succesfull auth or token request using the proper response_type

I_OPT_AUTH_METHOD

Authentication method to use with the auth endpoint, values available are I_AUTH_METHOD_GET, I_AUTH_METHOD_POST, I_AUTH_METHOD_JWT_SIGN_SECRET, I_AUTH_METHOD_JWT_SIGN_PRIVKEY, I_AUTH_METHOD_JWT_ENCRYPT_SECRET or I_AUTH_METHOD_JWT_ENCRYPT_PUBKEY, values I_AUTH_METHOD_JWT_SIGN_SECRET, I_AUTH_METHOD_JWT_SIGN_PRIVKEY, I_AUTH_METHOD_JWT_ENCRYPT_SECRET or I_AUTH_METHOD_JWT_ENCRYPT_PUBKEY can be combined with I_AUTH_METHOD_GET or I_AUTH_METHOD_POST.

I_OPT_TOKEN_METHOD | Authentication method to use with the token endpoint, values available are I_TOKEN_AUTH_METHOD_SECRET_BASIC, I_TOKEN_AUTH_METHOD_SECRET_POST, I_TOKEN_AUTH_METHOD_SECRET_JWT, I_TOKEN_AUTH_METHOD_PRIVATE_JWT, I_TOKEN_AUTH_METHOD_NONE.
I_OPT_TOKEN_TYPE | token_type value after a succesfull auth or token request, string
I_OPT_EXPIRES_IN | expires_in value after a succesfull auth or token request, integer
I_OPT_EXPIRES_AT | expires_at value after a succesfull auth or token request, time_t
I_OPT_USERNAME | username for password response_types, string
I_OPT_USER_PASSWORD | password for password response_types, string
I_OPT_ISSUER | issuer value, string
I_OPT_USERINFO | userinfo result, string
I_OPT_NONCE_GENERATE | Generate a random nonce value.
I_OPT_STATE_GENERATE | Generate a random state value.
I_OPT_X5U_FLAGS | x5u flage to apply when JWK used have a x5u property, values available are R_FLAG_IGNORE_SERVER_CERTIFICATE: ignrore if web server certificate is invalid, R_FLAG_FOLLOW_REDIRECT: follow redirections if necessary, R_FLAG_IGNORE_REMOTE: do not download remote key
I_OPT_SERVER_KID | key id to use if multiple jwk are available on the server, string
I_OPT_SERVER_ENC_ALG | Key management algorithm to use when sending encrypted messages to the AS.
I_OPT_SERVER_ENC | Encryption algorithm to use when sending encrypted messages to the AS.
I_OPT_SERVER_JWKS_CACHE_EXPIRATION | Cache expiration for the server JWKS.
I_OPT_CLIENT_KID | key id to use if multiple jwk are available on the client, string
I_OPT_CLIENT_SIGN_ALG | signature algorithm to use when the client signs a request in a JWT, values available are 'none', 'HS256', 'HS384', 'HS512', 'RS256', 'RS384', 'RS512', 'ES256', 'ES384', 'ES512', 'PS256', 'PS384', 'PS512', 'EDDSA'

I_OPT_CLIENT_ENC_ALG

key encryption algorithm to use when the client encrypts a request in a JWT, values available are 'RSA1_5', 'RSA-OAEP', 'RSA-OAEP-256', 'A128KW', 'A192KW', 'A256KW', 'DIR', 'ECDH-ES', 'ECDH-ES+A128KW', 'ECDH-ES+A192KW', 'ECDH-ES+A256KW', 'A128GCMKW', 'A192GCMKW', 'A256GCMKW', 'PBES2-HS256+A128KW', 'PBES2-HS384+A192KW or 'PBES2-HS512+A256KW', warning: some algorithm may be unavailable depending on Rhonabwy version used

I_OPT_CLIENT_ENC | data encryption algorithm to use when the client encrypts a request in a JWT, values available are 'A128CBC-HS256,' 'A192CBC-HS384,' 'A256CBC-HS512,' 'A128GCM,' 'A192GCM,' 'A256GCM,' warning: some algorithm may be unavailable depending on Rhonabwy version used
I_OPT_TOKEN_JTI | jti value, string
I_OPT_TOKEN_JTI_GENERATE | Generate a random jti value.
I_OPT_TOKEN_EXP | JWT token request expiration time in seconds.
I_OPT_TOKEN_TARGET | access_token which is the target of a revocation or an introspection, string
I_OPT_TOKEN_TARGET_TYPE_HINT | access_token which is the target of a revocation or an introspection, string
I_OPT_REVOCATION_ENDPOINT | absolute url for the revocation endpoint, string
I_OPT_INTROSPECTION_ENDPOINT | absolute url for the introspection endpoint, string
I_OPT_REGISTRATION_ENDPOINT | absolute url for the client registration endpoint, string
I_OPT_REGISTRATION_CLIENT_URI | absolute url for the client registration management endpoint, string
I_OPT_DEVICE_AUTHORIZATION_ENDPOINT | absolute url for the pushed authorization endpoint, string
I_OPT_DEVICE_AUTH_CODE | device authorization code sent by the AS
I_OPT_DEVICE_AUTH_USER_CODE | device authorization user code sent by the AS
I_OPT_DEVICE_AUTH_VERIFICATION_URI | device authorization verification URI sent by the AS
I_OPT_DEVICE_AUTH_VERIFICATION_URI_COMPLETE | device authorization verification URI complete sent by the AS
I_OPT_DEVICE_AUTH_EXPIRES_IN | device authorization code expiration sent by the AS
I_OPT_DEVICE_AUTH_INTERVAL | device authorization code verification interval sent by the AS
I_OPT_END_SESSION_ENDPOINT | absolute url for the end session endpoint, string
I_OPT_CHECK_SESSION_IRAME | absolute url for the check session iframe, string
I_OPT_PUSHED_AUTH_REQ_ENDPOINT | absolute url for the pushed authoization endpoint, string
I_OPT_PUSHED_AUTH_REQ_REQUIRED | are pushed authorization requests required, boolean
I_OPT_PUSHED_AUTH_REQ_EXPIRES_IN | pushed authorization request expiration time in seconds
I_OPT_PUSHED_AUTH_REQ_URI | request_uri sent by the par endpoint result, string
I_OPT_USE_DPOP | Generate and use a DPoP when accessing endpoints userinfo, introspection and revocation.
I_OPT_DPOP_KID | key id to use when signing a DPoP
I_OPT_DECRYPT_CODE | Decrypt code when received by the AS as a JWE.
I_OPT_DECRYPT_REFRESH_TOKEN | Decrypt refresh token when received by the AS as a JWE.
I_OPT_DECRYPT_ACCESS_TOKEN | Decrypt access token when received by the AS as a JWE.
I_OPT_DPOP_SIGN_ALG | signature algorithm to use when the client signs a DPoP, values available are 'none', 'HS256', 'HS384', 'HS512', 'RS256', 'RS384', 'RS512', 'ES256', 'ES384', 'ES512', 'PS256', 'PS384', 'PS512', 'EDDSA'
I_OPT_HTTP_PROXY | HTTP proxy address to use for outgoing connections.
I_OPT_TLS_KEY_FILE | Path to the private key PEM file to use in a TLS authentication.
I_OPT_TLS_CERT_FILE | Path to the certificate PEM file to use in a TLS authentication.
I_OPT_REMOTE_CERT_FLAG | Flags to use with remote connexions to ignore incorrect certificates, flags available are I_REMOTE_HOST_VERIFY_PEER, I_REMOTE_HOST_VERIFY_HOSTNAME, I_REMOTE_PROXY_VERIFY_PEER, I_REMOTE_PROXY_VERIFY_HOSTNAME, I_REMOTE_VERIFY_NONE, default is I_REMOTE_HOST_VERIFY_PEER|I_REMOTE_HOST_VERIFY_HOSTNAME|I_REMOTE_PROXY_VERIFY_PEER|I_REMOTE_PROXY_VERIFY_HOSTNAME.
I_OPT_PKCE_CODE_VERIFIER | PKCE code verifier, must be a string of 43 characters minumum only using the characters [A-Z] / [a-z] / [0-9] / "-" / "." / "_" / "~".
I_OPT_PKCE_CODE_VERIFIER_GENERATE | Generate a random PKCE code verifier.
I_OPT_PKCE_METHOD | PKCE method to use, values available are I_PKCE_NONE (no PKCE, default), I_PKCE_METHOD_PLAIN or I_PKCE_METHOD_S256.
I_OPT_RESOURCE_INDICATOR | Resource indicator as detailed in the RFC 8707.
I_OPT_ACCESS_TOKEN_SIGNING_ALG | registration value access_token_signing_alg to specify a signing algorithm for access_token
I_OPT_ACCESS_TOKEN_ENCRYPTION_ALG | registration value access_token_encryption_alg to specify a key management algorithm for access_token
I_OPT_ACCESS_TOKEN_ENCRYPTION_ENC | registration value access_token_encryption_enc to specify an encryption algorithm for access_token
I_OPT_ID_TOKEN_SIGNING_ALG | registration value id_token_signing_alg to specify a signing algorithm for id_token
I_OPT_ID_TOKEN_ENCRYPTION_ALG | registration value id_token_encryption_alg to specify a key management algorithm for id_token
I_OPT_ID_TOKEN_ENCRYPTION_ENC | registration value id_token_encryption_enc to specify an encryption algorithm for id_token
I_OPT_USERINFO_SIGNING_ALG | registration value userinfo_signing_alg to specify a signing algorithm for userinfo
I_OPT_USERINFO_ENCRYPTION_ALG | registration value userinfo_encryption_alg to specify a key management algorithm for userinfo
I_OPT_USERINFO_ENCRYPTION_ENC | registration value userinfo_encryption_enc to specify an encryption algorithm for userinfo
I_OPT_REQUEST_OBJECT_SIGNING_ALG | registration value request_object_signing_alg to specify a signing algorithm for request_object
I_OPT_REQUEST_OBJECT_ENCRYPTION_ALG | registration value request_object_encryption_alg to specify a key management algorithm for request_object
I_OPT_REQUEST_OBJECT_ENCRYPTION_ENC | registration value request_object_encryption_enc to specify an encryption algorithm for request_object
I_OPT_TOKEN_ENDPOINT_SIGNING_ALG | registration value token_endpoint_signing_alg to specify a signing algorithm for token_endpoint
I_OPT_TOKEN_ENDPOINT_ENCRYPTION_ALG | registration value token_endpoint_encryption_alg to specify a key management algorithm for token_endpoint
I_OPT_TOKEN_ENDPOINT_ENCRYPTION_ENC | registration value token_endpoint_encryption_enc to specify an encryption algorithm for token_endpoint
I_OPT_CIBA_REQUEST_SIGNING_ALG | registration value ciba_request_signing_alg to specify a signing algorithm for ciba_request
I_OPT_CIBA_REQUEST_ENCRYPTION_ALG | registration value ciba_request_encryption_alg to specify a key management algorithm for ciba_request
I_OPT_CIBA_REQUEST_ENCRYPTION_ENC | registration value ciba_request_encryption_enc to specify an encryption algorithm for ciba_request
I_OPT_AUTH_RESPONSE_SIGNING_ALG | registration value auth_response_signing_alg to specify a signing algorithm for auth_response
I_OPT_AUTH_RESPONSE_ENCRYPTION_ALG | registration value auth_response_encryption_alg to specify a key management algorithm for auth_response
I_OPT_AUTH_RESPONSE_ENCRYPTION_ENC | registration value auth_response_encryption_enc to specify an encryption algorithm for auth_response
I_OPT_CIBA_ENDPOINT | absolute url for the CIBA endpoint or equivalent, string
I_OPT_CIBA_MODE | backchannel token delivery mode, values available are I_CIBA_MODE_NONE, I_CIBA_MODE_POLL, I_CIBA_MODE_PING and I_CIBA_MODE_PUSH
I_OPT_CIBA_USER_CODE | CIBA user code to specify in the CIBA request, string, optional.
I_OPT_CIBA_LOGIN_HINT | CIBA login_hint value, mandatory on CIBA requests.
I_OPT_CIBA_LOGIN_HINT_FORMAT | CIBA login_hint format, values available are I_CIBA_LOGIN_HINT_FORMAT_JSON, I_CIBA_LOGIN_HINT_FORMAT_JWT or I_CIBA_LOGIN_HINT_FORMAT_ID_TOKEN.
I_OPT_CIBA_LOGIN_HINT_KID | key id to use to sign CIBA requests or login_hint_token if multiple jwk are available on the client, string
I_OPT_CIBA_BINDING_MESSAGE | CIBA binding message to specify in the CIBA request, string, optional.
I_OPT_CIBA_REQUESTED_EXPIRY | CIBA binding message to specify in the CIBA request, string, optional.
I_OPT_CIBA_CLIENT_NOTIFICATION_TOKEN | client_notification_token value to use on CIBA requests, string, mandatory if mode is ping or push
I_OPT_CIBA_CLIENT_NOTIFICATION_TOKEN_GENERATE | Generate a random client_notification_token of the specified length.
I_OPT_CIBA_ACR_VALUES | ACR values that the OpenID Provider is being requested to use for processing this Authentication Request.
I_OPT_CIBA_ACR_VALUES_APPEND | append another ACR value to the ACR values list, string
I_OPT_CIBA_AUTH_REQ_ID | auth_req_id value received by the server on succesfull request
I_OPT_CIBA_CLIENT_NOTIFICATION_ENDPOINT | backchannel_client_notification_endpoint value to specify the url for ping or push modes
I_OPT_CIBA_AUTH_REQ_EXPIRES_IN | expiration of the request in seconds received by the server on succesfull request
I_OPT_CIBA_AUTH_REQ_INTERVAL | Interval to poll token endpoint on poll mode in seconds.
I_OPT_FRONTCHANNEL_LOGOUT_URI | Frontchannel logout URI.
I_OPT_FRONTCHANNEL_LOGOUT_SESSION_REQUIRED | Frontchannel logout session required.
I_OPT_BACKCHANNEL_LOGOUT_URI | Backchannel logout URI.
I_OPT_BACKCHANNEL_LOGOUT_SESSION_REQUIRED | Backchannel logout session required.
I_OPT_POST_LOGOUT_REDIRECT_URI | Post logout redirect URI.
I_OPT_ID_TOKEN_SID | ID_Token SID.
I_OPT_SAVE_HTTP_REQUEST_RESPONSE | Save HTTP request and response.
I_OPT_DPOP_NONCE_AS | DPoP Nonce for the AS.
I_OPT_DPOP_NONCE_RS | DPoP Nonce for the RS.
I_OPT_RESPONSE_MAX_BODY_SIZE | Maximum response size allowed.
I_OPT_RESPONSE_MAX_HEADER_COUNT | Maximum response header elements allowed.