# utils/signing-utils

## Index

### Interfaces

* [RLPEncodedTx](https://josh-8.gitbook.io/celo-docs/developer-guide/summary/external-modules/broken-reference)

### Variables

* [publicKeyPrefix](#const-publickeyprefix)
* [sixtyFour](#const-sixtyfour)
* [thirtyTwo](#const-thirtytwo)

### Functions

* [chainIdTransformationForSigning](#chainidtransformationforsigning)
* [decodeSig](#decodesig)
* [encodeTransaction](#encodetransaction)
* [extractSignature](#extractsignature)
* [getAddressFromPublicKey](#getaddressfrompublickey)
* [getHashFromEncoded](#gethashfromencoded)
* [recoverKeyIndex](#recoverkeyindex)
* [recoverMessageSigner](#recovermessagesigner)
* [recoverTransaction](#recovertransaction)
* [rlpEncodedTx](#rlpencodedtx)
* [verifyEIP712TypedDataSigner](#verifyeip712typeddatasigner)
* [verifySignatureWithoutPrefix](#verifysignaturewithoutprefix)

## Variables

### `Const` publicKeyPrefix

• **publicKeyPrefix**: *number* = 4

*Defined in* [*packages/contractkit/src/utils/signing-utils.ts:21*](https://github.com/celo-org/celo-monorepo/blob/master/packages/contractkit/src/utils/signing-utils.ts#L21)

### `Const` sixtyFour

• **sixtyFour**: *number* = 64

*Defined in* [*packages/contractkit/src/utils/signing-utils.ts:22*](https://github.com/celo-org/celo-monorepo/blob/master/packages/contractkit/src/utils/signing-utils.ts#L22)

### `Const` thirtyTwo

• **thirtyTwo**: *number* = 32

*Defined in* [*packages/contractkit/src/utils/signing-utils.ts:23*](https://github.com/celo-org/celo-monorepo/blob/master/packages/contractkit/src/utils/signing-utils.ts#L23)

## Functions

### chainIdTransformationForSigning

▸ **chainIdTransformationForSigning**(`chainId`: number): *number*

*Defined in* [*packages/contractkit/src/utils/signing-utils.ts:36*](https://github.com/celo-org/celo-monorepo/blob/master/packages/contractkit/src/utils/signing-utils.ts#L36)

**Parameters:**

| Name      | Type   |
| --------- | ------ |
| `chainId` | number |

**Returns:** *number*

### decodeSig

▸ **decodeSig**(`sig`: any): *object*

*Defined in* [*packages/contractkit/src/utils/signing-utils.ts:245*](https://github.com/celo-org/celo-monorepo/blob/master/packages/contractkit/src/utils/signing-utils.ts#L245)

**Parameters:**

| Name  | Type |
| ----- | ---- |
| `sig` | any  |

**Returns:** *object*

* **r**: *Buffer‹›* = ethUtil.toBuffer(r) as Buffer
* **s**: *Buffer‹›* = ethUtil.toBuffer(s) as Buffer
* **v**: *number* = parseInt(v, 16)

### encodeTransaction

▸ **encodeTransaction**(`rlpEncoded`: [RLPEncodedTx](https://josh-8.gitbook.io/celo-docs/developer-guide/summary/external-modules/broken-reference), `signature`: object): *Promise‹EncodedTransaction›*

*Defined in* [*packages/contractkit/src/utils/signing-utils.ts:129*](https://github.com/celo-org/celo-monorepo/blob/master/packages/contractkit/src/utils/signing-utils.ts#L129)

**Parameters:**

▪ **rlpEncoded**: [*RLPEncodedTx*](https://josh-8.gitbook.io/celo-docs/developer-guide/summary/external-modules/broken-reference)

▪ **signature**: *object*

| Name | Type   |
| ---- | ------ |
| `r`  | Buffer |
| `s`  | Buffer |
| `v`  | number |

**Returns:** *Promise‹EncodedTransaction›*

### extractSignature

▸ **extractSignature**(`rawTx`: string): *object*

*Defined in* [*packages/contractkit/src/utils/signing-utils.ts:162*](https://github.com/celo-org/celo-monorepo/blob/master/packages/contractkit/src/utils/signing-utils.ts#L162)

**Parameters:**

| Name    | Type   |
| ------- | ------ |
| `rawTx` | string |

**Returns:** *object*

* **r**: *Buffer*
* **s**: *Buffer*
* **v**: *number*

### getAddressFromPublicKey

▸ **getAddressFromPublicKey**(`publicKey`: BigNumber): [*Address*](https://josh-8.gitbook.io/celo-docs/developer-guide/summary/_base_#address)

*Defined in* [*packages/contractkit/src/utils/signing-utils.ts:278*](https://github.com/celo-org/celo-monorepo/blob/master/packages/contractkit/src/utils/signing-utils.ts#L278)

**Parameters:**

| Name        | Type      |
| ----------- | --------- |
| `publicKey` | BigNumber |

**Returns:** [*Address*](https://josh-8.gitbook.io/celo-docs/developer-guide/summary/_base_#address)

### getHashFromEncoded

▸ **getHashFromEncoded**(`rlpEncode`: string): *string*

*Defined in* [*packages/contractkit/src/utils/signing-utils.ts:40*](https://github.com/celo-org/celo-monorepo/blob/master/packages/contractkit/src/utils/signing-utils.ts#L40)

**Parameters:**

| Name        | Type   |
| ----------- | ------ |
| `rlpEncode` | string |

**Returns:** *string*

### recoverKeyIndex

▸ **recoverKeyIndex**(`signature`: Uint8Array, `publicKey`: BigNumber, `hash`: Uint8Array): *number*

*Defined in* [*packages/contractkit/src/utils/signing-utils.ts:257*](https://github.com/celo-org/celo-monorepo/blob/master/packages/contractkit/src/utils/signing-utils.ts#L257)

Attempts each recovery key to find a match

**Parameters:**

| Name        | Type       |
| ----------- | ---------- |
| `signature` | Uint8Array |
| `publicKey` | BigNumber  |
| `hash`      | Uint8Array |

**Returns:** *number*

### recoverMessageSigner

▸ **recoverMessageSigner**(`signingDataHex`: string, `signedData`: string): *string*

*Defined in* [*packages/contractkit/src/utils/signing-utils.ts:212*](https://github.com/celo-org/celo-monorepo/blob/master/packages/contractkit/src/utils/signing-utils.ts#L212)

**Parameters:**

| Name             | Type   |
| ---------------- | ------ |
| `signingDataHex` | string |
| `signedData`     | string |

**Returns:** *string*

### recoverTransaction

▸ **recoverTransaction**(`rawTx`: string): *\[Tx, string]*

*Defined in* [*packages/contractkit/src/utils/signing-utils.ts:180*](https://github.com/celo-org/celo-monorepo/blob/master/packages/contractkit/src/utils/signing-utils.ts#L180)

**Parameters:**

| Name    | Type   |
| ------- | ------ |
| `rawTx` | string |

**Returns:** *\[Tx, string]*

### rlpEncodedTx

▸ **rlpEncodedTx**(`tx`: Tx): [*RLPEncodedTx*](https://josh-8.gitbook.io/celo-docs/developer-guide/summary/external-modules/broken-reference)

*Defined in* [*packages/contractkit/src/utils/signing-utils.ts:78*](https://github.com/celo-org/celo-monorepo/blob/master/packages/contractkit/src/utils/signing-utils.ts#L78)

**Parameters:**

| Name | Type |
| ---- | ---- |
| `tx` | Tx   |

**Returns:** [*RLPEncodedTx*](https://josh-8.gitbook.io/celo-docs/developer-guide/summary/external-modules/broken-reference)

### verifyEIP712TypedDataSigner

▸ **verifyEIP712TypedDataSigner**(`typedData`: EIP712TypedData, `signedData`: string, `expectedAddress`: string): *boolean*

*Defined in* [*packages/contractkit/src/utils/signing-utils.ts:222*](https://github.com/celo-org/celo-monorepo/blob/master/packages/contractkit/src/utils/signing-utils.ts#L222)

**Parameters:**

| Name              | Type            |
| ----------------- | --------------- |
| `typedData`       | EIP712TypedData |
| `signedData`      | string          |
| `expectedAddress` | string          |

**Returns:** *boolean*

### verifySignatureWithoutPrefix

▸ **verifySignatureWithoutPrefix**(`messageHash`: string, `signature`: string, `signer`: string): *boolean*

*Defined in* [*packages/contractkit/src/utils/signing-utils.ts:232*](https://github.com/celo-org/celo-monorepo/blob/master/packages/contractkit/src/utils/signing-utils.ts#L232)

**Parameters:**

| Name          | Type   |
| ------------- | ------ |
| `messageHash` | string |
| `signature`   | string |
| `signer`      | string |

**Returns:** *boolean*
