depreciate e712 w/ provider signing
This commit is contained in:
parent
5da31361c6
commit
85a222d93a
4 changed files with 49 additions and 110 deletions
|
@ -1,6 +1,6 @@
|
|||
const { EIP712Signer } = require('@ticket721/e712')
|
||||
import { concatSig } from 'eth-sig-util'
|
||||
|
||||
const Permit = [
|
||||
const PermitType = [
|
||||
{ name: 'owner', type: 'address' },
|
||||
{ name: 'spender', type: 'address' },
|
||||
{ name: 'value', type: 'uint256' },
|
||||
|
@ -8,36 +8,53 @@ const Permit = [
|
|||
{ name: 'deadline', type: 'uint256' }
|
||||
]
|
||||
|
||||
class PermitSigner extends EIP712Signer {
|
||||
const EIP712DomainType = [
|
||||
{ name: 'name', type: 'string' },
|
||||
{ name: 'version', type: 'string' },
|
||||
{ name: 'chainId', type: 'uint256' },
|
||||
{ name: 'verifyingContract', type: 'address' }
|
||||
]
|
||||
|
||||
export default class PermitSigner {
|
||||
constructor(_domain, _permitArgs) {
|
||||
super(_domain, ['Permit', Permit])
|
||||
this.permitArgs = _permitArgs
|
||||
this.domain = _domain
|
||||
}
|
||||
|
||||
// Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)
|
||||
setPermitInfo(_permitArgs) {
|
||||
this.permitArgs = _permitArgs
|
||||
}
|
||||
|
||||
getPayload() {
|
||||
return this.generatePayload(this.permitArgs, 'Permit')
|
||||
}
|
||||
|
||||
async getSignature(privateKey) {
|
||||
const payload = this.getPayload()
|
||||
const { hex, v, r, s } = await this.sign(privateKey, payload)
|
||||
getReqPayload() {
|
||||
return {
|
||||
hex,
|
||||
v,
|
||||
r: '0x' + r,
|
||||
s: '0x' + s
|
||||
domain: this.domain,
|
||||
primaryType: 'Permit',
|
||||
types: {
|
||||
Permit: PermitType,
|
||||
EIP712Domain: EIP712DomainType
|
||||
},
|
||||
message: this.permitArgs
|
||||
}
|
||||
}
|
||||
|
||||
getSignerAddress(permitArgs, signature) {
|
||||
const originalPayload = this.generatePayload(permitArgs, 'Permit')
|
||||
return this.verify(originalPayload, signature)
|
||||
getSignature(response) {
|
||||
response = response.substring(2)
|
||||
|
||||
const r = '0x' + response.substring(0, 64)
|
||||
const s = '0x' + response.substring(64, 128)
|
||||
|
||||
let v = parseInt(response.substring(128, 130), 16)
|
||||
|
||||
// fix ledger sign
|
||||
if (v === 0 || v === 1) {
|
||||
v = v + 27
|
||||
}
|
||||
|
||||
return {
|
||||
hex: concatSig(v, r, s),
|
||||
v,
|
||||
r,
|
||||
s
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = { PermitSigner }
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue