ERC7739.test.js 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. const { ethers } = require('hardhat');
  2. const { shouldBehaveLikeERC1271 } = require('./ERC1271.behavior');
  3. const { NonNativeSigner, P256SigningKey, RSASHA256SigningKey } = require('../../helpers/signers');
  4. describe('ERC7739', function () {
  5. describe('for an ECDSA signer', function () {
  6. before(async function () {
  7. this.signer = ethers.Wallet.createRandom();
  8. this.mock = await ethers.deployContract('$ERC7739ECDSAMock', ['ERC7739ECDSA', '1', this.signer.address]);
  9. });
  10. shouldBehaveLikeERC1271({ erc7739: true });
  11. });
  12. describe('for a P256 signer', function () {
  13. before(async function () {
  14. this.signer = new NonNativeSigner(P256SigningKey.random());
  15. this.mock = await ethers.deployContract('$ERC7739P256Mock', [
  16. 'ERC7739P256',
  17. '1',
  18. this.signer.signingKey.publicKey.qx,
  19. this.signer.signingKey.publicKey.qy,
  20. ]);
  21. });
  22. shouldBehaveLikeERC1271({ erc7739: true });
  23. });
  24. describe('for an RSA signer', function () {
  25. before(async function () {
  26. this.signer = new NonNativeSigner(RSASHA256SigningKey.random());
  27. this.mock = await ethers.deployContract('$ERC7739RSAMock', [
  28. 'ERC7739RSA',
  29. '1',
  30. this.signer.signingKey.publicKey.e,
  31. this.signer.signingKey.publicKey.n,
  32. ]);
  33. });
  34. shouldBehaveLikeERC1271({ erc7739: true });
  35. });
  36. });