rnp icon indicating copy to clipboard operation
rnp copied to clipboard

rnp --list-packets dumps fewer packets than gpg --list-packets from the same source

Open antonsviridenko opened this issue 1 year ago • 1 comments

Description

I've accidentally discovered that test file src/tests/data/test_stream_key_merge/key-both.asc is not fully dumped by rnp. It contains both public and secret parts of the same keys.

Steps to Reproduce

  1. run rnp --list-packets src/tests/data/test_stream_key_merge/key-both.asc in a top source directory
  2. run gpg --list-packets src/tests/data/test_stream_key_merge/key-both.asc in a top source directory
  3. compare results

Expected Behavior

Dumps from both rnp and gpg should have the same number of packets and types of packets dumped

Actual Behavior

rnp dump is shorter and secret key packets are missing:

:armored input
:off 0: packet header 0x99018d (tag 6, len 397)
Public key packet
    version: 4
    creation time: 1535720149 (Fri Aug 31 16:55:49 2018)
    public key algorithm: 1 (RSA (Encrypt or Sign))
    public key material:
        rsa n: 3072 bits
        rsa e: 17 bits
    keyid: 0x9747d2a6b3a63124
:off 400: packet header 0xb40f (tag 13, len 15)
UserID packet
    id: key-merge-uid-2
:off 417: packet header 0x8901ce (tag 2, len 462)
Signature packet
    version: 4
    type: 19 (Positive User ID certification)
    public key algorithm: 1 (RSA (Encrypt or Sign))
    hash algorithm: 8 (SHA256)
    hashed subpackets:
        :type 27, len 1
        key flags: 0x03 ( certify sign )
        :type 11, len 4
        preferred symmetric algorithms: AES-256, AES-192, AES-128, TripleDES (9, 8, 7, 2)
        :type 21, len 5
        preferred hash algorithms: SHA512, SHA384, SHA256, SHA224, SHA1 (10, 9, 8, 11, 2)
        :type 22, len 3
        preferred compression algorithms: ZLib, BZip2, ZIP (2, 3, 1)
        :type 30, len 1
        features: 0x01 ( mdc )
        :type 23, len 1
        key server preferences
        no-modify: 1
        :type 33, len 21
        issuer fingerprint: 0x090bd712a1166be572252c3c9747d2a6b3a63124 (20 bytes)
        :type 2, len 4
        signature creation time: 1598873838 (Mon Aug 31 15:37:18 2020)
    unhashed subpackets:
        :type 16, len 8
        issuer key ID: 0x9747d2a6b3a63124
    lbits: 0x12b8
    signature material:
        rsa s: 3067 bits
:off 882: packet header 0xb40f (tag 13, len 15)
UserID packet
    id: key-merge-uid-1
:off 899: packet header 0x8901ce (tag 2, len 462)
Signature packet
    version: 4
    type: 19 (Positive User ID certification)
    public key algorithm: 1 (RSA (Encrypt or Sign))
    hash algorithm: 8 (SHA256)
    hashed subpackets:
        :type 27, len 1
        key flags: 0x03 ( certify sign )
        :type 11, len 4
        preferred symmetric algorithms: AES-256, AES-192, AES-128, TripleDES (9, 8, 7, 2)
        :type 21, len 5
        preferred hash algorithms: SHA512, SHA384, SHA256, SHA224, SHA1 (10, 9, 8, 11, 2)
        :type 22, len 3
        preferred compression algorithms: ZLib, BZip2, ZIP (2, 3, 1)
        :type 30, len 1
        features: 0x01 ( mdc )
        :type 23, len 1
        key server preferences
        no-modify: 1
        :type 33, len 21
        issuer fingerprint: 0x090bd712a1166be572252c3c9747d2a6b3a63124 (20 bytes)
        :type 2, len 4
        signature creation time: 1598873844 (Mon Aug 31 15:37:24 2020)
    unhashed subpackets:
        :type 16, len 8
        issuer key ID: 0x9747d2a6b3a63124
    lbits: 0x8c10
    signature material:
        rsa s: 3071 bits
:off 1364: packet header 0xb9018d (tag 14, len 397)
Public subkey packet
    version: 4
    creation time: 1535720149 (Fri Aug 31 16:55:49 2018)
    public key algorithm: 1 (RSA (Encrypt or Sign))
    public key material:
        rsa n: 3072 bits
        rsa e: 17 bits
    keyid: 0xaf1114a47f5f5b28
