S. Ota's avatar
S. Ota
_@susumuota.github.io
npub1susu...0yu8
A programmer. An author of nostr-keyx. Interests: Reinforcement Learning, Natural Language Processing and Artificial General Intelligence.
S. Ota's avatar
s_ota 3 years ago
OS ネイティブのキーチェーンアプリを利用して秘密鍵を保護する、NIP-07 ブラウザ拡張機能 nostr-keyx の v1.2.0 をリリースしました。 - Windows と Linux の OS ネイティブキーチェーン対応 初期設定が結構大変なので以下ドキュメントも参考にしつつ試してみてください。 また、YubiKey 等の任意のハードウェア認証デバイスから秘密鍵を取得することも出来ると思います。 `keychain.ts` の `spawnSync` のところで秘密鍵を返すコマンドを指定してください。 https://github.com/susumuota/nostr-keyx/blob/main/node/keychain.ts image
S. Ota's avatar
s_ota 3 years ago
`npm pack` して作った tgz を zip に変換するのこんな風にしてみた。 ``` "scripts": { "pack": "rm -f *.tgz *.zip ; npm pack ; tar tfz *.tgz | sed -e 's|^package/||' | zip -r@ `ls *.tgz | sed -e 's|\\.tgz|\\.zip|'`" }, ```
S. Ota's avatar
s_ota 3 years ago
設定がややこしくなってきたので Windows 用のディレクトリを作って分離して、残りの macOS と Linux はどうしようかと思って Unix というディレクトリを作った。しかし、最近 Unix という単語をほとんど聞かなくなったな...
S. Ota's avatar
s_ota 3 years ago
S. Ota's avatar
s_ota 3 years ago
LLM seems to become commodity.
S. Ota's avatar
s_ota 3 years ago
Iris リロードしたら "Post & Replies" というのが追加された。
S. Ota's avatar
s_ota 3 years ago
Nostr は SNS でなくゲーム。
S. Ota's avatar
s_ota 3 years ago
怪しいサイトで NIP-05 してると怪しい人とみなされるようになる
S. Ota's avatar
s_ota 3 years ago
S. Ota's avatar
s_ota 3 years ago
Nostr リレーこれで建てられた。 #nostrstudy docker run -p 7000:8080 scsibug/nostr-rs-relay
S. Ota's avatar
s_ota 3 years ago
とりあえず自分用リレーを建ててみよう。 #nostrstudy
S. Ota's avatar
s_ota 3 years ago
みなさまおつかれさまでした。勉強になりました😃 #nostrstudy
S. Ota's avatar
s_ota 3 years ago
仕様が数字の件、理系に略語を作らせると大抵ろくでもないことになるから数字にしておいたほうがマシだと思う。
S. Ota's avatar
s_ota 3 years ago
Google Authenticator や Anthy で QR コードを読み取った後、QR コードが読み取れない人用のリンクをクリックしてそこで表示されるテキスト (例: "JBSWY3DPEHPK3PXP") を安全な場所(macOS ならキーチェーンアクセス) に保存しておけば、アプリが消えても復活できます。
S. Ota's avatar
s_ota 3 years ago
2要素認証のコードはこんな感じ。secret はサービス側で QR コードを表示された時に、表示するオプションがあるのでそれを押すと base32 テキストが出てきます。 ``` // const hotp = (secret: BinaryLike, count: number, digits: number = 6) => { const c = Buffer.alloc(8); c.writeBigInt64BE(BigInt(count)); const hs = createHmac('sha1', secret).update(c).digest(); const s = (hs.readUInt32BE(hs[19] & 0x0f) & 0x7fffffff); return (s % (10 ** digits)).toString().padStart(digits, '0'); }; // const totp = (secret: BinaryLike, time: number, step: number = 30, digits: number = 6, t0: number = 0) => { const count = Math.floor((time - t0) / step); return hotp(secret, count, digits); }; // const twoFA = (secret: string, length: number = 1) => { const sec = base32.decode(secret); const now = Math.floor(Date.now() / 1000); return { totp: Array.from({ length }, (_, i) => totp(sec, now + 30 * i, 30, 6)), time: 30 - (now % 30) }; } ```
S. Ota's avatar
s_ota 3 years ago
2要素認証 は node で10行くらいで書けるのでシークレットさえちゃんと保存しておけばどうにかなることを最近知りました。