diff options
author | Stephen Paul Weber <singpolyma@singpolyma.net> | 2013-01-03 12:25:35 -0500 |
---|---|---|
committer | Stephen Paul Weber <singpolyma@singpolyma.net> | 2013-01-03 12:25:35 -0500 |
commit | e9df3b08a0ec2fa73b8959ec7a70478fb028990a (patch) | |
tree | fe4c274725b571b78718e3e2d4e492bac5510ac8 /Data/OpenPGP.hs | |
parent | a9e3593f6f45638447de0238a48f15883324321d (diff) |
Need to verify the checksum, not store it.
Diffstat (limited to 'Data/OpenPGP.hs')
-rw-r--r-- | Data/OpenPGP.hs | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/Data/OpenPGP.hs b/Data/OpenPGP.hs index 0df2e98..2460a29 100644 --- a/Data/OpenPGP.hs +++ b/Data/OpenPGP.hs | |||
@@ -34,7 +34,6 @@ module Data.OpenPGP ( | |||
34 | key_id, | 34 | key_id, |
35 | message, | 35 | message, |
36 | nested, | 36 | nested, |
37 | private_hash, | ||
38 | s2k_useage, | 37 | s2k_useage, |
39 | s2k, | 38 | s2k, |
40 | signature, | 39 | signature, |
@@ -223,7 +222,6 @@ data Packet = | |||
223 | s2k::S2K, -- ^ This is meaningless if symmetric_algorithm == Unencrypted | 222 | s2k::S2K, -- ^ This is meaningless if symmetric_algorithm == Unencrypted |
224 | symmetric_algorithm::SymmetricAlgorithm, | 223 | symmetric_algorithm::SymmetricAlgorithm, |
225 | encrypted_data::B.ByteString, | 224 | encrypted_data::B.ByteString, |
226 | private_hash::Maybe B.ByteString, -- ^ the hash may be in the encrypted data | ||
227 | is_subkey::Bool | 225 | is_subkey::Bool |
228 | } | | 226 | } | |
229 | -- ^ <http://tools.ietf.org/html/rfc4880#section-5.5.1.3> (also subkey) | 227 | -- ^ <http://tools.ietf.org/html/rfc4880#section-5.5.1.3> (also subkey) |
@@ -456,7 +454,7 @@ put_packet (SecretKeyPacket { version = version, timestamp = timestamp, | |||
456 | (if symmetric_algorithm /= Unencrypted then | 454 | (if symmetric_algorithm /= Unencrypted then |
457 | [encrypted_data] | 455 | [encrypted_data] |
458 | else s ++ | 456 | else s ++ |
459 | -- XXX: Checksum is part of encrypted_data for V4 ONLY | 457 | -- TODO: Checksum is part of encrypted_data for V4 ONLY |
460 | if s2k_useage == 254 then | 458 | if s2k_useage == 254 then |
461 | [B.replicate 20 0] -- TODO SHA1 Checksum | 459 | [B.replicate 20 0] -- TODO SHA1 Checksum |
462 | else | 460 | else |
@@ -608,13 +606,14 @@ parse_packet 5 = do | |||
608 | return (Unencrypted, S2K 100 B.empty) | 606 | return (Unencrypted, S2K 100 B.empty) |
609 | if symmetric_algorithm /= Unencrypted then do { | 607 | if symmetric_algorithm /= Unencrypted then do { |
610 | encrypted <- getRemainingByteString; | 608 | encrypted <- getRemainingByteString; |
611 | return (k s2k symmetric_algorithm encrypted Nothing False) | 609 | return (k s2k symmetric_algorithm encrypted False) |
612 | } else do | 610 | } else do |
613 | key <- foldM (\m f -> do | 611 | key <- foldM (\m f -> do |
614 | mpi <- get :: Get MPI | 612 | mpi <- get :: Get MPI |
615 | return $ (f,mpi):m) key (secret_key_fields algorithm) | 613 | return $ (f,mpi):m) key (secret_key_fields algorithm) |
616 | private_hash <- getRemainingByteString | 614 | checksum <- getRemainingByteString |
617 | return ((k s2k symmetric_algorithm B.empty (Just private_hash) False) {key = key}) | 615 | -- TODO: verify checksum |
616 | return ((k s2k symmetric_algorithm B.empty False) {key = key}) | ||
618 | -- PublicKeyPacket, http://tools.ietf.org/html/rfc4880#section-5.5.2 | 617 | -- PublicKeyPacket, http://tools.ietf.org/html/rfc4880#section-5.5.2 |
619 | parse_packet 6 = do | 618 | parse_packet 6 = do |
620 | version <- get :: Get Word8 | 619 | version <- get :: Get Word8 |