:off 1764: packet header 0x8901b6 (tag 2, len 438)
Signature packet
    version: 4
    type: 24 (Subkey Binding Signature)
    public key algorithm: 1 (RSA (Encrypt or Sign))
    hash algorithm: 8 (SHA256)
    hashed subpackets:
        :type 27, len 1
        key flags: 0x0c ( encrypt_comm encrypt_storage )
        :type 33, len 21
        issuer fingerprint: 0x090bd712a1166be572252c3c9747d2a6b3a63124 (20 bytes)
        :type 2, len 4
        signature creation time: 1598873890 (Mon Aug 31 15:38:10 2020)
    unhashed subpackets:
        :type 16, len 8
        issuer key ID: 0x9747d2a6b3a63124
    lbits: 0x6a3d
    signature material:
        rsa s: 3070 bits
:off 2205: packet header 0xb9032e (tag 14, len 814)
Public subkey packet
    version: 4
    creation time: 1535720317 (Fri Aug 31 16:58:37 2018)
    public key algorithm: 17 (DSA)
    public key material:
        dsa p: 2048 bits
        dsa q: 256 bits
        dsa g: 2048 bits
        dsa y: 2047 bits
    keyid: 0x16cd16f267ccdd4f
:off 3022: packet header 0x89022d (tag 2, len 557)
Signature packet
    version: 4
    type: 24 (Subkey Binding Signature)
    public key algorithm: 1 (RSA (Encrypt or Sign))
    hash algorithm: 8 (SHA256)
    hashed subpackets:
        :type 33, len 21
        issuer fingerprint: 0x090bd712a1166be572252c3c9747d2a6b3a63124 (20 bytes)
        :type 2, len 4
        signature creation time: 1535720317 (Fri Aug 31 16:58:37 2018)
        :type 27, len 1
        key flags: 0x02 ( sign )
    unhashed subpackets:
        :type 16, len 8
        issuer key ID: 0x9747d2a6b3a63124
        :type 32, len 117
        embedded signature:
            version: 4
            type: 25 (Primary Key Binding Signature)
            public key algorithm: 17 (DSA)
            hash algorithm: 8 (SHA256)
            hashed subpackets:
                :type 33, len 21
                issuer fingerprint: 0x5fe514a54816e1b331686c2c16cd16f267ccdd4f (20 bytes)
                :type 2, len 4
                signature creation time: 1535720317 (Fri Aug 31 16:58:37 2018)
            unhashed subpackets:
                :type 16, len 8
                issuer key ID: 0x16cd16f267ccdd4f
            lbits: 0xbf32
            signature material:
                dsa r: 256 bits
                dsa s: 254 bits
    lbits: 0x0092
    signature material:
        rsa s: 3071 bits

gpg dump:

# off=0 ctb=99 tag=6 hlen=3 plen=397
:public key packet:
        version 4, algo 1, created 1535720149, expires 0
        pkey[0]: [3072 bits]
        pkey[1]: [17 bits]
        keyid: 9747D2A6B3A63124
# off=400 ctb=b4 tag=13 hlen=2 plen=15
:user ID packet: "key-merge-uid-2"
# off=417 ctb=89 tag=2 hlen=3 plen=462
:signature packet: algo 1, keyid 9747D2A6B3A63124
        version 4, created 1598873838, md5len 0, sigclass 0x13
        digest algo 8, begin of digest 12 b8
        hashed subpkt 27 len 1 (key flags: 03)
        hashed subpkt 11 len 4 (pref-sym-algos: 9 8 7 2)
        hashed subpkt 21 len 5 (pref-hash-algos: 10 9 8 11 2)
        hashed subpkt 22 len 3 (pref-zip-algos: 2 3 1)
        hashed subpkt 30 len 1 (features: 01)
        hashed subpkt 23 len 1 (keyserver preferences: 80)
        hashed subpkt 33 len 21 (issuer fpr v4 090BD712A1166BE572252C3C9747D2A6B3A63124)
        hashed subpkt 2 len 4 (sig created 2020-08-31)
        subpkt 16 len 8 (issuer key ID 9747D2A6B3A63124)
        data: [3067 bits]
