Node.js で HMAC-sha256 を使う

今日は小ネタです。

Node.js で HMAC-sha256 を使うには crypto パッケージを使えば良いですが、node/types のバージョンが古いと以下のコードはコンパイルエラーとなります。

import crypto from 'crypt'

const hash = crypto.createHmac('sha256', process.env.SECRET).update(body).digest('base64')

createHmac の第2引数が問題なのですが、理由は2つあります。

  • 第2引数は Buffer | KeyObject という型だが、古い定義では Buffer に string が含まれない。
  • process.env.SECRET は string | undefined という型になるらしく、undefined が createHmac の定義に引っ掛かってしまう。

解決するには、node/types を最新版にアップデートした上で、以下のように書き直します。

import crypto from 'crypto'

const hash = crypto.createHmac('sha256', process.env.SECRET ?? '').update(body).digest('base64)

ここまで到達するのに半日使ってしまいました。

投稿者について
みのしす

小さいときは科学者になろうとしたのに、その時にたまたま身に着けたプログラミングで未だに飯を食っているしがないおじさんです。(年齢的にはもうすぐおじいさん)

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です