1 | /* |
2 | * key.h |
3 | * |
4 | * key usage limits enforcement |
5 | * |
6 | * David A. Mcgrew |
7 | * Cisco Systems, Inc. |
8 | */ |
9 | /* |
10 | * |
11 | * Copyright (c) 2001-2006 Cisco Systems, Inc. |
12 | * All rights reserved. |
13 | * |
14 | * Redistribution and use in source and binary forms, with or without |
15 | * modification, are permitted provided that the following conditions |
16 | * are met: |
17 | * |
18 | * Redistributions of source code must retain the above copyright |
19 | * notice, this list of conditions and the following disclaimer. |
20 | * |
21 | * Redistributions in binary form must reproduce the above |
22 | * copyright notice, this list of conditions and the following |
23 | * disclaimer in the documentation and/or other materials provided |
24 | * with the distribution. |
25 | * |
26 | * Neither the name of the Cisco Systems, Inc. nor the names of its |
27 | * contributors may be used to endorse or promote products derived |
28 | * from this software without specific prior written permission. |
29 | * |
30 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
31 | * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
32 | * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS |
33 | * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE |
34 | * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, |
35 | * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES |
36 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR |
37 | * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) |
38 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, |
39 | * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
40 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED |
41 | * OF THE POSSIBILITY OF SUCH DAMAGE. |
42 | * |
43 | */ |
44 | |
45 | #ifndef KEY_H |
46 | #define KEY_H |
47 | |
48 | #include "rdbx.h" /* for xtd_seq_num_t */ |
49 | #include "err.h" |
50 | |
51 | typedef struct key_limit_ctx_t *key_limit_t; |
52 | |
53 | typedef enum { |
54 | key_event_normal, |
55 | key_event_soft_limit, |
56 | key_event_hard_limit |
57 | } key_event_t; |
58 | |
59 | err_status_t |
60 | key_limit_set(key_limit_t key, const xtd_seq_num_t s); |
61 | |
62 | err_status_t |
63 | key_limit_clone(key_limit_t original, key_limit_t *new_key); |
64 | |
65 | err_status_t |
66 | key_limit_check(const key_limit_t key); |
67 | |
68 | key_event_t |
69 | key_limit_update(key_limit_t key); |
70 | |
71 | typedef enum { |
72 | key_state_normal, |
73 | key_state_past_soft_limit, |
74 | key_state_expired |
75 | } key_state_t; |
76 | |
77 | typedef struct key_limit_ctx_t { |
78 | xtd_seq_num_t num_left; |
79 | key_state_t state; |
80 | } key_limit_ctx_t; |
81 | |
82 | #endif /* KEY_H */ |
83 | |