- if ((len-=1) < 0)
- return(G_BAD_TOK_HEADER);
- if (*buf++ != 0x60)
- return(G_BAD_TOK_HEADER);
-
- if ((seqsize = der_read_length(&buf, &len)) < 0)
- return(G_BAD_TOK_HEADER);
-
- if ((len-=1) < 0)
- return(G_BAD_TOK_HEADER);
- if (*buf++ != 0x06)
- return(G_BAD_TOK_HEADER);
-
- if ((len-=1) < 0)
- return(G_BAD_TOK_HEADER);
- mech->len = *buf++;
-
- if ((len-=mech->len) < 0)
- return(G_BAD_TOK_HEADER);
- if (!(mech->data = kmalloc(mech->len, GFP_KERNEL)))
- return(G_BUFFER_ALLOC);
- memcpy(mech->data, buf, mech->len);
-
- return ret;
-}