Home | History | Annotate | Download | only in e2p
      1 /*
      2  * crypto_mode.c --- convert between encryption modes and strings
      3  *
      4  * Copyright (C) 1999  Theodore Ts'o <tytso (at) mit.edu>
      5  *
      6  * %Begin-Header%
      7  * This file may be redistributed under the terms of the GNU Library
      8  * General Public License, version 2.
      9  * %End-Header%
     10  */
     11 
     12 #include "config.h"
     13 #include <stdio.h>
     14 #include <stdlib.h>
     15 #include <string.h>
     16 #include <strings.h>
     17 #include <ctype.h>
     18 #include <errno.h>
     19 
     20 #include "e2p.h"
     21 
     22 struct mode {
     23 	unsigned int	num;
     24 	const char	*string;
     25 };
     26 
     27 static struct mode mode_list[] = {
     28 	{	EXT4_ENCRYPTION_MODE_INVALID,		"Invalid"},
     29 	{	EXT4_ENCRYPTION_MODE_AES_256_XTS,	"AES-256-XTS"},
     30 	{	EXT4_ENCRYPTION_MODE_AES_256_GCM,	"AES-256-GCM"},
     31 	{	EXT4_ENCRYPTION_MODE_AES_256_CBC,	"AES-256-CBC"},
     32 	{	0, 0 },
     33 };
     34 
     35 const char *e2p_encmode2string(int num)
     36 {
     37 	struct mode  *p;
     38 	static char buf[20];
     39 
     40 	for (p = mode_list; p->string; p++) {
     41 		if (num == p->num)
     42 			return p->string;
     43 	}
     44 	sprintf(buf, "ENC_MODE_%d", num);
     45 	return buf;
     46 }
     47 
     48 /*
     49  * Returns the hash algorithm, or -1 on error
     50  */
     51 int e2p_string2encmode(char *string)
     52 {
     53 	struct mode	*p;
     54 	char		*eptr;
     55 	int		num;
     56 
     57 	for (p = mode_list; p->string; p++) {
     58 		if (!strcasecmp(string, p->string)) {
     59 			return p->num;
     60 		}
     61 	}
     62 	if (strncasecmp(string, "ENC_MODE_", 9))
     63 		return -1;
     64 
     65 	if (string[9] == 0)
     66 		return -1;
     67 	num = strtol(string+9, &eptr, 10);
     68 	if (num > 255 || num < 0)
     69 		return -1;
     70 	if (*eptr)
     71 		return -1;
     72 	return num;
     73 }
     74 
     75