1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556(* Copyright (c) 2014-2017 David Kaloper Meršinjak. All rights reserved.
See LICENSE.md. *)openResultmoduleCore=Asn_coremoduleOID=Asn_oidexceptionAmbiguous_syntax=Core.Ambiguous_syntaxtypeerror=Core.errorletpp_error=Core.pp_errormoduleS=structtype'at='aCore.asntype'aelement='aCore.elementtype'asequence='aCore.sequenceincludeAsn_combinatorslet(error,parse_error)=Core.(error,parse_error)endtype'at='aS.ttypeoid=OID.ttypeencoding={mk_decoder:'a.'at->string->'a*string;mk_encoder:'a.'at->'a->Asn_writer.t}letber={mk_decoder=Asn_ber_der.R.compile_ber;mk_encoder=Asn_ber_der.W.ber_to_writer;}letder={mk_decoder=Asn_ber_der.R.compile_der;mk_encoder=Asn_ber_der.W.der_to_writer;}type'acodec=Codecof(string->('a*string))*('a->Asn_writer.t)letcodec{mk_encoder;mk_decoder}asn=let()=Core.validateasninCodec(mk_decoderasn,mk_encoderasn)letencode(Codec(_,enc))a=Asn_writer.to_octets(enca)letencode_into(Codec(_,enc))a=Asn_writer.to_writer(enca)letdecode(Codec(dec,_))b=tryOk(decb)withCore.Parse_errorerr->Errorerrletrandom=Asn_random.r_asn