~ubuntu-branches/ubuntu/hardy/openswan/hardy-updates

« back to all changes in this revision

Viewing changes to programs/pluto/x509.h

  • Committer: Bazaar Package Importer
  • Author(s): Rene Mayrhofer
  • Date: 2005-01-27 16:10:11 UTC
  • mfrom: (1.1.1 upstream)
  • Revision ID: james.westby@ubuntu.com-20050127161011-idgybmyz3vwhpfiq
Tags: 2.3.0-2
Urgency HIGH due to security issue and problems with build-deps in sarge.
* Fix the security issue. Please see
  http://www.idefense.com/application/poi/display?id=190&
      type=vulnerabilities&flashstatus=false
  for more details. Thanks to Martin Schulze for informing me about
  this issue.
  Closes: #292458: Openswan XAUTH/PAM Buffer Overflow Vulnerability
* Added a Build-Dependency to lynx.
  Closes: #291143: openswan: FTBFS: Missing build dependency.

Show diffs side-by-side

added added

removed removed

Lines of Context:
2
2
 * Copyright (C) 2000 Andreas Hess, Patric Lichtsteiner, Roger Wegmann
3
3
 * Copyright (C) 2001 Marco Bertossa, Andreas Schleiss
4
4
 * Copyright (C) 2002 Mario Strasser
5
 
 * Copyright (C) 2000-2003 Andreas Steffen, Zuercher Hochschule Winterthur
 
5
 * Copyright (C) 2000-2004 Andreas Steffen, Zuercher Hochschule Winterthur
6
6
 *
7
7
 * This program is free software; you can redistribute it and/or modify it
8
8
 * under the terms of the GNU General Public License as published by the
14
14
 * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
15
15
 * for more details.
16
16
 *
17
 
 * RCSID $Id: x509.h,v 1.2.6.1 2004/03/21 05:23:35 mcr Exp $
 
17
 * RCSID $Id: x509.h,v 1.6 2004/07/22 18:56:36 ken Exp $
18
18
 */
19
19
 
20
20
#ifndef _X509_H
44
44
    chunk_t         name;
45
45
};
46
46
 
 
47
/* authority flags */
 
48
 
 
49
#define AUTH_NONE       0x00    /* no authorities */
 
50
#define AUTH_CA         0x01    /* certification authority */
 
51
#define AUTH_AA         0x02    /* authorization authority */
 
52
#define AUTH_OCSP       0x04    /* ocsp signing authority */
 
53
 
47
54
/* access structure for an X.509v3 certificate */
48
55
 
49
56
typedef struct x509cert x509cert_t;
53
60
  time_t         installed;
54
61
  int            count;
55
62
  bool           smartcard;
 
63
  u_char         authority_flags;
56
64
  chunk_t        certificate;
57
65
  chunk_t          tbsCertificate;
58
66
  u_int              version;
59
67
  chunk_t            serialNumber;
60
68
                /*   signature */
61
 
  chunk_t              sigAlg;
 
69
  int                  sigAlg;
62
70
  chunk_t            issuer;
63
71
                /*   validity */
64
72
  time_t               notBefore;
78
86
                /*       critical */
79
87
                /*       extnValue */
80
88
  bool                     isCA;
 
89
  bool                     isOcspSigner; /* ocsp */
81
90
  chunk_t                  subjectKeyID;
82
91
  chunk_t                  authKeyID;
83
92
  chunk_t                  authKeySerialNumber;
 
93
  chunk_t                  accessLocation; /* ocsp */
84
94
  generalName_t            *subjectAltName;
85
95
  generalName_t            *crlDistributionPoints;
86
96
                /* signatureAlgorithm */
87
 
  chunk_t            algorithm;
 
97
  int                algorithm;
88
98
  chunk_t          signature;
89
99
};
90
100
 
110
120
  chunk_t          tbsCertList;
111
121
  u_int              version;
112
122
                 /*  signature */
113
 
  chunk_t              sigAlg;
 
123
  int                  sigAlg;
114
124
  chunk_t            issuer;
115
125
  time_t             thisUpdate;
116
126
  time_t             nextUpdate;
125
135
  chunk_t                authKeySerialNumber;
126
136
 
127
137
                /* signatureAlgorithm */
128
 
  chunk_t            algorithm;
 
138
  int                algorithm;
129
139
  chunk_t          signature;
130
140
};
131
141
 
143
153
extern const x509crl_t  empty_x509crl;
144
154
extern const x509cert_t empty_x509cert;
145
155
 
 
156
extern bool same_serial(chunk_t a, chunk_t b);
 
157
extern bool same_keyid(chunk_t a, chunk_t b);
146
158
extern bool same_dn(chunk_t a, chunk_t b);
147
159
#define MAX_CA_PATH_LEN         7
148
160
extern bool trusted_ca(chunk_t a, chunk_t b, int *pathlen);
159
171
extern void select_x509cert_id(x509cert_t *cert, struct id *end_id);
160
172
extern bool parse_x509cert(chunk_t blob, u_int level0, x509cert_t *cert);
161
173
extern bool parse_x509crl(chunk_t blob, u_int level0, x509crl_t *crl);
 
174
extern int parse_algorithmIdentifier(chunk_t blob, int level0);
162
175
extern void parse_authorityKeyIdentifier(chunk_t blob, int level0
163
176
    , chunk_t *authKeyID, chunk_t *authKeySerialNumber);
164
177
extern chunk_t get_directoryName(chunk_t blob, int level, bool implicit);
165
178
extern err_t check_validity(const x509cert_t *cert, time_t *until);
166
 
extern bool verify_x509cert(const x509cert_t *cert, bool strict, time_t *until);
 
179
extern bool compute_digest(chunk_t tbs, int alg, chunk_t *digest);
 
180
extern bool check_signature(chunk_t tbs, chunk_t sig, int algorithm
 
181
    , const x509cert_t *issuer_cert);
 
182
extern bool verify_x509cert(/*const*/ x509cert_t *cert, bool strict, time_t *until);
167
183
extern x509cert_t* add_x509cert(x509cert_t *cert);
 
184
extern x509cert_t* get_x509cert(chunk_t issuer, chunk_t serial, chunk_t keyid
 
185
    , x509cert_t* chain);
 
186
extern x509cert_t* get_authcert(chunk_t subject, chunk_t serial, chunk_t keyid
 
187
    , u_char auth_flags);
168
188
extern void share_x509cert(x509cert_t *cert);
169
189
extern void release_x509cert(x509cert_t *cert);
170
190
extern void free_x509cert(x509cert_t *cert);
171
191
extern void store_x509certs(x509cert_t **firstcert, bool strict);
172
 
extern void load_cacerts(void);
 
192
extern void add_authcert(x509cert_t *cert, u_char auth_flags);
 
193
extern bool trust_authcert_candidate(const x509cert_t *cert
 
194
    , const x509cert_t *alt_chain);
 
195
extern void load_authcerts(const char *type, const char *path
 
196
    , u_char auth_flags);
173
197
extern void load_crls(void);
174
198
extern void check_crls(void);
175
199
extern bool insert_crl(chunk_t blob, chunk_t crl_uri);
176
200
extern void list_x509_end_certs(bool utc);
177
 
extern void list_cacerts(bool utc);
 
201
extern void list_authcerts(const char *caption, u_char auth_flags, bool utc);
178
202
extern void list_crls(bool utc, bool strict);
179
 
extern void free_cacerts(void);
 
203
extern void free_authcerts(void);
180
204
extern void free_crls(void);
181
205
extern void free_crl(x509crl_t *crl);
182
206
extern void free_generalNames(generalName_t* gn, bool free_name);