1 | /*- |
2 | * Copyright (c) 2009 The NetBSD Foundation, Inc. |
3 | * All rights reserved. |
4 | * |
5 | * This code is derived from software contributed to The NetBSD Foundation |
6 | * by Alistair Crooks (agc@NetBSD.org) |
7 | * |
8 | * Redistribution and use in source and binary forms, with or without |
9 | * modification, are permitted provided that the following conditions |
10 | * are met: |
11 | * 1. Redistributions of source code must retain the above copyright |
12 | * notice, this list of conditions and the following disclaimer. |
13 | * 2. Redistributions in binary form must reproduce the above copyright |
14 | * notice, this list of conditions and the following disclaimer in the |
15 | * documentation and/or other materials provided with the distribution. |
16 | * |
17 | * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS |
18 | * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED |
19 | * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR |
20 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS |
21 | * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
22 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
23 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
24 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN |
25 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
26 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
27 | * POSSIBILITY OF SUCH DAMAGE. |
28 | */ |
29 | /* |
30 | * Copyright (c) 2005-2008 Nominet UK (www.nic.uk) |
31 | * All rights reserved. |
32 | * Contributors: Ben Laurie, Rachel Willmer. The Contributors have asserted |
33 | * their moral rights under the UK Copyright Design and Patents Act 1988 to |
34 | * be recorded as the authors of this copyright work. |
35 | * |
36 | * Licensed under the Apache License, Version 2.0 (the "License"); you may not |
37 | * use this file except in compliance with the License. |
38 | * |
39 | * You may obtain a copy of the License at |
40 | * http://www.apache.org/licenses/LICENSE-2.0 |
41 | * |
42 | * Unless required by applicable law or agreed to in writing, software |
43 | * distributed under the License is distributed on an "AS IS" BASIS, |
44 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
45 | * |
46 | * See the License for the specific language governing permissions and |
47 | * limitations under the License. |
48 | */ |
49 | |
50 | /** \file |
51 | */ |
52 | #ifndef MEMORY_H_ |
53 | #define MEMORY_H_ |
54 | |
55 | #include <sys/types.h> |
56 | |
57 | #include "packet.h" |
58 | |
59 | /** pgp_memory_t |
60 | */ |
61 | typedef struct pgp_memory_t { |
62 | uint8_t *buf; |
63 | size_t length; |
64 | size_t allocated; |
65 | unsigned mmapped; |
66 | } pgp_memory_t; |
67 | |
68 | |
69 | pgp_memory_t *pgp_memory_new(void); |
70 | void pgp_memory_free(pgp_memory_t *); |
71 | void pgp_memory_init(pgp_memory_t *, size_t); |
72 | void pgp_memory_pad(pgp_memory_t *, size_t); |
73 | void pgp_memory_add(pgp_memory_t *, const uint8_t *, size_t); |
74 | void pgp_memory_place_int(pgp_memory_t *, unsigned, unsigned, size_t); |
75 | void pgp_memory_make_packet(pgp_memory_t *, pgp_content_enum); |
76 | void pgp_memory_clear(pgp_memory_t *); |
77 | void pgp_memory_release(pgp_memory_t *); |
78 | |
79 | void pgp_writer_set_memory(pgp_output_t *, pgp_memory_t *); |
80 | |
81 | size_t pgp_mem_len(const pgp_memory_t *); |
82 | void *pgp_mem_data(pgp_memory_t *); |
83 | int pgp_mem_readfile(pgp_memory_t *, const char *); |
84 | |
85 | void pgp_random(void *, size_t); |
86 | |
87 | #endif /* MEMORY_H_ */ |
88 | |