Hacktoberfest 2026: những issue maintainer đã đánh dấu cho tháng Mười, đang mở và phù hợp người mới. Xem issue Hacktoberfest

Port pluggable cryptography and re-wire current cryptography as default

Đang mở
#430 0 bình luận 0 reaction 1 người được giao Xem trên GitHub

@gkc đang làm issue này rồi.

Từ ngày 1/9/2026.

Đánh giá

Issue này chưa được đánh giá.

Mô tả

enhancement
Is your feature request related to a problem? Please describe.

The current cyrptography is hard coded in SelfKeyCommands, SharedKeyCommands, PublicKeyCommands and both of AtClientImpl's notification handlers. An application cannot supply a different scheme.

NOTE: Metadata.AppMetadata — the field that would carry the cryptography scheme / provider — already exists on trunk but nothing in the repo reads or writes it.

Describe the solution you'd like

A new interface CryptographyProvider which defines 2 methods encrypt/decrypt. This is mirrors CryptoProvider in Dart.
The existing cryptography is moved into an implementation LegacyCryptographyProvider. This mirrors LegacyCryptoProvider in Dart.
RuntimeCryptographyProvider is a implementation with a map of registered implementations keyed by provider ids. It's encrypt/decrypt implementation will delegate to a registered implementation based on the key Metadata.AppMetadata. Where this is not set it will default.
AtClientImpl and the static command method it invokes to execute at server commands will be modified to invoke a CryptographyProvider.
AtClients builder will be modified to pass a RuntimeCryptographyProvider, with LegacyCryptoProvider as the default, to the AtClientImpl it constructs.

Dart mapping

Dart Java
CryptoProvider (crypto.dart) CryptographyProvider (api)
CryptoProvider.id dropped — the id is the registry key, not provider behaviour
CryptoContext {atClient, atKeysIo} (crypto.dart) dropped — (AtCommandExecutor, AtCommandExecutorContext)
CryptoConfig {defaultProviderId, providers, lookup} (crypto.dart) dropped — RuntimeCryptographyProvider's builder
CryptoConfig.lookup(id) linear scan over a List Map<CryptographyProviderId, CryptographyProvider>
legacyCryptoProviderId = 'legacy' (crypto.dart) CryptographyProviderId.LEGACY — same wire literal
CryptoRuntime (crypto_runtime.dart) RuntimeCryptographyProvider (impl.crypto)
encryptForPut / encryptForNotification CryptographyProvider.encrypt
decryptForGet / decryptForNotification / decryptForSyncConflict CryptographyProvider.decrypt
LegacyCryptoProvider (legacy/legacy_crypto_provider.dart) LegacyCryptographyProvider (impl.crypto)
LegacyEncryption.build / LegacyDecryption.build runtime key sniffing private methods per Keys.AtKey subtype
SelfKeyEncryption / SelfKeyDecryption encryptSelfKey / decryptSelfKey
SharedKeyEncryption / SharedByMeDecryption / SharedWithMeDecryption encryptSharedKey / decryptSharedKey
AbstractAtKeyEncryption (shared-key management) the shared-key helpers inside LegacyCryptographyProvider
AppMetadata.providerId (String, at_commons) Metadata.AppMetadata.providerId typed as CryptographyProviderId
Describe alternatives you've considered

like for like mapping

Additional context

No response

Ngôn ngữ chính
Java
Star
2
Fork
19
Merge trung bình
23 giờ 2 phút
Pull request đã merge (30 ngày)
8

Chuẩn bị môi trường

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của atsign-foundation/at_java

Tất cả issue của atsign-foundation/at_java

Issue tương tự

Thêm issue về Java

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.