summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStephen Paul Weber <singpolyma@singpolyma.net>2013-01-05 14:24:22 -0500
committerStephen Paul Weber <singpolyma@singpolyma.net>2013-01-05 14:24:22 -0500
commit0ca9f45c940a765105cc52c4c004f2f46b03357d (patch)
treeddbfca7f92f9e04dac60a81735fd8feca491b005
parent3e9f618e07c5ec8ac1bed6811af549c92f23dbc4 (diff)
Extract data from a SignatureOver
-rw-r--r--Data/OpenPGP.hs31
1 files changed, 23 insertions, 8 deletions
diff --git a/Data/OpenPGP.hs b/Data/OpenPGP.hs
index 459925e..092e6ff 100644
--- a/Data/OpenPGP.hs
+++ b/Data/OpenPGP.hs
@@ -899,14 +899,29 @@ instance Monoid Message where
899 899
900-- | Data needed to verify a signature 900-- | Data needed to verify a signature
901data SignatureOver = 901data SignatureOver =
902 DataSignature Packet [Packet] | 902 DataSignature {literal::Packet, signatures_over::[Packet]} |
903 -- ^ LiteralData, [Signature] 903 KeySignature {topkey::Packet, signatures_over::[Packet]} |
904 KeySignature Packet [Packet] | 904 SubkeySignature {topkey::Packet, subkey::Packet, signatures_over::[Packet]} |
905 -- ^ Revocation. Key, [Signature] 905 CertificationSignature {topkey::Packet, user_id::Packet, signatures_over::[Packet]}
906 SubkeySignature Packet Packet [Packet] | 906 deriving (Show, Read, Eq)
907 -- ^ Revocation or subkey binding. Key, Subkey, [Signature] 907
908 CertificationSignature Packet Packet [Packet] 908-- To get the signed-over bytes
909 -- ^ KeyPacket, (UserID | UserAttribute), [Signature] 909instance BINARY_CLASS SignatureOver where
910 put (DataSignature (LiteralDataPacket {content = c}) _) =
911 putSomeByteString c
912 put (KeySignature k _) = mapM_ putSomeByteString (fingerprint_material k)
913 put (SubkeySignature k s _) = mapM_ (mapM_ putSomeByteString)
914 [fingerprint_material k, fingerprint_material s]
915 put (CertificationSignature k (UserIDPacket s) _) =
916 mapM_ (mapM_ putSomeByteString) [fingerprint_material k, [
917 B.singleton 0xB4,
918 encode ((fromIntegral $ B.length bs) :: Word32),
919 bs
920 ]]
921 where
922 bs = B.fromString s
923 put x = fail $ "Malformed signature: " ++ show x
924 get = fail "Cannot meaningfully parse bytes to be signed over."
910 925
911-- | Extract signed objects from a well-formatted message 926-- | Extract signed objects from a well-formatted message
912-- 927--