Lines Matching refs:token
85 * parse an RxKAD type XDR format token
92 struct rxrpc_key_token *token, **pptoken;
110 plen = sizeof(*token) + sizeof(*token->kad) + tktlen;
113 plen -= sizeof(*token);
114 token = kzalloc(sizeof(*token), GFP_KERNEL);
115 if (!token)
118 token->kad = kzalloc(plen, GFP_KERNEL);
119 if (!token->kad) {
120 kfree(token);
124 token->security_index = RXRPC_SECURITY_RXKAD;
125 token->kad->ticket_len = tktlen;
126 token->kad->vice_id = ntohl(xdr[0]);
127 token->kad->kvno = ntohl(xdr[1]);
128 token->kad->start = ntohl(xdr[4]);
129 token->kad->expiry = ntohl(xdr[5]);
130 token->kad->primary_flag = ntohl(xdr[6]);
131 memcpy(&token->kad->session_key, &xdr[2], 8);
132 memcpy(&token->kad->ticket, &xdr[8], tktlen);
134 _debug("SCIX: %u", token->security_index);
135 _debug("TLEN: %u", token->kad->ticket_len);
136 _debug("EXPY: %x", token->kad->expiry);
137 _debug("KVNO: %u", token->kad->kvno);
138 _debug("PRIM: %u", token->kad->primary_flag);
140 token->kad->session_key[0], token->kad->session_key[1],
141 token->kad->session_key[2], token->kad->session_key[3],
142 token->kad->session_key[4], token->kad->session_key[5],
143 token->kad->session_key[6], token->kad->session_key[7]);
144 if (token->kad->ticket_len >= 8)
146 token->kad->ticket[0], token->kad->ticket[1],
147 token->kad->ticket[2], token->kad->ticket[3],
148 token->kad->ticket[4], token->kad->ticket[5],
149 token->kad->ticket[6], token->kad->ticket[7]);
159 *pptoken = token;
160 expiry = rxrpc_u32_to_time64(token->kad->expiry);
186 * free up an RxK5 token
426 * parse an RxK5 type XDR format token
433 struct rxrpc_key_token *token, **pptoken;
443 /* reserve some payload space for this subkey - the length of the token
447 token = kzalloc(sizeof(*token), GFP_KERNEL);
448 if (!token)
453 kfree(token);
457 token->security_index = RXRPC_SECURITY_RXK5;
458 token->k5 = rxk5;
536 *pptoken = token;
537 expiry = rxrpc_u32_to_time64(token->k5->endtime);
548 kfree(token);
559 const __be32 *xdr = prep->data, *token;
603 /* get the token count */
612 /* check each token wrapper */
613 token = xdr;
621 _debug("token: [%x/%zx] %x", toklen, datalen, sec_ix);
638 xdr = token;
640 token = xdr + ((toklen + 3) >> 2);
644 _debug("TOKEN type=%u [%p-%p]", sec_ix, xdr, token);
695 struct rxrpc_key_token *token, **pp;
757 plen = sizeof(*token->kad) + v1->ticket_length;
758 prep->quotalen = plen + sizeof(*token);
761 token = kzalloc(sizeof(*token), GFP_KERNEL);
762 if (!token)
764 token->kad = kzalloc(plen, GFP_KERNEL);
765 if (!token->kad)
768 token->security_index = RXRPC_SECURITY_RXKAD;
769 token->kad->ticket_len = v1->ticket_length;
770 token->kad->expiry = v1->expiry;
771 token->kad->kvno = v1->kvno;
772 memcpy(&token->kad->session_key, &v1->session_key, 8);
773 memcpy(&token->kad->ticket, v1->ticket, v1->ticket_length);
782 *pp = token;
783 expiry = rxrpc_u32_to_time64(token->kad->expiry);
786 token = NULL;
790 kfree(token);
796 * Free token list.
798 static void rxrpc_free_token_list(struct rxrpc_key_token *token)
802 for (; token; token = next) {
803 next = token->next;
804 switch (token->security_index) {
806 kfree(token->kad);
809 if (token->k5)
810 rxrpc_rxk5_free(token->k5);
813 pr_err("Unknown token type %x on rxrpc key\n",
814 token->security_index);
818 kfree(token);
1046 const struct rxrpc_key_token *token;
1067 size += 1 * 4; /* token count */
1070 for (token = key->payload.data[0]; token; token = token->next) {
1073 switch (token->security_index) {
1077 toksize += RND(token->kad->ticket_len);
1081 princ = &token->k5->client;
1087 princ = &token->k5->server;
1093 toksize += 8 + RND(token->k5->session.data_len);
1097 toksize += 4 + token->k5->n_addresses * 8;
1098 for (loop = 0; loop < token->k5->n_addresses; loop++)
1099 toksize += RND(token->k5->addresses[loop].data_len);
1101 toksize += 4 + RND(token->k5->ticket_len);
1102 toksize += 4 + RND(token->k5->ticket2_len);
1104 toksize += 4 + token->k5->n_authdata * 8;
1105 for (loop = 0; loop < token->k5->n_authdata; loop++)
1106 toksize += RND(token->k5->authdata[loop].data_len);
1110 pr_err("Unsupported key token type (%u)\n",
1111 token->security_index);
1115 _debug("token[%u]: toksize=%u", ntoks, toksize);
1119 size += toksize + 4; /* each token has a length word */
1167 for (token = key->payload.data[0]; token; token = token->next) {
1171 ENCODE(token->security_index);
1173 switch (token->security_index) {
1175 ENCODE(token->kad->vice_id);
1176 ENCODE(token->kad->kvno);
1177 ENCODE_BYTES(8, token->kad->session_key);
1178 ENCODE(token->kad->start);
1179 ENCODE(token->kad->expiry);
1180 ENCODE(token->kad->primary_flag);
1181 ENCODE_DATA(token->kad->ticket_len, token->kad->ticket);
1185 princ = &token->k5->client;
1191 princ = &token->k5->server;
1197 ENCODE(token->k5->session.tag);
1198 ENCODE_DATA(token->k5->session.data_len,
1199 token->k5->session.data);
1201 ENCODE64(token->k5->authtime);
1202 ENCODE64(token->k5->starttime);
1203 ENCODE64(token->k5->endtime);
1204 ENCODE64(token->k5->renew_till);
1205 ENCODE(token->k5->is_skey);
1206 ENCODE(token->k5->flags);
1208 ENCODE(token->k5->n_addresses);
1209 for (loop = 0; loop < token->k5->n_addresses; loop++) {
1210 ENCODE(token->k5->addresses[loop].tag);
1211 ENCODE_DATA(token->k5->addresses[loop].data_len,
1212 token->k5->addresses[loop].data);
1215 ENCODE_DATA(token->k5->ticket_len, token->k5->ticket);
1216 ENCODE_DATA(token->k5->ticket2_len, token->k5->ticket2);
1218 ENCODE(token->k5->n_authdata);
1219 for (loop = 0; loop < token->k5->n_authdata; loop++) {
1220 ENCODE(token->k5->authdata[loop].tag);
1221 ENCODE_DATA(token->k5->authdata[loop].data_len,
1222 token->k5->authdata[loop].data);
1227 pr_err("Unsupported key token type (%u)\n",
1228 token->security_index);