úÎ!iŲbac      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ab  BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalunknownSafe2ï & asn1-encoding)Possible errors during parsing operations' asn1-encodingUnexpected EOC in the stream.( asn1-encoding3Invalid primitive with infinite length in a stream.) asn1-encoding:A construction goes over the size specified in the header.* asn1-encodingAAn unexpected situation has come up parsing an ASN1 event stream.+ asn1-encodingParsing an invalid header., asn1-encoding7Parsing is not finished, there is construction unended.- asn1-encodingADecoding of a type that is not implemented. Contribution welcome.. asn1-encoding!Decoding of a knowed type failed./ asn1-encodingInvalid primitive type0 asn1-encoding>Policy failed including the name of the policy and the reason. &'()*+,-./0 &'()*+,-./0 BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalunknownSafeSX$k c asn1-encoding.The Get monad is an Exception and State monad.d asn1-encoding!Have we read all available input?e asn1-encodingThe result of a parse.f asn1-encodingThe parse failed. The g0 is the message describing the error, if any.h asn1-encoding‚Supply this continuation with more input so that the parser can resume. To indicate that no more input is available, use an i string.j asn1-encodingThe parse succeeded. The kU is the input that had not yet been consumed (if any) when the parse succeeded.l asn1-encodingRun the Get monad applies a get%-based parser on the input ByteStringm asn1-encoding If at least nK bytes of input are available, return the current input, otherwise fail.n asn1-encoding If at least nK bytes of input are available, return the current input, otherwise fail.o asn1-encoding$Immediately demand more input via a h continuation result.p asn1-encoding An efficient get5 method for strict ByteStrings. Fails if fewer than nZ bytes are left in the input. This function creates a fresh copy of the underlying bytes.q asn1-encodingPull n. bytes from the input, as a strict ByteString. crejfhlspqt  BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalunknownSafe*ðu asn1-encodingZuintOfBytes returns the number of bytes and the unsigned integer represented by the bytes v asn1-encodingxintOfBytes returns the number of bytes in the list and the represented integer by a two's completement list of bytes w asn1-encodingHbytesOfInt convert an integer into a two's completemented list of bytes uxvwy BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalunknownNone,;  BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalunknownNone1Đz asn1-encodingparse an ASN1 header{ asn1-encoding!Parse the first word of an header| asn1-encoding?putIdentifier encode an ASN1 Identifier into a marshalled value} asn1-encodingVputLength encode a length into a ASN1 length. - see getLength for the encoding rules z|  BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalunknownNone54 asn1-encoding8transform a list of ASN1 Events into a strict bytestring5 asn1-encoding6transform a list of ASN1 Events into a lazy bytestring45  BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalunknownNoneE ~ asn1-encoding(Represent the events and state thus far. asn1-encoding.represent the parsing state of an ASN1 stream."the stack of constructed elements.the next expected type.the position in the stream.€ asn1-encoding†nothing means the parser stop this construction on an ASN1 end tag, otherwise specify the position where the construction terminate. asn1-encoding-create a new empty parse state. position is 0‚ asn1-encoding’run incrementally the ASN1 parser on a bytestring. the result can be either an error, or on success a list of events, and the new parsing state.ƒ asn1-encodingcwhen no more input is available, it's important to check that the parser is in a finish state too.6 asn1-encodingLParse one lazy bytestring and returns on success all ASN1 events associated.7 asn1-encodingNParse one strict bytestring and returns on success all ASN1 events associated.‚ asn1-encoding parser state asn1-encodinginput data as bytes~‚ƒ67 BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalunknownNoneF_ %$#"!4567 %$#"!6754 BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalunknownNoneH=89:89: BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalunknownNone%RĩD asn1-encodingagetInteger, parse a value bytestring and get the integer out of the two complement encoded bytes „ asn1-encodingVgetEnumerated, parse an enumerated value the same way that integer values are parsed. … asn1-encoding]According to X.690 section 8.4 integer and enumerated values should be encoded the same way. I asn1-encodingreturn an OID † asn1-encoding/Normalize the mantissa and adjust the exponent.‰DER requires the mantissa to either be 0 or odd, so we right-shift it until the LSB is 1, and then add the shift amount to the exponent.TODO: handle denormal numbers(  ;<=>?@ABCDEFGHIJKLMNOP(  ;<=B@?>ACDEFGHIJKLPMNO BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalunknownNone]ý Q asn1-encodingIDescribe an ASN1 encoding, that transform an asn1stream into a bytestreamR asn1-encoding&encode a stream into a lazy bytestringS asn1-encodingtransition class.T asn1-encoding,decode a lazy bytestring into an ASN1 streamU asn1-encodingIDescribe an ASN1 decoding, that transform a bytestream into an asn1streamV asn1-encoding,decode a lazy bytestring into an ASN1 streamW asn1-encoding.decode a strict bytestring into an ASN1 streamX asn1-encoding2decode a strict bytestring into an ASN1Repr streamY asn1-encoding(encode a stream into a strict bytestring QRSTUVWXY UVSTQRWXY BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalunknownNoneb=Z asn1-encoding"Distinguished Encoding Rules (DER)\ asn1-encodingBasic Encoding Rules (BER)‡ asn1-encodingFDER header need to be all of finite size and of minimum possible size.Z[\]\]Z[ˆ                   ! " # $% $& $' $( $) $* $+ $, $- $. $/ $/ $0 $1 $2 $3 $456789:;<=>?@AB C D E FGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghiijjklmnopqrstuvwxyz{x|}~€‚ƒ„…† ‡ ˆ ‰ Š ‹ Œ  Ž   ‘ ’ “ ” •–—˜™š)asn1-encoding-0.9.6-ErHoW1tlr3FBaXrQzBEw2Data.ASN1.PrimData.ASN1.ObjectData.ASN1.BinaryEncoding.RawData.ASN1.ErrorData.ASN1.StreamData.ASN1.EncodingData.ASN1.BinaryEncoding Data.ASN1.GetData.ASN1.InternalData.ASN1.SerializeData.ASN1.BinaryEncoding.WriterData.ASN1.BinaryEncoding.Parse'asn1-types-0.3.3-CpFgtS7VhVK8AQ1c6663ldData.ASN1.Types ContainerSetSequenceASN1ConstructionTypeEndStartOtherASN1Time ASN1String EnumeratedRealOIDNull OctetString BitStringIntValBooleanASN1fromASN1toASN1 ASN1ObjectData.ASN1.Types.LowlevelPrivateContext Application Universal ASN1ClassASN1Tag LenIndefiniteLenLongLenShort ASN1Length ASN1HeaderConstructionEndConstructionBegin PrimitiveHeader ASN1Event ASN1ErrorStreamUnexpectedEOCStreamInfinitePrimitiveStreamConstructionWrongSizeStreamUnexpectedSituationParsingHeaderFailParsingPartialTypeNotImplementedTypeDecodingFailedTypePrimitiveInvalid PolicyFailed$fExceptionASN1Error$fShowASN1Error $fEqASN1Error toByteStringtoLazyByteStringparseLBSparseBSASN1ReprgetConstructedEndgetConstructedEndRepr encodeHeaderencodePrimitiveHeaderencodePrimitive encodeOne encodeListencodeConstructedmkSmallestLengthdecodePrimitive getBoolean getInteger getDouble getBitStringgetOctetStringgetNullgetOIDgetTimeputTime putInteger putBitString putStringputOID putDouble ASN1Encoding encodeASN1ASN1DecodingReprdecodeASN1Repr ASN1Decoding decodeASN1 decodeASN1'decodeASN1Repr' encodeASN1'DERBER$fASN1DecodingBER$fASN1DecodingReprBER$fASN1EncodingDER$fASN1DecodingDER$fASN1DecodingReprDERGetMoreResultFailbaseGHC.BaseStringPartialbytestring-0.10.8.2Data.ByteStringemptyDoneData.ByteString.Internal ByteString runGetPosensure ensureRec demandInput getBytesCopygetBytesInputrunGetgetWord8 uintOfBytes intOfBytes bytesOfInt bytesOfUIntputVarEncodingIntegral getHeaderparseFirstWord putHeader putLength ParseCursor ParseStateConstructionEndAt newParseState runParseState isParseDone getEnumerated getIntegerRaw normalizecheckDER