Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/stand/libsa/geli/geliboot_internal.h
34860 views
1
/*-
2
* Copyright (c) 2015 Allan Jude <[email protected]>
3
* Copyright (c) 2005-2011 Pawel Jakub Dawidek <[email protected]>
4
* All rights reserved.
5
*
6
* Redistribution and use in source and binary forms, with or without
7
* modification, are permitted provided that the following conditions
8
* are met:
9
* 1. Redistributions of source code must retain the above copyright
10
* notice, this list of conditions and the following disclaimer.
11
* 2. Redistributions in binary form must reproduce the above copyright
12
* notice, this list of conditions and the following disclaimer in the
13
* documentation and/or other materials provided with the distribution.
14
*
15
* THIS SOFTWARE IS PROVIDED BY THE AUTHORS AND CONTRIBUTORS ``AS IS'' AND
16
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE
19
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
20
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
21
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
22
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
23
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
24
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
25
* SUCH DAMAGE.
26
*/
27
28
#ifndef _GELIBOOT_INTERNAL_H_
29
#define _GELIBOOT_INTERNAL_H_
30
31
#define _STRING_H_
32
#define _STRINGS_H_
33
#define _STDIO_H_
34
35
#include <sys/endian.h>
36
#include <sys/queue.h>
37
38
#include <geom/eli/g_eli.h>
39
#include <geom/eli/pkcs5v2.h>
40
41
/* Pull in the md5, sha256, and sha512 implementations */
42
#include <sys/md5.h>
43
#include <crypto/sha2/sha256.h>
44
#include <crypto/sha2/sha512.h>
45
46
/* Pull in AES implementation */
47
#include <crypto/rijndael/rijndael-api-fst.h>
48
49
/* AES-XTS implementation */
50
#define _STAND 1
51
#define STAND_H /* We don't want stand.h in {gpt,zfs,gptzfs}boot */
52
#include <opencrypto/xform_enc.h>
53
54
#include "geliboot.h"
55
56
#define GELIDEV_NAMELEN 32
57
58
struct geli_dev {
59
off_t part_end;
60
struct g_eli_softc sc;
61
struct g_eli_metadata md;
62
int keybuf_slot;
63
char *name; /* for prompting; it ends in ':' */
64
};
65
66
int geliboot_crypt(u_int algo, geli_op_t enc, u_char *data, size_t datasize,
67
const u_char *key, size_t keysize, u_char *iv);
68
69
#endif /* _GELIBOOT_INTERNAL_H_ */
70
71