LassoWsseUsernameToken

LassoWsseUsernameToken

Synopsis

enum                LassoWsseUsernameTokenPasswordType;
struct              LassoWsseUsernameToken;
LassoWsseUsernameToken * lasso_wsse_username_token_new  (void);
void                lasso_wsse_username_token_reset_nonce
                                                        (LassoWsseUsernameToken *wsse_username_token);
void                lasso_wsse_username_token_set_password_kind
                                                        (LassoWsseUsernameToken *wsse_username_token,
                                                         LassoWsseUsernameTokenPasswordType password_type);
lasso_error_t       lasso_wsse_username_token_set_password
                                                        (LassoWsseUsernameToken *wsse_username_token,
                                                         char *password);
lasso_error_t       lasso_wsse_username_token_check_password
                                                        (LassoWsseUsernameToken *wsse_username_token,
                                                         char *password);
guchar *            lasso_wsse_username_token_derive_key
                                                        (LassoWsseUsernameToken *wsse_username_token,
                                                         char *password);

Description

Transmit username and password credential as a WS-Security token. The password can be transmitted as cleartext or using a digest mode. It also allows to derive encryption and HMAC signing keys.

Details

enum LassoWsseUsernameTokenPasswordType

typedef enum {
	LASSO_WSSE_USERNAME_TOKEN_PASSWORD_TYPE_UNKNOWN,
	LASSO_WSSE_USERNAME_TOKEN_PASSWORD_TYPE_TEXT,
	LASSO_WSSE_USERNAME_TOKEN_PASSWORD_TYPE_DIGEST,
	LASSO_WSSE_USERNAME_TOKEN_PASSWORD_TYPE_LAST
} LassoWsseUsernameTokenPasswordType;

struct LassoWsseUsernameToken

struct LassoWsseUsernameToken {
	LassoNode parent;

	char *Id;
	char *Username;
	char *Nonce;
	char *Salt;
	char *Created;
	int Iteration;
	GHashTable *attributes;
};

LassoNode parent;

char *Id;

the identifier of the UsernameToken

char *Username;

the username

char *Nonce;

a nonce used to compute the digest of the password

char *Salt;

the salt for generating derived key

char *Created;

the timestamp for the generation of the token, also used in the digest of the password

int Iteration;

how many times to apply SHA1 for generating derivated key

GHashTable *attributes;


lasso_wsse_username_token_new ()

LassoWsseUsernameToken * lasso_wsse_username_token_new  (void);

lasso_wsse_username_token_reset_nonce ()

void                lasso_wsse_username_token_reset_nonce
                                                        (LassoWsseUsernameToken *wsse_username_token);

Generate a random nonce.

wsse_username_token :

a LassoWsseUsernameToken object

lasso_wsse_username_token_set_password_kind ()

void                lasso_wsse_username_token_set_password_kind
                                                        (LassoWsseUsernameToken *wsse_username_token,
                                                         LassoWsseUsernameTokenPasswordType password_type);

Set the way to transmit password, that is either cleartext or digest.

wsse_username_token :

a LassoWsseUsernameToken object

password_type :

a LassoWsseUsernameTokenPasswordType enumeration

lasso_wsse_username_token_set_password ()

lasso_error_t       lasso_wsse_username_token_set_password
                                                        (LassoWsseUsernameToken *wsse_username_token,
                                                         char *password);

Set the password using the given UTF-8 string. If password kind is digest, compute the digest SHA1(nonce + created + password), convert to Base64 and set it as the password. If nonce or created are NULL, the empty string is used.

wsse_username_token :

a LassoWsseUsernameToken object

password :

an UTF-8 string

Returns :

0 if successfull, an error code otherwise.

lasso_wsse_username_token_check_password ()

lasso_error_t       lasso_wsse_username_token_check_password
                                                        (LassoWsseUsernameToken *wsse_username_token,
                                                         char *password);

lasso_wsse_username_token_derive_key ()

guchar *            lasso_wsse_username_token_derive_key
                                                        (LassoWsseUsernameToken *wsse_username_token,
                                                         char *password);

Generate a derived 128bit key using the password and setting from the UsernameToken.

wsse_username_token :

a LassoWsseUsernameToken object

password :

the known password

Returns :

a 20 byte octet string.