Changeset View
Changeset View
Standalone View
Standalone View
stand/libsa/geli/geliboot.h
Show First 20 Lines • Show All 44 Lines • ▼ Show 20 Lines | |||||
#define MIN(a,b) (((a) < (b)) ? (a) : (b)) | #define MIN(a,b) (((a) < (b)) ? (a) : (b)) | ||||
#endif | #endif | ||||
#define GELI_MAX_KEYS 64 | #define GELI_MAX_KEYS 64 | ||||
#define GELI_PW_MAXLEN 256 | #define GELI_PW_MAXLEN 256 | ||||
#define GELI_KEYBUF_SIZE (sizeof(struct keybuf) + \ | #define GELI_KEYBUF_SIZE (sizeof(struct keybuf) + \ | ||||
(GELI_MAX_KEYS * sizeof(struct keybuf_ent))) | (GELI_MAX_KEYS * sizeof(struct keybuf_ent))) | ||||
typedef enum geli_op { | |||||
GELI_DECRYPT, | |||||
GELI_ENCRYPT | |||||
} geli_op_t; | |||||
extern void pwgets(char *buf, int n, int hide); | extern void pwgets(char *buf, int n, int hide); | ||||
typedef u_char geli_ukey[G_ELI_USERKEYLEN]; | typedef u_char geli_ukey[G_ELI_USERKEYLEN]; | ||||
/* | /* | ||||
* An opaque struct used internally by geliboot functions. Returned by | * An opaque struct used internally by geliboot functions. Returned by | ||||
* geli_taste(), a pointer to one of these is essentially a device handle. There | * geli_taste(), a pointer to one of these is essentially a device handle. There | ||||
* is no need to release or free or "give back" the pointer. | * is no need to release or free or "give back" the pointer. | ||||
*/ | */ | ||||
struct geli_dev; | struct geli_dev; | ||||
/* Forward decls. */ | /* Forward decls. */ | ||||
struct open_file; | struct open_file; | ||||
struct preloaded_file; | struct preloaded_file; | ||||
/* | /* | ||||
* Low-level interface, used by early-stage bootloaders... | * Low-level interface, used by early-stage bootloaders... | ||||
*/ | */ | ||||
/* Read callback function type for geli_taste(). */ | /* Read callback function type for geli_taste(). */ | ||||
typedef int (*geli_readfunc)(void *vdev, void *readpriv, off_t offbytes, | typedef int (*geli_readfunc)(void *vdev, void *readpriv, off_t offbytes, | ||||
void *buf, size_t sizebytes); | void *buf, size_t sizebytes); | ||||
struct geli_dev * geli_taste(geli_readfunc readfunc, void *readpriv, | struct geli_dev *geli_taste(geli_readfunc readfunc, void *readpriv, | ||||
daddr_t lastsector, const char *namefmt, ...); | daddr_t lastsector, const char *namefmt, ...); | ||||
int geli_read(struct geli_dev *gdev, off_t offset, u_char *buf, size_t bytes); | int geli_io(struct geli_dev *gdev, geli_op_t, off_t offset, u_char *buf, | ||||
size_t bytes); | |||||
int geli_havekey(struct geli_dev *gdev); | int geli_havekey(struct geli_dev *gdev); | ||||
int geli_passphrase(struct geli_dev *gdev, char *pw); | int geli_passphrase(struct geli_dev *gdev, char *pw); | ||||
/* | /* | ||||
* Libsa device-and-file-level interface. | * Libsa device-and-file-level interface. | ||||
*/ | */ | ||||
void geli_probe_and_attach(struct open_file *f); | void geli_probe_and_attach(struct open_file *f); | ||||
Show All 9 Lines |