> For the complete documentation index, see [llms.txt](https://biot-ws.gitbook.io/biot-core/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://biot-ws.gitbook.io/biot-core/api/sign.md).

# Sign

## [signDevicePrivateKey](https://github.com/BIoTws/biot-core/blob/master/core.js#L317)

Signing device private key

**Params:**

&#x20;     hash - **{string|buffer}** - Hash

{% tabs %}
{% tab title="JS module" %}

```javascript
let hash = crypto.createHash("sha256").update('test', "utf8").digest();
let signDevice = core.signDevicePrivateKey(hash);
```

{% endtab %}

{% tab title="CLI" %}

```bash
biot-core signDevicePrivateKey <hash>
```

{% endtab %}

{% tab title="RPC" %}

```javascript
client.request('signDevicePrivateKey', ['hash'], (err, data) => {
    if(err)
        throw err;

    console.log(data);
});
```

{% endtab %}

{% tab title="WS" %}

```javascript
let message_id = id++
socket.send(JSON.stringify({
	id: message_id,
	name: 'signDevicePrivateKey',
	args: ['hash']
}));
socket.onmessage = function (event) {
	let data = JSON.parse(event.data);
	if (data.id === message_id && data.name === 'signDevicePrivateKey') {
		console.log('result:', data.result);
	}
};
```

{% endtab %}

{% tab title="Result" %}

```javascript
{ sign: 'qzDF4L1uqLe7iORRb8LcpFm35P2u2JjFqu+bXw4wQ35Ool+yA26tbeyVq75AKftgazM9cOIbzQnUeaUJ+X5ygA==',
  pub_b64: 'AxhdtgYqxWoBQOojahmaWaNGUMfqVNAuwxsBINdOwyjH' }
```

{% endtab %}
{% endtabs %}

## [signWithAddress](https://github.com/BIoTws/biot-core/blob/master/core.js#L336)

Signing with address (watch: [myAddressInfo](https://biot-ws.gitbook.io/biot-core/api/address#myaddressinfo))

**Params:**

&#x20;   account - **{number}** - account

&#x20;   is\_change - **{number}** - is\_change

&#x20;   address\_index - **{number}** - address\_index

&#x20;    hash - **{string|buffer}** - Hash

{% tabs %}
{% tab title="JS module" %}

```javascript
let wallets = await core.getMyDeviceWallets();
let addresses = await core.getAddressesInWallet(wallets[0]);
let addressInfo = await core.myAddressInfo(addresses[0]);

let signAddress = core.signWithAddress(addressInfo.account, addressInfo.is_change, addressInfo.address_index, hash);
```

{% endtab %}

{% tab title="CLI" %}

```bash
biot-core signWithAddress <account> <isChange> <addrressIndex> <hash>
```

{% endtab %}

{% tab title="RPC" %}

```javascript
client.request('signWithAddress', ['account', 'isChange', 'addrressIndex', 'hash'], (err, data) => {
    if(err)
        throw err;

    console.log(data);
});
```

{% endtab %}

{% tab title="WS" %}

```javascript
let message_id = id++;
socket.send(JSON.stringify({
	id: id++,
	name: 'signWithAddress',
	args: ['account', 'isChange', 'addrressIndex', 'hash']
}));
socket.onmessage = function (event) {
	let data = JSON.parse(event.data);
	if (data.id === message_id && data.name === 'signWithAddress') {
		console.log('result:', data.result);
	}
};
```

{% endtab %}

{% tab title="Result" %}

```javascript
{ sign: 'Pmg7U6zco+pAvShR8vxE2D7G2tQz6KZ/8GgMRjs6cxQcFOKsX2U197IEYqhq3nU01/xZYYS9NSZh8bsktgx43g==',
  pub_b64: 'AmhkMy3pWRWb6jxjTp3sTiwZUf0riV2CIS4Iqi8Qzx56' }
```

{% endtab %}
{% endtabs %}

## [verifySign](https://github.com/BIoTws/biot-core/blob/master/core.js#L354)

Sign verification

**Params:**

&#x20;     hash - **{string|buffer}** - Hash

&#x20;     sign - **{string}** - Sign

&#x20;     pub\_64 - **{string}** - pub\_64

{% tabs %}
{% tab title="JS module" %}

```javascript
core.verifySign(hash, sign, pub_b64)
```

{% endtab %}

{% tab title="CLI" %}

```bash
biot-core verifySign <hash> <sign> <pub_b64>
```

{% endtab %}

{% tab title="RPC" %}

```javascript
client.request('verifySign', ['hash', 'sign', 'pub_b64'], (err, data) => {
    if(err)
        throw err;

    console.log(data);
});
```

{% endtab %}

{% tab title="WS" %}

```javascript
let message_id = id++;
socket.send(JSON.stringify({
	id: message_id,
	name: 'verifySign',
	args: ['hash', 'sign', 'pub_b64']
}));
socket.onmessage = function (event) {
	let data = JSON.parse(event.data);
	if (data.id === message_id && data.name === 'verifySign') {
		console.log('result:', data.result);
	}
};
```

{% endtab %}

{% tab title="Result" %}

```javascript
true
```

{% endtab %}
{% endtabs %}
