update Account

This commit is contained in:
Pavel Prichodko 2022-06-03 17:44:55 +02:00 committed by Felicio Mununga
parent 4f2581e462
commit 085906398a
No known key found for this signature in database
GPG Key ID: 0EB8D75C775AB6F1
2 changed files with 12 additions and 13 deletions

View File

@ -8,10 +8,10 @@ describe('Account', () => {
it('should verify the signature', async () => { it('should verify the signature', async () => {
const account = new Account() const account = new Account()
const message = '123' const message = utf8ToBytes('123')
const messageHash = keccak256(utf8ToBytes(message)) const messageHash = keccak256(message)
const signature = await account.sign(message) const signature = await account.signMessage(message)
expect(secp.verify(signature, messageHash, account.publicKey)).toBeTruthy() expect(secp.verify(signature, messageHash, account.publicKey)).toBeTruthy()
}) })
@ -19,10 +19,10 @@ describe('Account', () => {
it('should not verify signature with different message', async () => { it('should not verify signature with different message', async () => {
const account = new Account() const account = new Account()
const message = '123' const message = utf8ToBytes('123')
const messageHash = keccak256(utf8ToBytes(message)) const messageHash = keccak256(message)
const signature = await account.sign('abc') const signature = await account.signMessage(utf8ToBytes('abc'))
expect(secp.verify(signature, messageHash, account.publicKey)).toBeFalsy() expect(secp.verify(signature, messageHash, account.publicKey)).toBeFalsy()
}) })

View File

@ -1,25 +1,24 @@
import { keccak256 } from 'ethereum-cryptography/keccak' import { keccak256 } from 'ethereum-cryptography/keccak'
import { getPublicKey, sign, utils } from 'ethereum-cryptography/secp256k1' import { getPublicKey, sign, utils } from 'ethereum-cryptography/secp256k1'
import { bytesToHex, utf8ToBytes } from 'ethereum-cryptography/utils' import { bytesToHex } from 'ethereum-cryptography/utils'
import { privateKeyToAddress } from './utils/private-key-to-address'
export class Account { export class Account {
public privateKey: string public privateKey: string
public publicKey: string public publicKey: string
public address: string public chatKey: string
constructor() { constructor() {
const privateKey = utils.randomPrivateKey() const privateKey = utils.randomPrivateKey()
const publicKey = getPublicKey(privateKey) const publicKey = getPublicKey(privateKey)
const chatKey = getPublicKey(privateKey, true)
this.privateKey = bytesToHex(privateKey) this.privateKey = bytesToHex(privateKey)
this.publicKey = bytesToHex(publicKey) this.publicKey = bytesToHex(publicKey)
this.address = privateKeyToAddress(this.privateKey) this.chatKey = bytesToHex(chatKey)
} }
sign = (payload: string) => { signMessage = (payload: Uint8Array) => {
const hash = keccak256(utf8ToBytes(payload)) const hash = keccak256(payload)
return sign(hash, this.privateKey) return sign(hash, this.privateKey)
} }
} }