@privy-io/server-auth
Version:
Server-side client for the Privy API
2 lines (1 loc) • 4.63 kB
JavaScript
"use strict";var a=require("../../errors.js"),t=require("../utils.js");require("@hpke/chacha20poly1305"),require("@hpke/core"),require("@noble/curves/p256"),require("@noble/hashes/sha256"),require("canonicalize"),require("../../constants.js"),require("../../paths.js");exports.EthereumRpcApi=class{async signMessage(a){let e=await t.getRpcPathForRequest(a,this.api),i={};i=a.message instanceof Uint8Array?{message:Buffer.from(a.message).toString("hex"),encoding:"hex"}:{message:a.message,encoding:"utf-8"};let r={method:"personal_sign",params:i},n=t.extractIdempotencyKeyHeader(a),o=t.createAuthorizationSignatureHeader({method:"POST",url:this.api.baseURL+e,body:r,appId:this.appId,idempotencyKeyHeader:n,authorizationPrivateKey:this.authorizationPrivateKey}),{data:s}=await this.api.post(e,r,{headers:{...o,...n}});return{signature:s.data.signature,encoding:s.data.encoding}}async secp256k1Sign(a){let e=await t.getRpcPathForRequest(a,this.api),i={method:"secp256k1_sign",params:{hash:a.hash}},r=t.extractIdempotencyKeyHeader(a),n=t.createAuthorizationSignatureHeader({method:"POST",url:this.api.baseURL+e,body:i,appId:this.appId,idempotencyKeyHeader:r,authorizationPrivateKey:this.authorizationPrivateKey}),{data:o}=await this.api.post(e,i,{headers:{...n,...r}});return{signature:o.data.signature,encoding:o.data.encoding}}async signTypedData(a){let e=await t.getRpcPathForRequest(a,this.api),i={method:"eth_signTypedData_v4",params:{typed_data:{primary_type:a.typedData.primaryType,domain:a.typedData.domain,types:a.typedData.types,message:a.typedData.message}}},r=t.extractIdempotencyKeyHeader(a),n=t.createAuthorizationSignatureHeader({method:"POST",url:this.api.baseURL+e,body:i,appId:this.appId,idempotencyKeyHeader:r,authorizationPrivateKey:this.authorizationPrivateKey}),{data:o}=await this.api.post(e,i,{headers:{...n,...r}});return{signature:o.data.signature,encoding:o.data.encoding}}async signTransaction(a){let e=await t.getRpcPathForRequest(a,this.api),i={method:"eth_signTransaction",params:{transaction:{from:a.transaction.from,to:a.transaction.to,nonce:a.transaction.nonce,chain_id:a.transaction.chainId,data:a.transaction.data,value:a.transaction.value,type:a.transaction.type,gas_limit:a.transaction.gasLimit,gas_price:a.transaction.gasPrice,max_fee_per_gas:a.transaction.maxFeePerGas,max_priority_fee_per_gas:a.transaction.maxPriorityFeePerGas}}},r=t.extractIdempotencyKeyHeader(a),n=t.createAuthorizationSignatureHeader({method:"POST",url:this.api.baseURL+e,body:i,appId:this.appId,idempotencyKeyHeader:r,authorizationPrivateKey:this.authorizationPrivateKey}),{data:o}=await this.api.post(e,i,{headers:{...n,...r}});return{signedTransaction:o.data.signed_transaction,encoding:o.data.encoding}}async sendTransaction(e){let i=await t.getRpcPathForRequest(e,this.api),r={method:"eth_sendTransaction",caip2:e.caip2,params:{transaction:{from:e.transaction.from,to:e.transaction.to,nonce:e.transaction.nonce,chain_id:e.transaction.chainId,data:e.transaction.data,value:e.transaction.value,type:e.transaction.type,gas_limit:e.transaction.gasLimit,gas_price:e.transaction.gasPrice,max_fee_per_gas:e.transaction.maxFeePerGas,max_priority_fee_per_gas:e.transaction.maxPriorityFeePerGas}},sponsor:e.sponsor},n=t.extractIdempotencyKeyHeader(e),o=t.createAuthorizationSignatureHeader({method:"POST",url:this.api.baseURL+i,body:r,appId:this.appId,idempotencyKeyHeader:n,authorizationPrivateKey:this.authorizationPrivateKey}),{data:s}=await this.api.post(i,r,{headers:{...o,...n}});if(s.data)return{hash:s.data.hash,caip2:s.data.caip2};if(s.error)throw new a.PrivyApiError(s.error.code,null,s.error.message);throw Error("Unexpected API response to eth_sendTransaction")}async sign7702Authorization(e){let i=await t.getRpcPathForRequest(e,this.api),r={method:"eth_sign7702Authorization",params:{contract:e.contract,chain_id:e.chainId,nonce:e.nonce}},n=t.extractIdempotencyKeyHeader(e),o=t.createAuthorizationSignatureHeader({method:"POST",url:this.api.baseURL+i,body:r,appId:this.appId,idempotencyKeyHeader:n,authorizationPrivateKey:this.authorizationPrivateKey}),{data:s}=await this.api.post(i,r,{headers:{...o,...n}});if(s.data)return{chainId:s.data.authorization.chain_id,contract:s.data.authorization.contract,nonce:s.data.authorization.nonce,yParity:s.data.authorization.y_parity,r:s.data.authorization.r,s:s.data.authorization.s};if(s.error)throw new a.PrivyApiError(s.error.code,null,s.error.message);throw Error("Unexpected API response to eth_sign7702Authorization")}constructor({appId:a,api:t,authorizationPrivateKey:e}){this.authorizationPrivateKey=null,this.api=t,this.appId=a,e&&(this.authorizationPrivateKey=e)}};