
/*
 * Automatically generated by asn1_compiler.  Do not edit
 *
 * ASN.1 parser for pkcs7_aa
 */
#include "asn1_ber_bytecode.h"
#include "pkcs7_aa_asn1.h"

// clang-format off

enum pkcs7_aa_actions {
	ACT_lc_pkcs7_external_aa = 0,
	ACT_lc_pkcs7_external_aa_OID = 1,
	ACT_lc_pkcs7_external_aa_continue = 2,
	NR__pkcs7_aa_actions = 3
};

static const asn1_action_t pkcs7_aa_action_table[NR__pkcs7_aa_actions] = {
	[   0] = lc_pkcs7_external_aa,
	[   1] = lc_pkcs7_external_aa_OID,
	[   2] = lc_pkcs7_external_aa_continue,
};

static const asn1_action_enc_t pkcs7_aa_action_table_enc[NR__pkcs7_aa_actions] = {
	[   0] = lc_pkcs7_external_aa_enc,
	[   1] = lc_pkcs7_external_aa_OID_enc,
	[   2] = lc_pkcs7_external_aa_continue_enc,
};

static const unsigned char pkcs7_aa_machine[] = {
	// SetOfAuthenticatedAttribute
	[   0] = ASN1_OP_MATCH,
	[   1] = _tag(UNIV, CONS, SET),
	// AuthenticatedAttribute
	[   2] =  ASN1_OP_MATCH,
	[   3] =  _tag(UNIV, CONS, SEQ),
	[   4] =   ASN1_OP_MATCH_ACT,		// type
	[   5] =   _tag(UNIV, PRIM, OID),
	[   6] =   _action(ACT_lc_pkcs7_external_aa_OID),
	[   7] =   ASN1_OP_MATCH,		// values
	[   8] =   _tag(UNIV, CONS, SET),
	[   9] =    ASN1_OP_MATCH_ANY_ACT,
	[  10] =    _action(ACT_lc_pkcs7_external_aa),
	[  11] =   ASN1_OP_END_SET_OF,
	[  12] =   _jump_target(9),
	[  13] =  ASN1_OP_END_SEQ_ACT,
	[  14] =  _action(ACT_lc_pkcs7_external_aa_continue),
	[  15] = ASN1_OP_END_SET_OF,
	[  16] = _jump_target(2),
	[  17] = ASN1_OP_COMPLETE,
};

const struct lc_asn1_decoder lc_pkcs7_aa_decoder = {
	.machine = pkcs7_aa_machine,
	.machlen = sizeof(pkcs7_aa_machine),
	.actions = pkcs7_aa_action_table,
};

const struct lc_asn1_encoder lc_pkcs7_aa_encoder = {
	.machine = pkcs7_aa_machine,
	.machlen = sizeof(pkcs7_aa_machine),
	.actions = pkcs7_aa_action_table_enc,
};

// clang-format on
