Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Encryption fails for some public keys #10

Open
sygem opened this issue Jul 25, 2024 · 0 comments
Open

Encryption fails for some public keys #10

sygem opened this issue Jul 25, 2024 · 0 comments

Comments

@sygem
Copy link

sygem commented Jul 25, 2024

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-----

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant