diff options
Diffstat (limited to 'Data/OpenPGP.hs')
-rw-r--r-- | Data/OpenPGP.hs | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/Data/OpenPGP.hs b/Data/OpenPGP.hs index 6ffeba4..4dad404 100644 --- a/Data/OpenPGP.hs +++ b/Data/OpenPGP.hs | |||
@@ -383,7 +383,7 @@ put_packet :: Packet -> (B.ByteString, Word8) | |||
383 | put_packet (AsymmetricSessionKeyPacket version key_id key_algorithm dta) = | 383 | put_packet (AsymmetricSessionKeyPacket version key_id key_algorithm dta) = |
384 | (B.concat [ | 384 | (B.concat [ |
385 | encode version, | 385 | encode version, |
386 | encode (fst $ head $ readHex key_id :: Word64), | 386 | encode (fst $ head $ readHex $ takeFromEnd 16 key_id :: Word64), |
387 | encode key_algorithm, | 387 | encode key_algorithm, |
388 | dta | 388 | dta |
389 | ], 1) | 389 | ], 1) |
@@ -431,7 +431,7 @@ put_packet (OnePassSignaturePacket { version = version, | |||
431 | (B.concat [ | 431 | (B.concat [ |
432 | encode version, encode signature_type, | 432 | encode version, encode signature_type, |
433 | encode hash_algorithm, encode key_algorithm, | 433 | encode hash_algorithm, encode key_algorithm, |
434 | encode (fst $ head $ readHex key_id :: Word64), | 434 | encode (fst $ head $ readHex $ takeFromEnd 16 key_id :: Word64), |
435 | encode nested | 435 | encode nested |
436 | ], 4) | 436 | ], 4) |
437 | put_packet (SecretKeyPacket { version = version, timestamp = timestamp, | 437 | put_packet (SecretKeyPacket { version = version, timestamp = timestamp, |
@@ -988,7 +988,7 @@ put_signature_subpacket (RevocationKeyPacket sensitive kalgo fpr) = | |||
988 | fprb = padBS 20 $ B.drop 2 $ encode (MPI fpri) | 988 | fprb = padBS 20 $ B.drop 2 $ encode (MPI fpri) |
989 | fpri = fst $ head $ readHex fpr | 989 | fpri = fst $ head $ readHex fpr |
990 | put_signature_subpacket (IssuerPacket keyid) = | 990 | put_signature_subpacket (IssuerPacket keyid) = |
991 | (encode (fst $ head $ readHex keyid :: Word64), 16) | 991 | (encode (fst $ head $ readHex $ takeFromEnd 16 keyid :: Word64), 16) |
992 | put_signature_subpacket (NotationDataPacket human_readable name value) = | 992 | put_signature_subpacket (NotationDataPacket human_readable name value) = |
993 | (B.concat [ | 993 | (B.concat [ |
994 | B.pack [flag1,0,0,0], | 994 | B.pack [flag1,0,0,0], |
@@ -1188,7 +1188,10 @@ find_key' fpr x xs keyid | |||
1188 | | thisid == keyid = Just x | 1188 | | thisid == keyid = Just x |
1189 | | otherwise = find_key fpr (Message xs) keyid | 1189 | | otherwise = find_key fpr (Message xs) keyid |
1190 | where | 1190 | where |
1191 | thisid = reverse $ take (length keyid) (reverse (fpr x)) | 1191 | thisid = takeFromEnd (length keyid) (fpr x) |
1192 | |||
1193 | takeFromEnd :: Int -> String -> String | ||
1194 | takeFromEnd l = reverse . take l . reverse | ||
1192 | 1195 | ||
1193 | -- | SignaturePacket smart constructor | 1196 | -- | SignaturePacket smart constructor |
1194 | -- | 1197 | -- |