1c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru/* 2c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * linux/include/linux/sunrpc/gss_asn1.h 3c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * 4c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * minimal asn1 for generic encoding/decoding of gss tokens 5c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * 6c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * Adapted from MIT Kerberos 5-1.2.1 lib/include/krb5.h, 7c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * lib/gssapi/krb5/gssapiP_krb5.h, and others 8c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * 9c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * Copyright (c) 2000 The Regents of the University of Michigan. 10c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * All rights reserved. 11c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * 12c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * Andy Adamson <andros@umich.edu> 13c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru */ 14c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 15c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru/* 16c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * Copyright 1995 by the Massachusetts Institute of Technology. 17c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * All Rights Reserved. 18c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * 19c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * Export of this software from the United States of America may 20c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * require a specific license from the United States Government. 21c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * It is the responsibility of any person or organization contemplating 22c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * export to obtain such a license before exporting. 23c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * 24c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * WITHIN THAT CONSTRAINT, permission to use, copy, modify, and 25c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * distribute this software and its documentation for any purpose and 26c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * without fee is hereby granted, provided that the above copyright 27c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * notice appear in all copies and that both that copyright notice and 28c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * this permission notice appear in supporting documentation, and that 29c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * the name of M.I.T. not be used in advertising or publicity pertaining 30c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * to distribution of the software without specific, written prior 31c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * permission. Furthermore if you modify this software you must label 32c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * your software as modified software and not distribute it in such a 33c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * fashion that it might be confused with the original M.I.T. software. 34c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * M.I.T. makes no representations about the suitability of 35c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * this software for any purpose. It is provided "as is" without express 36c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * or implied warranty. 37c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * 38c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru */ 39c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 40c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 41c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#include <linux/sunrpc/gss_api.h> 42c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 43c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define SIZEOF_INT 4 44c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 45c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru/* from gssapi_err_generic.h */ 46c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define G_BAD_SERVICE_NAME (-2045022976L) 47c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define G_BAD_STRING_UID (-2045022975L) 48c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define G_NOUSER (-2045022974L) 49c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define G_VALIDATE_FAILED (-2045022973L) 50c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define G_BUFFER_ALLOC (-2045022972L) 51c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define G_BAD_MSG_CTX (-2045022971L) 52c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define G_WRONG_SIZE (-2045022970L) 53c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define G_BAD_USAGE (-2045022969L) 54c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define G_UNKNOWN_QOP (-2045022968L) 55c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define G_NO_HOSTNAME (-2045022967L) 56c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define G_BAD_HOSTNAME (-2045022966L) 57c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define G_WRONG_MECH (-2045022965L) 58c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define G_BAD_TOK_HEADER (-2045022964L) 59c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define G_BAD_DIRECTION (-2045022963L) 60c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define G_TOK_TRUNC (-2045022962L) 61c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define G_REFLECT (-2045022961L) 62c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define G_WRONG_TOKID (-2045022960L) 63c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 64c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define g_OID_equal(o1,o2) \ 65c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru (((o1)->len == (o2)->len) && \ 66c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru (memcmp((o1)->data,(o2)->data,(int) (o1)->len) == 0)) 67c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 68c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queruu32 g_verify_token_header( 69c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct xdr_netobj *mech, 70c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru int *body_size, 71c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru unsigned char **buf_in, 72c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru int toksize); 73c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 74c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queruint g_token_size( 75c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct xdr_netobj *mech, 76c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru unsigned int body_size); 77c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 78c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queruvoid g_make_token_header( 79c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct xdr_netobj *mech, 80c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru int body_size, 81c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru unsigned char **buf); 82