# off=882 ctb=b4 tag=13 hlen=2 plen=15
:user ID packet: "key-merge-uid-1"
# off=899 ctb=89 tag=2 hlen=3 plen=462
:signature packet: algo 1, keyid 9747D2A6B3A63124
        version 4, created 1598873844, md5len 0, sigclass 0x13
        digest algo 8, begin of digest 8c 10
        hashed subpkt 27 len 1 (key flags: 03)
        hashed subpkt 11 len 4 (pref-sym-algos: 9 8 7 2)
        hashed subpkt 21 len 5 (pref-hash-algos: 10 9 8 11 2)
        hashed subpkt 22 len 3 (pref-zip-algos: 2 3 1)
        hashed subpkt 30 len 1 (features: 01)
        hashed subpkt 23 len 1 (keyserver preferences: 80)
        hashed subpkt 33 len 21 (issuer fpr v4 090BD712A1166BE572252C3C9747D2A6B3A63124)
        hashed subpkt 2 len 4 (sig created 2020-08-31)
        subpkt 16 len 8 (issuer key ID 9747D2A6B3A63124)
        data: [3071 bits]
# off=1364 ctb=b9 tag=14 hlen=3 plen=397
:public sub key packet:
        version 4, algo 1, created 1535720149, expires 0
        pkey[0]: [3072 bits]
        pkey[1]: [17 bits]
        keyid: AF1114A47F5F5B28
# off=1764 ctb=89 tag=2 hlen=3 plen=438
:signature packet: algo 1, keyid 9747D2A6B3A63124
        version 4, created 1598873890, md5len 0, sigclass 0x18
        digest algo 8, begin of digest 6a 3d
        hashed subpkt 27 len 1 (key flags: 0C)
        hashed subpkt 33 len 21 (issuer fpr v4 090BD712A1166BE572252C3C9747D2A6B3A63124)
        hashed subpkt 2 len 4 (sig created 2020-08-31)
        subpkt 16 len 8 (issuer key ID 9747D2A6B3A63124)
        data: [3070 bits]
# off=2205 ctb=b9 tag=14 hlen=3 plen=814
:public sub key packet:
        version 4, algo 17, created 1535720317, expires 0
        pkey[0]: [2048 bits]
        pkey[1]: [256 bits]
        pkey[2]: [2048 bits]
        pkey[3]: [2047 bits]
        keyid: 16CD16F267CCDD4F
# off=3022 ctb=89 tag=2 hlen=3 plen=557
:signature packet: algo 1, keyid 9747D2A6B3A63124
        version 4, created 1535720317, md5len 0, sigclass 0x18
        digest algo 8, begin of digest 00 92
        hashed subpkt 33 len 21 (issuer fpr v4 090BD712A1166BE572252C3C9747D2A6B3A63124)
        hashed subpkt 2 len 4 (sig created 2018-08-31)
        hashed subpkt 27 len 1 (key flags: 02)
        subpkt 16 len 8 (issuer key ID 9747D2A6B3A63124)
        subpkt 32 len 117 (signature: v4, class 0x19, algo 17, digest algo 8)
        data: [3071 bits]
# off=3582 ctb=95 tag=5 hlen=3 plen=1414
:secret key packet:
        version 4, algo 1, created 1535720149, expires 0
        pkey[0]: [3072 bits]
        pkey[1]: [17 bits]
        iter+salt S2K, algo: 7, SHA1 protection, hash: 2, salt: C964B0B97C7118F2
        protect count: 30408704 (237)
        protect IV:  c4 76 8b 87 b5 ec 0c 5e 46 a4 eb 2a 44 c6 7b cf
        skey[2]: [v4 protected]
        keyid: 9747D2A6B3A63124
# off=4999 ctb=b4 tag=13 hlen=2 plen=15
:user ID packet: "key-merge-uid-2"
# off=5016 ctb=89 tag=2 hlen=3 plen=462
:signature packet: algo 1, keyid 9747D2A6B3A63124
        version 4, created 1598873838, md5len 0, sigclass 0x13
        digest algo 8, begin of digest 12 b8
        hashed subpkt 27 len 1 (key flags: 03)
        hashed subpkt 11 len 4 (pref-sym-algos: 9 8 7 2)
        hashed subpkt 21 len 5 (pref-hash-algos: 10 9 8 11 2)
        hashed subpkt 22 len 3 (pref-zip-algos: 2 3 1)
        hashed subpkt 30 len 1 (features: 01)
        hashed subpkt 23 len 1 (keyserver preferences: 80)
        hashed subpkt 33 len 21 (issuer fpr v4 090BD712A1166BE572252C3C9747D2A6B3A63124)
        hashed subpkt 2 len 4 (sig created 2020-08-31)
        subpkt 16 len 8 (issuer key ID 9747D2A6B3A63124)
        data: [3067 bits]
