Skip to content

Encryption fails for some public keys #10

Open
@sygem

Description

@sygem

Given this armored public key:

-----BEGIN PGP PUBLIC KEY BLOCK-----

xjMEZcX4ehYJKwYBBAHaRw8BAQdArS4IJzI41xiclNFn2euYhhnnJepj2+4C
li1G7/zCrFDNdDc4MDIwYzk3MmQ4NmJiMDliMmY5OTFmYjBiNzlmNGViOGUw
OWViNDNiNTAwZTMwZGVhNzE4MjI3MDQ0Y2ExMzM6MCA8MTk2R0pXeUx4ekF3
M01pclRUN0JxczJpR3BVUWlvMjlHSEBydW5vbmZsdXguaW8+wosEEBYKAD4F
gmXF+HoECwkHCAmQaxuSLPI6z2MDFQgKBBYAAgECGQECmwMCHgEWIQQsFiWT
TSE5z0DVycVrG5Is8jrPYwAAmlABAPERnWR0dYPVA0PQHYpK+FcDYumvc6Qx
bGxlVkw1Jg1HAPdphwzk1ZHq8pIxQ9j9D1+pqlcQvH5X05XitCFKzWsOzjgE
ZcX4ehIKKwYBBAGXVQEFAQEHQKO4G2HuC0BKs5etwSp7vglsKhczqmvj2UMs
QpBzawdmAwEIB8J4BBgWCgAqBYJlxfh6CZBrG5Is8jrPYwKbDBYhBCwWJZNN
ITnPQNXJxWsbkizyOs9jAACZjwD9Gp9j9naqFiZdnoDIGTsbP/HfB/JQzU0z
jcQTPAJ6J3IA/RTEG/U7LSQLC+unhLKX6wMKgi3KWy1wVSEQGA+Ya9cK
=PaLS
-----END PGP PUBLIC KEY BLOCK-----

This code fails:

  final message = 'encrypt me';
  PublicKey publicKey = await OpenPGP.readPublicKey(armoredKey);
  final pgpMessage = await OpenPGP.createTextMessage(message);
  final encryptedMessage = await OpenPGP.encrypt(pgpMessage, encryptionKeys: [publicKey]);
  final armoredMessage = encryptedMessage.armor();

With an error: Exception: The list length (63) is invalid (min: 64, max: 64)

Stacktrace:

packages/pinenacl/api/api.dart 87:7 _constructList
packages/pinenacl/api/api.dart 47:16 withConstraint
packages/pinenacl/src/signatures/ed25519.dart 7:15 new
packages/dart_pg/src/packet/key/eddsa_public_params.dart 40:18 verify
dart-sdk/lib/_internal/js_dev_runtime/patch/async_patch.dart 84:54 runBody
dart-sdk/lib/_internal/js_dev_runtime/patch/async_patch.dart 127:5 _async
packages/dart_pg/src/packet/key/eddsa_public_params.dart 31:22 verify
packages/dart_pg/src/packet/signature_packet.dart 516:23 verify
dart-sdk/lib/_internal/js_dev_runtime/patch/async_patch.dart 84:54 runBody
dart-sdk/lib/_internal/js_dev_runtime/patch/async_patch.dart 127:5 _async
packages/dart_pg/src/packet/signature_packet.dart 480:22 verify
packages/dart_pg/src/packet/signature_packet.dart 536:12 verifyUserCertification
dart-sdk/lib/_internal/js_dev_runtime/patch/async_patch.dart 84:54 runBody
dart-sdk/lib/_internal/js_dev_runtime/patch/async_patch.dart 127:5 _async
packages/dart_pg/src/packet/signature_packet.dart 524:39 verifyUserCertification
packages/dart_pg/src/type/user.dart 66:29 verify

Note: I am able to use this public key in various online tools, like https://aliceandbob.io/online-pgp-tool and https://browserpgp.github.io/encrypt.html

Note: Some public keys do work, like this one:

-----BEGIN PGP PUBLIC KEY BLOCK-----

xjMEZbqNYxYJKwYBBAHaRw8BAQdAz/7C41hvCdpjP+idcZJFe9cPSdU46OTw
L5WTl9FGldvNdDViNDE0YmU5NjY5NWM4NWIxMzA1YzM5YTNlNjVjNjhjOTJk
Njk5MWEwZjI2ZWJiZmZjZGJhMWQ1YjQyOWZkYjE6MCA8MVAyZVpYVzlkNHlE
cGQ3aW94TXVLWGhtanRKeWhaS05zRUBydW5vbmZsdXguaW8+wowEEBYKAD4F
gmW6jWMECwkHCAmQ7UrME47VSDUDFQgKBBYAAgECGQECmwMCHgEWIQSRsbcv
cc1Bxm9f5gvtSswTjtVINQAAokIA/it2yN8CmoFyluNJVZaI5NOfU3GDD3eJ
Tlt93UlqUzq6AP42wAHcvHeuYlAeBaeNxZvvDsZX0cnRTbTwl1xuMBF0C844
BGW6jWMSCisGAQQBl1UBBQEBB0AMwkrcVIQcnM3bltungubtrr2wLSytdEMv
TTU64cm/FwMBCAfCeAQYFgoAKgWCZbqNYwmQ7UrME47VSDUCmwwWIQSRsbcv
cc1Bxm9f5gvtSswTjtVINQAAFMwBAKLL2nUGjdJXdESij3y6mLo76iXSIouH
t85ShYuPIwtnAQDP3/Ql5KoVGs3MFg5OEcd+Pjdt8fkVUTEpvqvBaEMmBw==
=1RIN
-----END PGP PUBLIC KEY BLOCK-----

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions