You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

encrypt.py 1.1KB

12345678910111213141516171819202122232425262728293031323334
  1. from core.helper.provider_cache import SingletonProviderCredentialsCache
  2. from core.plugin.entities.request import RequestInvokeEncrypt
  3. from core.tools.utils.encryption import create_provider_encrypter
  4. from models.account import Tenant
  5. class PluginEncrypter:
  6. @classmethod
  7. def invoke_encrypt(cls, tenant: Tenant, payload: RequestInvokeEncrypt):
  8. encrypter, cache = create_provider_encrypter(
  9. tenant_id=tenant.id,
  10. config=payload.config,
  11. cache=SingletonProviderCredentialsCache(
  12. tenant_id=tenant.id,
  13. provider_type=payload.namespace,
  14. provider_identity=payload.identity,
  15. ),
  16. )
  17. if payload.opt == "encrypt":
  18. return {
  19. "data": encrypter.encrypt(payload.data),
  20. }
  21. elif payload.opt == "decrypt":
  22. return {
  23. "data": encrypter.decrypt(payload.data),
  24. }
  25. elif payload.opt == "clear":
  26. cache.delete()
  27. return {
  28. "data": {},
  29. }
  30. else:
  31. raise ValueError(f"Invalid opt: {payload.opt}")