1178825Sdfr/*
2233294Sstas * Copyright (c) 2005 - 2006 Kungliga Tekniska H��gskolan
3233294Sstas * (Royal Institute of Technology, Stockholm, Sweden).
4233294Sstas * All rights reserved.
5178825Sdfr *
6233294Sstas * Redistribution and use in source and binary forms, with or without
7233294Sstas * modification, are permitted provided that the following conditions
8233294Sstas * are met:
9178825Sdfr *
10233294Sstas * 1. Redistributions of source code must retain the above copyright
11233294Sstas *    notice, this list of conditions and the following disclaimer.
12178825Sdfr *
13233294Sstas * 2. Redistributions in binary form must reproduce the above copyright
14233294Sstas *    notice, this list of conditions and the following disclaimer in the
15233294Sstas *    documentation and/or other materials provided with the distribution.
16178825Sdfr *
17233294Sstas * 3. Neither the name of the Institute nor the names of its contributors
18233294Sstas *    may be used to endorse or promote products derived from this software
19233294Sstas *    without specific prior written permission.
20178825Sdfr *
21233294Sstas * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
22233294Sstas * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23233294Sstas * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24233294Sstas * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
25233294Sstas * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
26233294Sstas * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
27233294Sstas * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
28233294Sstas * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
29233294Sstas * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
30233294Sstas * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
31233294Sstas * SUCH DAMAGE.
32178825Sdfr */
33178825Sdfr
34178825Sdfr#include "hx_locl.h"
35178825Sdfr
36178825Sdfr
37178825Sdfrstatic int
38178825Sdfrnull_init(hx509_context context,
39178825Sdfr	  hx509_certs certs, void **data, int flags,
40178825Sdfr	  const char *residue, hx509_lock lock)
41178825Sdfr{
42178825Sdfr    *data = NULL;
43178825Sdfr    return 0;
44178825Sdfr}
45178825Sdfr
46178825Sdfrstatic int
47178825Sdfrnull_free(hx509_certs certs, void *data)
48178825Sdfr{
49178825Sdfr    assert(data == NULL);
50178825Sdfr    return 0;
51178825Sdfr}
52178825Sdfr
53233294Sstasstatic int
54178825Sdfrnull_iter_start(hx509_context context,
55178825Sdfr		hx509_certs certs, void *data, void **cursor)
56178825Sdfr{
57178825Sdfr    *cursor = NULL;
58178825Sdfr    return 0;
59178825Sdfr}
60178825Sdfr
61178825Sdfrstatic int
62178825Sdfrnull_iter(hx509_context context,
63178825Sdfr	  hx509_certs certs, void *data, void *iter, hx509_cert *cert)
64178825Sdfr{
65178825Sdfr    *cert = NULL;
66178825Sdfr    return ENOENT;
67178825Sdfr}
68178825Sdfr
69178825Sdfrstatic int
70178825Sdfrnull_iter_end(hx509_context context,
71178825Sdfr	      hx509_certs certs,
72178825Sdfr	      void *data,
73178825Sdfr	      void *cursor)
74178825Sdfr{
75178825Sdfr    assert(cursor == NULL);
76178825Sdfr    return 0;
77178825Sdfr}
78178825Sdfr
79178825Sdfr
80178825Sdfrstruct hx509_keyset_ops keyset_null = {
81178825Sdfr    "NULL",
82178825Sdfr    0,
83178825Sdfr    null_init,
84178825Sdfr    NULL,
85178825Sdfr    null_free,
86178825Sdfr    NULL,
87178825Sdfr    NULL,
88178825Sdfr    null_iter_start,
89178825Sdfr    null_iter,
90178825Sdfr    null_iter_end
91178825Sdfr};
92178825Sdfr
93178825Sdfrvoid
94178825Sdfr_hx509_ks_null_register(hx509_context context)
95178825Sdfr{
96178825Sdfr    _hx509_ks_register(context, &keyset_null);
97178825Sdfr}
98