# off=5481 ctb=b4 tag=13 hlen=2 plen=15
:user ID packet: "key-merge-uid-1"
# off=5498 ctb=89 tag=2 hlen=3 plen=462
:signature packet: algo 1, keyid 9747D2A6B3A63124
        version 4, created 1598873844, md5len 0, sigclass 0x13
        digest algo 8, begin of digest 8c 10
        hashed subpkt 27 len 1 (key flags: 03)
        hashed subpkt 11 len 4 (pref-sym-algos: 9 8 7 2)
        hashed subpkt 21 len 5 (pref-hash-algos: 10 9 8 11 2)
        hashed subpkt 22 len 3 (pref-zip-algos: 2 3 1)
        hashed subpkt 30 len 1 (features: 01)
        hashed subpkt 23 len 1 (keyserver preferences: 80)
        hashed subpkt 33 len 21 (issuer fpr v4 090BD712A1166BE572252C3C9747D2A6B3A63124)
        hashed subpkt 2 len 4 (sig created 2020-08-31)
        subpkt 16 len 8 (issuer key ID 9747D2A6B3A63124)
        data: [3071 bits]
# off=5963 ctb=9d tag=7 hlen=3 plen=1414
:secret sub key packet:
        version 4, algo 1, created 1535720149, expires 0
        pkey[0]: [3072 bits]
        pkey[1]: [17 bits]
        iter+salt S2K, algo: 7, SHA1 protection, hash: 2, salt: BD9A80A51CDCD016
        protect count: 30408704 (237)
        protect IV:  26 1e 71 c2 a9 6f c9 a9 bd a7 e9 13 4d 6d fd e5
        skey[2]: [v4 protected]
        keyid: AF1114A47F5F5B28
# off=7380 ctb=89 tag=2 hlen=3 plen=438
:signature packet: algo 1, keyid 9747D2A6B3A63124
        version 4, created 1598873890, md5len 0, sigclass 0x18
        digest algo 8, begin of digest 6a 3d
        hashed subpkt 27 len 1 (key flags: 0C)
        hashed subpkt 33 len 21 (issuer fpr v4 090BD712A1166BE572252C3C9747D2A6B3A63124)
        hashed subpkt 2 len 4 (sig created 2020-08-31)
        subpkt 16 len 8 (issuer key ID 9747D2A6B3A63124)
        data: [3070 bits]
# off=7821 ctb=9d tag=7 hlen=3 plen=897
:secret sub key packet:
        version 4, algo 17, created 1535720317, expires 0
        pkey[0]: [2048 bits]
        pkey[1]: [256 bits]
        pkey[2]: [2048 bits]
        pkey[3]: [2047 bits]
        iter+salt S2K, algo: 7, SHA1 protection, hash: 2, salt: 0AA85EAED4C53C40
        protect count: 30408704 (237)
        protect IV:  3a 66 2d a6 00 f1 96 15 ff 19 5f 36 61 3c 49 4a
        skey[4]: [v4 protected]
        keyid: 16CD16F267CCDD4F
# off=8721 ctb=89 tag=2 hlen=3 plen=557
:signature packet: algo 1, keyid 9747D2A6B3A63124
        version 4, created 1535720317, md5len 0, sigclass 0x18
        digest algo 8, begin of digest 00 92
        hashed subpkt 33 len 21 (issuer fpr v4 090BD712A1166BE572252C3C9747D2A6B3A63124)
        hashed subpkt 2 len 4 (sig created 2018-08-31)
        hashed subpkt 27 len 1 (key flags: 02)
        subpkt 16 len 8 (issuer key ID 9747D2A6B3A63124)
        subpkt 32 len 117 (signature: v4, class 0x19, algo 17, digest algo 8)
        data: [3071 bits]

antonsviridenko avatar Apr 02 '23 23:04 antonsviridenko

Thanks for spotting this! Should be related to multiple armored messages in one file. rnp::ArmoredSource with AllowMultiple flag should be used where dumper checks for armored input.

ni4 avatar Apr 03 '23 10:04 ni4