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