# Transfer Manager module for verifing transations with a signed message (SignedTransferManager.sol)

View Source: [contracts/modules/Experimental/TransferManager/SignedTransferManager.sol](https://github.com/PolymathNetwork/polymath-core/tree/096ba240a927c98e1f1a182d2efee7c4c4c1dfc5/contracts/modules/Experimental/TransferManager/SignedTransferManager.sol)

**↗ Extends:** [**TransferManager**](https://github.com/PolymathNetwork/polymath-core/tree/096ba240a927c98e1f1a182d2efee7c4c4c1dfc5/docs/api/TransferManager.md)

**SignedTransferManager**

## Contract Members

**Constants & Variables**

```javascript
bytes32 public constant INVALID_SIG;
```

**Events**

```javascript
event SignatureUsed(bytes  _data);
```

## Functions

* [(address \_securityToken, address \_polyAddress)](/polymath/api/signedtransfermanager.md)
* [getInitFunction()](/polymath/api/signedtransfermanager.md#getinitfunction)
* [checkSignatureValidity(bytes \_data)](/polymath/api/signedtransfermanager.md#checksignaturevalidity)
* [checkSigner(address \_signer)](/polymath/api/signedtransfermanager.md#checksigner)
* [executeTransfer(address \_from, address \_to, uint256 \_amount, bytes \_data)](/polymath/api/signedtransfermanager.md#executetransfer)
* [verifyTransfer(address \_from, address \_to, uint256 \_amount, bytes \_data)](/polymath/api/signedtransfermanager.md#verifytransfer)
* [invalidateSignature(address \_from, address \_to, uint256 \_amount, bytes \_data)](/polymath/api/signedtransfermanager.md#invalidatesignature)
* [getPermissions()](/polymath/api/signedtransfermanager.md#getpermissions)
* [\_checkSignatureIsInvalid(bytes \_data)](/polymath/api/signedtransfermanager.md#_checksignatureisinvalid)
* [\_checkSigner(address \_signer)](/polymath/api/signedtransfermanager.md#_checksigner)
* [\_invalidateSignature(bytes \_data)](/polymath/api/signedtransfermanager.md#_invalidatesignature)

Constructor

```javascript
function (address _securityToken, address _polyAddress) public nonpayable Module
```

**Arguments**

| Name            | Type    | Description                   |
| --------------- | ------- | ----------------------------- |
| \_securityToken | address | Address of the security token |
| \_polyAddress   | address | Address of the polytoken      |

### getInitFunction

⤾ overrides [IModule.getInitFunction](https://github.com/PolymathNetwork/polymath-core/tree/096ba240a927c98e1f1a182d2efee7c4c4c1dfc5/docs/api/IModule.md#getinitfunction)

This function returns the signature of configure function

```javascript
function getInitFunction() external pure
returns(bytes4)
```

**Arguments**

| Name | Type | Description |
| ---- | ---- | ----------- |

### checkSignatureValidity

function to check if a signature is still valid

```javascript
function checkSignatureValidity(bytes _data) external view
returns(bool)
```

**Arguments**

| Name   | Type  | Description |
| ------ | ----- | ----------- |
| \_data | bytes | signature   |

### checkSigner

```javascript
function checkSigner(address _signer) external view
returns(bool)
```

**Arguments**

| Name     | Type    | Description |
| -------- | ------- | ----------- |
| \_signer | address |             |

### executeTransfer

⤾ overrides [ITransferManager.executeTransfer](https://github.com/PolymathNetwork/polymath-core/tree/096ba240a927c98e1f1a182d2efee7c4c4c1dfc5/docs/api/ITransferManager.md#executetransfer)

allow verify transfer with signature

```javascript
function executeTransfer(address _from, address _to, uint256 _amount, bytes _data) external nonpayable onlySecurityToken 
returns(enum ITransferManager.Result)
```

**Arguments**

| Name     | Type    | Description           |
| -------- | ------- | --------------------- |
| \_from   | address | address transfer from |
| \_to     | address | address transfer to   |
| \_amount | uint256 | transfer amount       |
| \_data   | bytes   | signature             |

Sig needs to be valid (not used or deemed as invalid) Signer needs to be in the signers mapping |

### verifyTransfer

⤾ overrides [ITransferManager.verifyTransfer](https://github.com/PolymathNetwork/polymath-core/tree/096ba240a927c98e1f1a182d2efee7c4c4c1dfc5/docs/api/ITransferManager.md#verifytransfer)

allow verify transfer with signature

```javascript
function verifyTransfer(address _from, address _to, uint256 _amount, bytes _data) public view
returns(enum ITransferManager.Result, bytes32)
```

**Arguments**

| Name     | Type    | Description           |
| -------- | ------- | --------------------- |
| \_from   | address | address transfer from |
| \_to     | address | address transfer to   |
| \_amount | uint256 | transfer amount       |
| \_data   | bytes   | signature             |

Sig needs to be valid (not used or deemed as invalid) Signer needs to be in the signers mapping |

### invalidateSignature

allow signers to deem a signature invalid

```javascript
function invalidateSignature(address _from, address _to, uint256 _amount, bytes _data) external nonpayable
```

**Arguments**

| Name     | Type    | Description           |
| -------- | ------- | --------------------- |
| \_from   | address | address transfer from |
| \_to     | address | address transfer to   |
| \_amount | uint256 | transfer amount       |
| \_data   | bytes   | signature             |

Sig needs to be valid (not used or deemed as invalid) Signer needs to be in the signers mapping |

### getPermissions

⤾ overrides [IModule.getPermissions](https://github.com/PolymathNetwork/polymath-core/tree/096ba240a927c98e1f1a182d2efee7c4c4c1dfc5/docs/api/IModule.md#getpermissions)

Return the permissions flag that are associated with ManualApproval transfer manager

```javascript
function getPermissions() public view
returns(bytes32[])
```

**Arguments**

| Name | Type | Description |
| ---- | ---- | ----------- |

### \_checkSignatureIsInvalid

```javascript
function _checkSignatureIsInvalid(bytes _data) internal view
returns(bool)
```

**Arguments**

| Name   | Type  | Description |
| ------ | ----- | ----------- |
| \_data | bytes |             |

### \_checkSigner

```javascript
function _checkSigner(address _signer) internal view
returns(bool)
```

**Arguments**

| Name     | Type    | Description |
| -------- | ------- | ----------- |
| \_signer | address |             |

### \_invalidateSignature

```javascript
function _invalidateSignature(bytes _data) internal nonpayable
```

**Arguments**

| Name   | Type  | Description |
| ------ | ----- | ----------- |
| \_data | bytes |             |


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://developers.polymath.network/polymath/api/signedtransfermanager.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
