>4e      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ Safe-InferredNone 2http://tools.ietf.org/html/rfc4880#section-5.2.3.1 $seconds after key CreationTime +seconds after CreationTime - .http://tools.ietf.org/html/rfc4880#section-3.2 /"Data needed to verify a signature 9:A message is encoded as a list that takes the entire file m /http://tools.ietf.org/html/rfc4880#section-5.14 n /http://tools.ietf.org/html/rfc4880#section-5.13  or  .http://tools.ietf.org/html/rfc4880#section-5.7 when version is 0 o /http://tools.ietf.org/html/rfc4880#section-5.11 p /http://tools.ietf.org/html/rfc4880#section-5.10 q .http://tools.ietf.org/html/rfc4880#section-5.9 u .http://tools.ietf.org/html/rfc4880#section-5.8 v .http://tools.ietf.org/html/rfc4880#section-5.6 y 2http://tools.ietf.org/html/rfc4880#section-5.5.1.3 (also subkey) { 2http://tools.ietf.org/html/rfc4880#section-5.5.1.1 (also subkey)  .http://tools.ietf.org/html/rfc4880#section-5.4  .http://tools.ietf.org/html/rfc4880#section-5.3 :This is meaningless if symmetric_algorithm == Unencrypted  .http://tools.ietf.org/html/rfc4880#section-5.2  .http://tools.ietf.org/html/rfc4880#section-5.1 (Helper method for fingerprints and such Take a hash function and an f value and generate the bytes ( needed for creating a symmetric key. (Return value is always infinite length. 3 Take the first n bytes you need for your keysize. 5Extract signed objects from a well-formatted message #Recurses into CompressedDataPacket  -http://tools.ietf.org/html/rfc4880#section-11 -Find the keyid that issued a SignaturePacket %Find a key with the given Fingerprint/KeyID "SignaturePacket smart constructor  .http://tools.ietf.org/html/rfc4880#section-5.2   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~Extract Fingerprint/KeyID from packet )List of packets (some of which are keys)  Fingerprint/KeyID to search for Signature version (probably 4) Signature type  0http://tools.ietf.org/html/rfc4880#section-5.2.1 %Hashed subpackets (these get signed) .Unhashed subpackets (these do not get signed) &Left 16 bits of the signed hash value The raw MPIs of the signature   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~k{yvuqponml|}~|}z~wxrs|t9:,+*'&%$# () !" fjihg]edcba`_^S\[ZYXWVUTHRQPONMLKJIBGFEDC;A@?>=<-./64207858538518C,,+*'&%$# () !" -./642078585385189:;A@?>=<BGFEDCH RQPONMLKJIS \[ZYXWVUT]edcba`_^fjihgk<{yvuqponml|}~|}z~wxrs|t      !"#$%&'()*+,-./00123456789:;;<<=>?@ABBCDEFGGHIJKLMNOPQQRSTUVWXYZZ[\]^_`abbcdefghijklmnopqrstuvwxyz{|}~ openpgp-0.6 Data.OpenPGPData.OpenPGP.InternalSignatureSubpacketUnsupportedSignatureSubpacketEmbeddedSignaturePacketSignatureTargetPackettarget_key_algorithmtarget_hash_algorithmhashFeaturesPacket supports_mdcReasonForRevocationPacketSignerUserIDPacketKeyFlagsPacket certify_keys sign_dataencrypt_communicationencrypt_storage split_keyauthentication group_keyPolicyURIPacketPrimaryUserIDPacketPreferredKeyServerPacketKeyServerPreferencesPacketkeyserver_no_modify$PreferredCompressionAlgorithmsPacketPreferredHashAlgorithmsPacketNotationDataPackethuman_readable notation_namenotation_value IssuerPacketRevocationKeyPacket sensitiverevocation_key_algorithmrevocation_key_fingerprint"PreferredSymmetricAlgorithmsPacketKeyExpirationTimePacketRevocablePacketRegularExpressionPacketTrustSignaturePacketdepthtrustExportableCertificationPacketSignatureExpirationTimePacketSignatureCreationTimePacketMPI SignatureOverCertificationSignatureuser_idSubkeySignaturesubkey KeySignaturetopkey DataSignatureliteralsignatures_overMessageRevocationCode UserIDInvalid KeyRetiredKeyCompromised KeySupersededNoReasonCompressionAlgorithmBZip2ZLIBZIP UncompressedSymmetricAlgorithmTwofishAES256AES192AES128BlowfishCAST5 TripleDESIDEA Unencrypted KeyAlgorithmDHECDSAECCDSAELGAMALRSA_SRSA_ERSA HashAlgorithmSHA224SHA512SHA384SHA256 RIPEMD160SHA1MD5S2KIteratedSaltedS2K SaltedS2K SimpleS2KPacketUnsupportedPacketModificationDetectionCodePacketEncryptedDataPacket UserIDPacket TrustPacketLiteralDataPacketformatfilenamecontent MarkerPacketCompressedDataPacketcompression_algorithmmessageSecretKeyPacket s2k_useagePublicKeyPacket timestampkey is_subkeyv3_days_of_validityOnePassSignaturePacketnestedSymmetricSessionKeyPacketsymmetric_algorithms2ksignature_typehash_algorithmhashed_subpacketsunhashed_subpackets hash_head signaturetrailerAsymmetricSessionKeyPacketversionkey_id key_algorithmencrypted_datapublic_key_fieldssecret_key_fieldsfingerprint_material string2key signaturessignature_issuerfind_keysignaturePacketisSignaturePacketdecode_s2k_countencode_s2k_countSignaturePacketgetRemainingByteStringgetSomeByteStringputSomeByteStringlocalGetcompress decompress lazyEncode lazyCompresslazyDecompress assertProppadpadBSchecksumget_packet_bytesparse_new_lengthparse_old_length!signature_packet_startcalculate_signature_trailer put_packet parse_packet enum_to_word8enum_from_word8 infiniHashes paired_sigs listUntilEndput_signature_subpacketparse_signature_subpacket find_key' takeFromEnd$fBinarySignatureSubpacket $fBinaryMPI$fBinarySignatureOver$fMonoidMessage$fBinaryMessage$fBinaryRevocationCode$fEnumRevocationCode$fBinaryCompressionAlgorithm$fEnumCompressionAlgorithm$fBinarySymmetricAlgorithm$fEnumSymmetricAlgorithm$fBinaryKeyAlgorithm$fEnumKeyAlgorithm$fBinaryHashAlgorithm$fEnumHashAlgorithm $fBinaryS2K$fBinaryPacket