How to use the @walletconnect/utils.convertHexToArrayBuffer function in @walletconnect/utils

To help you get started, we’ve selected a few @walletconnect/utils examples, based on popular ways it is used in public projects.

Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.

github WalletConnect / walletconnect-monorepo / packages / browser / src / webCrypto.ts View on Github external
payload: IEncryptionPayload,
  key: ArrayBuffer
): Promise<
  IJsonRpcRequest | IJsonRpcResponseSuccess | IJsonRpcResponseError | null
> {
  if (!key) {
    throw new Error('Missing key: required for decryption')
  }

  const verified: boolean = await verifyHmac(payload, key)
  if (!verified) {
    return null
  }

  const cipherText: ArrayBuffer = convertHexToArrayBuffer(payload.data)
  const iv: ArrayBuffer = convertHexToArrayBuffer(payload.iv)
  const buffer: ArrayBuffer = await aesCbcDecrypt(cipherText, key, iv)
  const utf8: string = convertArrayBufferToUtf8(buffer)
  let data: IJsonRpcRequest
  try {
    data = JSON.parse(utf8)
  } catch (error) {
    return null
  }

  return data
}
github WalletConnect / walletconnect-monorepo / packages / browser / src / webCrypto.ts View on Github external
export async function verifyHmac (
  payload: IEncryptionPayload,
  key: ArrayBuffer
): Promise {
  const cipherText: ArrayBuffer = convertHexToArrayBuffer(payload.data)
  const iv: ArrayBuffer = convertHexToArrayBuffer(payload.iv)
  const hmac: ArrayBuffer = convertHexToArrayBuffer(payload.hmac)
  const hmacHex: string = convertArrayBufferToHex(hmac, true)

  const unsigned: ArrayBuffer = concatArrayBuffers(cipherText, iv)
  const chmac: ArrayBuffer = await createHmac(unsigned, key)
  const chmacHex: string = convertArrayBufferToHex(chmac, true)

  if (removeHexPrefix(hmacHex) === removeHexPrefix(chmacHex)) {
    return true
  }

  return false
}
github WalletConnect / walletconnect-monorepo / packages / react-native / src / rnCrypto.ts View on Github external
export async function generateKey (length?: number): Promise {
  const _length = (length || 256) / 8
  const buffer: Buffer = await randomBytes(_length)
  const hex = convertBufferToHex(buffer, true)
  const result = convertHexToArrayBuffer(hex)

  return result
}
github WalletConnect / walletconnect-monorepo / packages / browser / src / webCrypto.ts View on Github external
export async function decrypt (
  payload: IEncryptionPayload,
  key: ArrayBuffer
): Promise<
  IJsonRpcRequest | IJsonRpcResponseSuccess | IJsonRpcResponseError | null
> {
  if (!key) {
    throw new Error('Missing key: required for decryption')
  }

  const verified: boolean = await verifyHmac(payload, key)
  if (!verified) {
    return null
  }

  const cipherText: ArrayBuffer = convertHexToArrayBuffer(payload.data)
  const iv: ArrayBuffer = convertHexToArrayBuffer(payload.iv)
  const buffer: ArrayBuffer = await aesCbcDecrypt(cipherText, key, iv)
  const utf8: string = convertArrayBufferToUtf8(buffer)
  let data: IJsonRpcRequest
  try {
    data = JSON.parse(utf8)
  } catch (error) {
    return null
  }

  return data
}
github WalletConnect / walletconnect-monorepo / packages / browser / src / webCrypto.ts View on Github external
export async function verifyHmac (
  payload: IEncryptionPayload,
  key: ArrayBuffer
): Promise {
  const cipherText: ArrayBuffer = convertHexToArrayBuffer(payload.data)
  const iv: ArrayBuffer = convertHexToArrayBuffer(payload.iv)
  const hmac: ArrayBuffer = convertHexToArrayBuffer(payload.hmac)
  const hmacHex: string = convertArrayBufferToHex(hmac, true)

  const unsigned: ArrayBuffer = concatArrayBuffers(cipherText, iv)
  const chmac: ArrayBuffer = await createHmac(unsigned, key)
  const chmacHex: string = convertArrayBufferToHex(chmac, true)

  if (removeHexPrefix(hmacHex) === removeHexPrefix(chmacHex)) {
    return true
  }

  return false
}
github WalletConnect / walletconnect-monorepo / packages / core / src / index.ts View on Github external
set key (value: string) {
    if (!value) {
      return
    }
    const key: ArrayBuffer = convertHexToArrayBuffer(value)
    this._key = key
  }
github WalletConnect / walletconnect-monorepo / packages / browser / src / webCrypto.ts View on Github external
export async function verifyHmac (
  payload: IEncryptionPayload,
  key: ArrayBuffer
): Promise {
  const cipherText: ArrayBuffer = convertHexToArrayBuffer(payload.data)
  const iv: ArrayBuffer = convertHexToArrayBuffer(payload.iv)
  const hmac: ArrayBuffer = convertHexToArrayBuffer(payload.hmac)
  const hmacHex: string = convertArrayBufferToHex(hmac, true)

  const unsigned: ArrayBuffer = concatArrayBuffers(cipherText, iv)
  const chmac: ArrayBuffer = await createHmac(unsigned, key)
  const chmacHex: string = convertArrayBufferToHex(chmac, true)

  if (removeHexPrefix(hmacHex) === removeHexPrefix(chmacHex)) {
    return true
  }

  return false
}