diff options
Diffstat (limited to 'Data/OpenPGP.hs')
-rw-r--r-- | Data/OpenPGP.hs | 31 |
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 |
901 | data SignatureOver = | 901 | data 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] | 909 | instance 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 | -- |