/* ber-decoder.h - Definitions for the Basic Encoding Rules Decoder
 * Copyright (C) 2001, 2012 g10 Code GmbH
 *
 * This file is part of KSBA.
 *
 * KSBA is free software; you can redistribute it and/or modify
 * it under the terms of either
 *
 *   - the GNU Lesser General Public License as published by the Free
 *     Software Foundation; either version 3 of the License, or (at
 *     your option) any later version.
 *
 * or
 *
 *   - the GNU General Public License as published by the Free
 *     Software Foundation; either version 2 of the License, or (at
 *     your option) any later version.
 *
 * or both in parallel, as here.
 *
 * KSBA is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
 * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
 * License for more details.
 *
 * You should have received a copies of the GNU General Public License
 * and the GNU Lesser General Public License along with this program;
 * if not, see <http://www.gnu.org/licenses/>.
 */

#ifndef BER_DECODER_H
#define BER_DECODER_H 1

#include "asn1-func.h"

struct ber_decoder_s;
typedef struct ber_decoder_s *BerDecoder;

BerDecoder _ksba_ber_decoder_new (void);
void       _ksba_ber_decoder_release (BerDecoder d);

gpg_error_t _ksba_ber_decoder_set_module (BerDecoder d, ksba_asn_tree_t module);
gpg_error_t _ksba_ber_decoder_set_reader (BerDecoder d, ksba_reader_t r);

gpg_error_t _ksba_ber_decoder_dump (BerDecoder d, FILE *fp);
gpg_error_t _ksba_ber_decoder_decode (BerDecoder d, const char *start_name,
                                      unsigned int flags,
                                      AsnNode *r_root,
                                      unsigned char **r_image,
                                      size_t *r_imagelen);

#define BER_DECODER_FLAG_FAST_STOP 1


#endif /*BER_DECODER_H*/
