xref: /linux-6.15/include/linux/asn1.h (revision 4520c6a4)
1*4520c6a4SDavid Howells /* ASN.1 BER/DER/CER encoding definitions
2*4520c6a4SDavid Howells  *
3*4520c6a4SDavid Howells  * Copyright (C) 2012 Red Hat, Inc. All Rights Reserved.
4*4520c6a4SDavid Howells  * Written by David Howells ([email protected])
5*4520c6a4SDavid Howells  *
6*4520c6a4SDavid Howells  * This program is free software; you can redistribute it and/or
7*4520c6a4SDavid Howells  * modify it under the terms of the GNU General Public Licence
8*4520c6a4SDavid Howells  * as published by the Free Software Foundation; either version
9*4520c6a4SDavid Howells  * 2 of the Licence, or (at your option) any later version.
10*4520c6a4SDavid Howells  */
11*4520c6a4SDavid Howells 
12*4520c6a4SDavid Howells #ifndef _LINUX_ASN1_H
13*4520c6a4SDavid Howells #define _LINUX_ASN1_H
14*4520c6a4SDavid Howells 
15*4520c6a4SDavid Howells /* Class */
16*4520c6a4SDavid Howells enum asn1_class {
17*4520c6a4SDavid Howells 	ASN1_UNIV	= 0,	/* Universal */
18*4520c6a4SDavid Howells 	ASN1_APPL	= 1,	/* Application */
19*4520c6a4SDavid Howells 	ASN1_CONT	= 2,	/* Context */
20*4520c6a4SDavid Howells 	ASN1_PRIV	= 3	/* Private */
21*4520c6a4SDavid Howells };
22*4520c6a4SDavid Howells #define ASN1_CLASS_BITS	0xc0
23*4520c6a4SDavid Howells 
24*4520c6a4SDavid Howells 
25*4520c6a4SDavid Howells enum asn1_method {
26*4520c6a4SDavid Howells 	ASN1_PRIM	= 0,	/* Primitive */
27*4520c6a4SDavid Howells 	ASN1_CONS	= 1	/* Constructed */
28*4520c6a4SDavid Howells };
29*4520c6a4SDavid Howells #define ASN1_CONS_BIT	0x20
30*4520c6a4SDavid Howells 
31*4520c6a4SDavid Howells /* Tag */
32*4520c6a4SDavid Howells enum asn1_tag {
33*4520c6a4SDavid Howells 	ASN1_EOC	= 0,	/* End Of Contents or N/A */
34*4520c6a4SDavid Howells 	ASN1_BOOL	= 1,	/* Boolean */
35*4520c6a4SDavid Howells 	ASN1_INT	= 2,	/* Integer */
36*4520c6a4SDavid Howells 	ASN1_BTS	= 3,	/* Bit String */
37*4520c6a4SDavid Howells 	ASN1_OTS	= 4,	/* Octet String */
38*4520c6a4SDavid Howells 	ASN1_NULL	= 5,	/* Null */
39*4520c6a4SDavid Howells 	ASN1_OID	= 6,	/* Object Identifier  */
40*4520c6a4SDavid Howells 	ASN1_ODE	= 7,	/* Object Description */
41*4520c6a4SDavid Howells 	ASN1_EXT	= 8,	/* External */
42*4520c6a4SDavid Howells 	ASN1_REAL	= 9,	/* Real float */
43*4520c6a4SDavid Howells 	ASN1_ENUM	= 10,	/* Enumerated */
44*4520c6a4SDavid Howells 	ASN1_EPDV	= 11,	/* Embedded PDV */
45*4520c6a4SDavid Howells 	ASN1_UTF8STR	= 12,	/* UTF8 String */
46*4520c6a4SDavid Howells 	ASN1_RELOID	= 13,	/* Relative OID */
47*4520c6a4SDavid Howells 	/* 14 - Reserved */
48*4520c6a4SDavid Howells 	/* 15 - Reserved */
49*4520c6a4SDavid Howells 	ASN1_SEQ	= 16,	/* Sequence and Sequence of */
50*4520c6a4SDavid Howells 	ASN1_SET	= 17,	/* Set and Set of */
51*4520c6a4SDavid Howells 	ASN1_NUMSTR	= 18,	/* Numerical String */
52*4520c6a4SDavid Howells 	ASN1_PRNSTR	= 19,	/* Printable String */
53*4520c6a4SDavid Howells 	ASN1_TEXSTR	= 20,	/* T61 String / Teletext String */
54*4520c6a4SDavid Howells 	ASN1_VIDSTR	= 21,	/* Videotex String */
55*4520c6a4SDavid Howells 	ASN1_IA5STR	= 22,	/* IA5 String */
56*4520c6a4SDavid Howells 	ASN1_UNITIM	= 23,	/* Universal Time */
57*4520c6a4SDavid Howells 	ASN1_GENTIM	= 24,	/* General Time */
58*4520c6a4SDavid Howells 	ASN1_GRASTR	= 25,	/* Graphic String */
59*4520c6a4SDavid Howells 	ASN1_VISSTR	= 26,	/* Visible String */
60*4520c6a4SDavid Howells 	ASN1_GENSTR	= 27,	/* General String */
61*4520c6a4SDavid Howells 	ASN1_UNISTR	= 28,	/* Universal String */
62*4520c6a4SDavid Howells 	ASN1_CHRSTR	= 29,	/* Character String */
63*4520c6a4SDavid Howells 	ASN1_BMPSTR	= 30,	/* BMP String */
64*4520c6a4SDavid Howells 	ASN1_LONG_TAG	= 31	/* Long form tag */
65*4520c6a4SDavid Howells };
66*4520c6a4SDavid Howells 
67*4520c6a4SDavid Howells #endif /* _LINUX_ASN1_H */
68