Skip to content

Conversation

@abretonc7s
Copy link
Collaborator

Description

Problem

The recent update to eciesjs v0.4.12 switched from using crypto to node:crypto, causing React Native examples to fail due to missing module resolution. This PR fixes the module resolution in the React Native environment.

Changes

  • Added custom resolver in metro.config.js for @ecies/ciphers/aes and @ecies/ciphers/chacha
  • Updated eciesjs dependency from v0.4.4 to v0.4.12
  • Added node:crypto alias to resolve to react-native-crypto
  • Added required URL field to dapp metadata in example apps
  • Deprecated base64Icon in DappMetadata type (use iconUrl instead)

Implementation Details

Metro Configuration Updates

// Added resolver for node:crypto
'node:crypto': require.resolve('react-native-crypto')

// Added custom resolvers for ecies cipher modules
'@ecies/ciphers/aes': '.../node_modules/@ecies/ciphers/dist/aes/node.js'
'@ecies/ciphers/chacha': '.../node_modules/@ecies/ciphers/dist/chacha/node.js'

Breaking Changes

  • None. All changes maintain backward compatibility.

Deprecations

  • base64Icon in DappMetadata is now deprecated in favor of iconUrl

@codecov
Copy link

codecov bot commented Nov 26, 2024

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 74.14%. Comparing base (8ab1cf1) to head (fa10eac).

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #1147      +/-   ##
==========================================
- Coverage   74.26%   74.14%   -0.12%     
==========================================
  Files         181      181              
  Lines        4297     4297              
  Branches     1052     1052              
==========================================
- Hits         3191     3186       -5     
- Misses       1106     1111       +5     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

@abretonc7s abretonc7s marked this pull request as ready for review November 27, 2024 04:58
@abretonc7s abretonc7s requested a review from a team as a code owner November 27, 2024 04:58
@socket-security
Copy link

socket-security bot commented Nov 27, 2024

New and updated dependencies detected. Learn more about Socket for GitHub ↗︎

Package New capabilities Transitives Size Publisher
npm/@ecies/[email protected] None 0 13.8 kB kigawas
npm/@metamask/[email protected] None 0 2.97 MB metamaskbot
npm/@metamask/[email protected] environment, eval, filesystem, network 0 14.1 MB metamaskbot
npm/@noble/[email protected] 🔁 npm/@noble/[email protected] None 0 707 kB paulmillr
npm/[email protected] None 0 36.9 kB kigawas

View full report↗︎

@socket-security
Copy link

socket-security bot commented Nov 27, 2024

👍 Dependency issues cleared. Learn more about Socket for GitHub ↗︎

This PR previously contained dependency changes with security issues that have been resolved, removed, or ignored.

Ignoring: npm/@metamask/[email protected]

View full report↗︎

Next steps

Take a deeper look at the dependency

Take a moment to review the security alert above. Review the linked package source code to understand the potential risk. Ensure the package is not malicious before proceeding. If you're unsure how to proceed, reach out to your security team or ask the Socket team for help at support [AT] socket [DOT] dev.

Remove the package

If you happen to install a dependency that Socket reports as Known Malware you should immediately remove it and select a different dependency. For other alert types, you may may wish to investigate alternative packages or consider if there are other ways to mitigate the specific risk posed by the dependency.

Mark a package as acceptable risk

To ignore an alert, reply with a comment starting with @SocketSecurity ignore followed by a space separated list of ecosystem/package-name@version specifiers. e.g. @SocketSecurity ignore npm/[email protected] or ignore all packages with @SocketSecurity ignore-all

@sonarqubecloud
Copy link

@sonarqubecloud
Copy link

Copy link
Collaborator

@christopherferreira9 christopherferreira9 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@christopherferreira9
Copy link
Collaborator

@SocketSecurity ignore npm/@metamask/[email protected]

@christopherferreira9 christopherferreira9 merged commit 0f445ea into main Jan 20, 2025
34 checks passed
@christopherferreira9 christopherferreira9 deleted the fix/rndemos branch January 20, 2025 10:48
@kelven7224
Copy link

Start

@kelven7224 kelven7224 mentioned this pull request Jan 20, 2025
@christopherferreira9 christopherferreira9 mentioned this pull request Jan 20, 2025
3 tasks
@kigawas
Copy link

kigawas commented Mar 11, 2025

react-native-crypto is old and excessive, I'd recommend to use @noble/ciphers:

// metro.config.js
  resolver: {
    unstable_enablePackageExports: true,
  },

or

'@ecies/ciphers/aes': '.../node_modules/@ecies/ciphers/dist/aes/noble.js'
'@ecies/ciphers/chacha': '.../node_modules/@ecies/ciphers/dist/chacha/noble.js'

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

Successfully merging this pull request may close these issues.

5 participants