Lines Matching refs:tok

28 enum sss_authtok_type sss_authtok_get_type(struct sss_auth_token *tok)
30 return tok->type;
33 size_t sss_authtok_get_size(struct sss_auth_token *tok)
35 if (!tok) {
38 switch (tok->type) {
44 return tok->length;
52 uint8_t *sss_authtok_get_data(struct sss_auth_token *tok)
54 if (!tok) {
57 return tok->data;
60 errno_t sss_authtok_get_password(struct sss_auth_token *tok,
63 if (!tok) {
66 switch (tok->type) {
70 *pwd = (const char *)tok->data;
72 *len = tok->length - 1;
85 errno_t sss_authtok_get_ccfile(struct sss_auth_token *tok,
88 if (!tok) {
91 switch (tok->type) {
95 *ccfile = (const char *)tok->data;
97 *len = tok->length - 1;
110 static errno_t sss_authtok_set_string(struct sss_auth_token *tok,
130 tok->data = talloc_named(tok, size, "%s", context_name);
131 if (!tok->data) {
134 memcpy(tok->data, str, len);
135 tok->data[len] = '\0';
136 tok->type = type;
137 tok->length = size;
143 void sss_authtok_set_empty(struct sss_auth_token *tok)
145 if (!tok) {
148 switch (tok->type) {
154 safezero(tok->data, tok->length);
161 tok->type = SSS_AUTHTOK_TYPE_EMPTY;
162 talloc_zfree(tok->data);
163 tok->length = 0;
166 errno_t sss_authtok_set_password(struct sss_auth_token *tok,
169 sss_authtok_set_empty(tok);
171 return sss_authtok_set_string(tok, SSS_AUTHTOK_TYPE_PASSWORD,
175 errno_t sss_authtok_set_ccfile(struct sss_auth_token *tok,
178 sss_authtok_set_empty(tok);
180 return sss_authtok_set_string(tok, SSS_AUTHTOK_TYPE_CCFILE,
184 static errno_t sss_authtok_set_2fa_from_blob(struct sss_auth_token *tok,
187 errno_t sss_authtok_set(struct sss_auth_token *tok,
193 return sss_authtok_set_password(tok, (const char *)data, len);
195 return sss_authtok_set_ccfile(tok, (const char *)data, len);
197 return sss_authtok_set_2fa_from_blob(tok, data, len);
199 return sss_authtok_set_sc_pin(tok, (const char*)data, len);
201 sss_authtok_set_sc_keypad(tok);
204 sss_authtok_set_empty(tok);
246 void sss_authtok_wipe_password(struct sss_auth_token *tok)
248 if (!tok || tok->type != SSS_AUTHTOK_TYPE_PASSWORD) {
252 safezero(tok->data, tok->length);
307 static errno_t sss_authtok_set_2fa_from_blob(struct sss_auth_token *tok,
331 ret = sss_authtok_set_2fa(tok, fa1, fa1_len, fa2, fa2_len);
342 sss_authtok_set_empty(tok);
348 errno_t sss_authtok_get_2fa(struct sss_auth_token *tok,
355 if (tok->type != SSS_AUTHTOK_TYPE_2FA) {
356 return (tok->type == SSS_AUTHTOK_TYPE_EMPTY) ? ENOENT : EACCES;
359 if (tok->length < 2 * sizeof(uint32_t)) {
365 SAFEALIGN_COPY_UINT32(&tmp_uint32_t, tok->data, &c);
367 SAFEALIGN_COPY_UINT32(&tmp_uint32_t, tok->data + c, &c);
371 || tok->length != 2 * sizeof(uint32_t) + *fa1_len + *fa2_len + 2) {
376 if (tok->data[c + *fa1_len] != '\0'
377 || tok->data[c + *fa1_len + 1 + *fa2_len] != '\0') {
382 *fa1 = (const char *) tok->data + c;
383 *fa2 = (const char *) tok->data + c + *fa1_len + 1;
388 errno_t sss_authtok_set_2fa(struct sss_auth_token *tok,
395 if (tok == NULL) {
399 sss_authtok_set_empty(tok);
409 tok->data = talloc_size(tok, needed_size);
410 if (tok->data == NULL) {
415 ret = sss_auth_pack_2fa_blob(fa1, fa1_len, fa2, fa2_len, tok->data,
418 talloc_free(tok->data);
422 tok->length = needed_size;
423 tok->type = SSS_AUTHTOK_TYPE_2FA;
428 errno_t sss_authtok_set_sc_pin(struct sss_auth_token *tok, const char *pin,
431 if (tok == NULL) {
438 sss_authtok_set_empty(tok);
440 return sss_authtok_set_string(tok, SSS_AUTHTOK_TYPE_SC_PIN,
444 errno_t sss_authtok_get_sc_pin(struct sss_auth_token *tok, const char **pin,
447 if (!tok) {
450 switch (tok->type) {
454 *pin = (const char *)tok->data;
456 *len = tok->length - 1;
469 void sss_authtok_set_sc_keypad(struct sss_auth_token *tok)
471 if (!tok) {
474 sss_authtok_set_empty(tok);
476 tok->type = SSS_AUTHTOK_TYPE_SC_KEYPAD;