小ネタ:ed25519秘密鍵公開鍵とJson serialized canonical

あちこちに散らばるとモノを探すだけのために時間を使っちゃうことになるんで、こっちにメモ。
【ED25519秘密鍵と公開鍵の作成】
opensslを使って作成する。RSAなどと同じ。
Linux Mint 22.3で作成
opensslのバージョン
OpenSSL 3.0.13 30 Jan 2024 (Library: OpenSSL 3.0.13 30 Jan 2024)
まず秘密鍵を作る
openssl genpkey -algorithm ed25519 -out ed25519-sercret.key
作った秘密鍵を使って公開鍵を作る
openssl pkey -in ed25519-secret.key -pubout -out ed25519-pub.key
ActivityPubでActivityとObjectの署名に使える予定らしい
https://codeberg.org/fediverse/fep/src/branch/main/fep/8b32/fep-8b32.md
これをAcitvityPubのJSONで使うにはこのままではなくて、さらにpublicMultibase形式に変換する必要があるらしい
・BEGIN PUBLICK KEYとEND PUBLIC KEYの接頭辞を削除
・改行を削除
decode_base64でバイナリデータに戻して、base58形式に変換して使うとのこと。
pem形式からpublicMultibase形式に変換してJSONに登録
署名する時はpublicMultibase形式からpem形式に戻して署名
検証する時も同じことを…って、すげー手間だな、これ。
【Json serialized canonical】
ActivityPubの本体のJSONを対象に署名する必要がある。
現状2種類あるらしい。
・Mastodonが実装している Linked Data Signatures
https://docs.joinmastodon.org/spec/security/#ld
・FEP-8b32 で提案されている Integrity proofs
https://amasecocoa.github.io/fep/8b32/
Mastodonが採用してるやつは古い仕様で、公式自体が非推奨だし、複雑怪奇の伏魔殿。かかわりたくない。
FEP-8b32がこれから使われると思うけど、これはこれで現在仕様検討のdraft状態で現状の決定ではない。
将来的にFEP 8B32になると想定して検討するとして、やっぱり具体的に署名対象ってどれで、それをどうすんの問題。
ActivityのJSONをcanonicalしてserializeしたものを対象にする、とのこと。
なにそれ?だったんだけど「日本語でどうぞ」だった。
canonical
→キーを辞書順に並べる
serialize
→文字列にする
※改行や空白、インデントなどは不要なので削除
perlのJSONの場合は
$json=JSON->new->canonical(1)->utf8(1)->indent(0)->space_before(0)->space_after(0)
で、OKのようだ。
ただ、perlの場合「0.00」というのが文字列の「0」になるんで、数値をそのまま数値として使うには「var+=0」などと明示的に数値にする必要がある、らしい。
【オチ】
ここまでダラダラとメモったのは、ActivityPubで本体に署名をするため。
本体に署名されていれば、本体の改竄検知に利用できるから。
これに対応することで、Mastodon系などはメンションの時に「転送」することができる。
いわゆる「ゴーストリプライ」問題の対応。
とはいえ、転送しなくてもAnnounceすれば同じこと。どっちで問題解決する?という程度の話だろう。
それより、この本体署名をつけることをMUSTにするには問題があると思っていて。
署名を認証するためには「公開鍵」が必要。actor(アカウント)が削除されたら「公開鍵」を取得できない。
(ActivityPubの仕様的に「転送」はMUSTだけど、本文署名は仕様にはないからややこしいんだけど)
なので、公開鍵はアカウントが削除された後もキャッシュされたりサーバーが一定期間保持したりするらしい。
「公開鍵」を取得できることが大前提。
いつまでキャッシュ・保持しなきゃいけないの?と言われても答えられないはず。本体に署名をつける意味ある?ということになるんじゃないかな。
Misskey系のパッケージは本体署名に対応してないんだけど、むしろこっちの方が合理的かもしれない。
様子見するけど、これって対応する必要がないと思ったなあ。どうなんだろ…
» ローカル環境で電子書籍を作る、Macアプリ・Windows版ツール 「かんたんEPUB3作成easy_epub」
ActivityPubは自作実装しよう!

タイトル通り、ActivityPubは自作実装がおすすめ、というのが今回のエントリ。
ActivityPubとかフェディバース(Fediverse)とか言うとなんか難しそうだけど、ざっくり言うと2ちゃんねるにちょっと今どきの機能を追加した掲示板みたいなもんだ。
平成の頃のインターネット、レンタルサーバーにフリーの掲示板CGIをFTPでアップロードして設置したことのあるひとなら、何をしてるのかイメージしてもらえると思う。
ネットの記事なんかを見てみると。
ActivityPubを自作するのは大変なだけなのでやめた方がいい、そして、どうしても自分で設置したいならいろんな機能が用意されたパッケージやフレームワークを使うべき、らしい。
言いたいことは理解するけど、届けたい相手の設定を間違ってる。
そもそも、MastodonやMisskeyといったパッケージをインストールして設定できたり、フレームワークを利用してオリジナルなサーバーを立ち上げたりできるスキルを持っているひとなら、ActivityPubを自作する方が早いだろう。
もちろん、いろんなサーバーの機能フルスペックは難しいけど、「ひとりで使う」「欲しい機能を限定する」という前提でいうと、自由度の高い/最低限の仕様だけが決められているActivityPubはハードルが低くて思ってるより簡単。
わたしはperlだけで作ったけど、今どきならrubyやphpだけでもっと簡単に作れると思う。
なんならデータベースも不要だし、メールサーバーやキャシュサーバーも不要。
フロント側もWEBプッシュだの非同期で情報取得なんかも不要。F5で再読み込みするのが昔の掲示板の流儀。
perlやruby、phpといったレンタルサーバーでも利用できる、いわゆる軽量プログラミング言語ひとつで実装できる。ほかに必要なものはない。
そしてなにより、しょっちゅう引用させてもらってる
「Webhook的に ActivityPub に投稿する実装を作った」
オープンな仕様 ActivityPub の力を借りて自前実装で他の実装とつながれる体験は心躍るものがあり、テキストを発信するだけのBOTを動かすだけでも動いたときは感動を覚えた
ほんと、これにつきる。自作すればこの楽しみを全身で享受できる。
ここんとこのエントリで書いているHTTP Signatureが面倒くさいんだけど、ここさえクリアしてしまえば、あとは昔ながらの掲示板CGIと同じようなものだ。
ActivityPubの実装についてホームページにコーナーを作って紹介してます。よろしければどうぞ
「おひとり様ActivityPubサーバーの自作実装」
これだけのことで、自分だけの掲示板を持てるんだからActivityPubという仕様には大感謝!
» ローカル環境で電子書籍を作る、Macアプリ・Windows版ツール 「かんたんEPUB3作成easy_epub」
web本棚のソースコード公開

今まで、スクリプトのソースコードを晒すことはしてなかった。
いや、ぶっちゃけ、自分で見ても酷いありさまで、とてもひと様に見せるようなシロモノじゃないから。
そんなものを公開したところで、誰のためにもならない・誰の役にも立たない。
…ということなんだけど。
還暦も過ぎるといろいろ終活を考えなきゃいけない。
先日のエントリ 「web本棚」 でも終活の一環でサービス終了ということを書いていて、ちょっと考え直した。
書き散らかしてきたスクリプトを晒したところで誰のためにもならないけど
「晒すことで自分のやってきたことを自分でふりかえることになる」
のは、自分のためになる。単純に面白い。
ということでちょっとずつ晒してみようかとホームページに新コーナーを作った。
「On Golden Pond」
まずはweb本棚のソースコードを公開
「web本棚のソースコード::On Golden Pond」 
もう20年ほど前に作って、改築増築改修をしてきたもの。
SQLもまだ覚えたてみたいな時で、今だったらjoinしてgroupingしてとかSQLだけで済ませられるようなことも、ひとつずつ抽出して、抽出した結果をperlで処理してる。
なかなか恥しいシロモノなんだけど、怪我の功名というかSQLが単純なので処理の切り分けがperlのところで済むので簡単に改修できる。
とはいえ問題がjavascriptとスタイルシート。
javascriptはjQueryなんか使っててそのままだし、スタイルシートがjQueryべったりで、スマホ対応が無理。これは諦めた。
・本棚を眺めてるというのにページ遷移なんかで読みこみが入るとうっとーしーからアクションを起こしてもその場から極力動かずに済むように
・没頭してると時間を忘れそうだから時計表示は必須だろうし
などなど、どうしても(当時としては)jQueryが必要だったんだよなあ。失敗だった。
ソースコードを公開するなら、今どきなら、プログラマ御用達のgithubやcodebergを使うんだろうけど、わたしはただの素人でプログラマではない。
それに不具合やリクエストが飛んできても対応できない…というか、その気もない。
文字通り、素人のクソコードを本職のプログラマが利用するようなサイトに掲載する度胸もないしね。
なので、自分のホームページでそっと公開することにした。
自分のホームページなら、何をするにしてもすべて自分の管理下、ほかの誰かに迷惑をかけることもないという気楽さもあるしね。
» ローカル環境で電子書籍を作る、Macアプリ・Windows版ツール 「かんたんEPUB3作成easy_epub」
web本棚

20年ほど前、2006年4月1日から公開しているweb本棚がある。
ブログブームがひと段落して、mixiなどのSNSが話題になって、次はSNSですよという頃だった。
既読/未読がわかって、本をダブって買わないために、という本棚を作ってたところで、それなら本棚の共有サイトを作ってサービス公開してみようというのが始まり。
『趣味は読書2』
図書館で本を借りて図書カードを見て
「あれ?あのコもこれ読んだのかぁ」とか「おっあいつこんなの読むんだ」と、ニマニマしたり
ひとんちに呼ばれたら、まず本棚を覗いて
「これ、わたしも読んだよ」と言いたくなったり
図書館とか本屋で、どの棚の前に立っているかで、そのひとの属性がわかって、うれしかったり
なんだか「ありきたり」な趣味なので履歴書にも書けない気がしたり
本を読んでも難しいことを考えたり感想文は面倒くさかったり
ヲタクだと思われそうで嫌だったり
でもって、だけど本好きとか本読みですが、なにか?
というようなことを、思ったことはありませんか? ぼくは、あります。なので、そんな本棚のようなサイトを作ってみました。

たぶん、WEB本棚サービスとしては早い方だったと思う。500人弱のユーザーのかたの登録で、アクティブなユーザーさんは20人弱ほど。
最初は自宅のPCでサーバーを立てて公開して、311の震災をきっかけにレンタルサーバーに引越し。
現在もまだ稼動中なんだけど、新規登録を中止して、いま利用してるかただけの運用になっている。
ただ、わたしの還暦を過ぎた年齢的にもうそんなに長く続けられない。
んなこんなで、レンタルサーバーの契約が切れるタイミングでサービス終了することにした。
利用しているユーザーさん向けにサービス終了の告知とバックアップのお願いを表示。
とはいえ、せっかく登録・利用してもらってる本棚だし、バックアップではなくて本棚の復元ができるようにスクリプトを改修した。
ローカルPCでやるにはapacheやperlが必要だったり、web版(レンタルサーバー)だと有料だろうし、ハードルが高くなってしまったけど、復元手段を用意できたので案内と手順書も告知した。
どのぐらいのユーザーさんが使ってくれるか、難しいところだけど、これでひと安心。けっこう気になってたんだよね。
もともと、ユーザーさんの行動を見ると、本棚にアクセスして、登録したら離脱、というのが90%以上。
ほかのユーザーさんの本棚を見にいくとかお気に入りに登録するという「交流部分」はほぼほぼ使われてなかった。
上記したように、もともと「未読/既読」の確認のための本棚というのがスタート。
電子書籍なんかだと「購入履歴」が残るので、当初の役割がなくなってわたし自身があまり使わなくなっていた。
だいたい、老眼が酷くなってきて文字を読むのがつらくて読書量が激減してるんだけど。
とはいえ、シングル利用向けに作り直してみたら面白いんで、また使ってみようかと。
本棚なんて個人情報をネットで晒すのもどうなのと思われそうだけど、好きな本や映画のタイトルを並べて自己紹介がわり、ということもあるだろうし。
閲覧するだけならログイン不要の本棚ということにした。
『web本棚』
↑わたしの本棚…ほんとろくに読んでない(登録してない本もあるけど)
この際、せっかくだし「老眼鏡」を作ろう。
ちなみにweb版のスクリプト一式はこちら
https://bookshelf.doncha.net/arc/bookshelf.zip
ファイル、ディレクトリ構造そのまま。perlの実行属性を705か755にすれば動くと思います。
v1.0.1[[2026/01/05 15:57:31]]
・kindle本の登録ができなかったのを修正
・本の情報に取得できなかった場合のcache設定修正
ひとを巻き込んでサービスを公開するのはいいけど、終了させる方がいろいろ大変。
これもまた終活の一環だなあ。
» ローカル環境で電子書籍を作る、Macアプリ・Windows版ツール 「かんたんEPUB3作成easy_epub」
謹賀新年2026


2026年あけましておめでとうございます。
もう毎年のこと、今年もやっぱりだし、さらに健康でありますように!
毎年初詣でお参りする地元の神社で、今年もお願い二礼二拍手一礼
(昔はこんな作法はなかったということらしいけど、気持ちの問題気持ち押しつけでいいんだ、こういうのは)
健康でありますように
健康でありますように
健康でありますように
ひたすらこの一点
昨日の 「2025年ふりかえり」 に書いたように、我が家の去年は健康面で大ピンチだった。
ほんとうに何はなくとも「健康でありますように」
今年は65歳。
老齢年金と厚生年金の満額需給。
…て、これだけで食っていけないので、在宅仕事も継続できますように、だ。
健康でありさえすれば、仕事も=生活もどうにかなるしね。
皆さんにとっても、今年2026年、健康で良い年でありますように!
» ローカル環境で電子書籍を作る、Macアプリ・Windows版ツール 「かんたんEPUB3作成easy_epub」
2025年ふりかえり

今年はいろいろあった。
家人の手術入院が一番大きかった。
幸い、手術も無事済んで入院も予定通り。
これには正直かなりびびった…本人はもっとびびってた。あたりまえ。手術決定〜手術〜入院中、いろいろ考えさせられた。
ほんと、つくづくしみじみ「健康第一」を実感した一年だったなあ。
【生活・仕事】
今年64歳になって「特別支給老齢年金」の需給が始まった。65歳からの満額ではないけど安定収入だ。40年以上働いて保険料を支払い続けてきて、今度は受けとる側。
「年金請求手続きに行ってきた」
もちろんこれだけで食っていけるわけもない。
でも、これでライスワークを辞めることができたのは本当に助かった。
今年3月で契約を終了。実質2月でシフト仕事から足を洗った。
「手取り金額」も減ってきていて、このぐらいなら年金で補填になるかな、と。
そもそも、仕事自体、IT軽作業で自分のスキルアップになるものでないし、なんらかの知見・経験に繋がるようなものでなくて、食うための仕事と割り切ってた。
ただ、たかが10人ぐらいのチームだというのに、ヒエラルキーにしがみつく会社ごっこ大好きの猿山がストレスでしかなかった。
ありがたいことに、電子書籍制作の在宅仕事は継続中。
こっちは、もともと仕事も面白いし、ひとの入力が相手ということもあって、毎回イレギュラーが発生したりその対応でスクリプトを書いてたりで充実感もある。
年金と在宅仕事でどうにか食えるぐらいはなんとかなった一年だった。
今年はまだ社会保険などライスワークでまかなえてたところもあるけど、来年になると全部負担になるんで、どうなることやら、というところかな。
ネットの方は相変わらず、この通り。
SNSでは今年2025年は今日今時点で
→投稿日数365日/投稿数2929回/一日平均8.0回
と入り浸り状態。
「ところてん」
ここ、ひまつぶし雑記帖はこのエントリで今年40件め。
mac miniやノパソに linux Mintをインストールして復活させた記事が、アクセスログを見てみたらちょっとバズってた。
「10年以上前のMac miniをlinuxで復活」
「元WINDOWS10のノパソにlinux mint」
ホームページ 「On Golden Pond」
デジカメ日記を毎月更新。
ActivityPub実装記事を追加。
ヨタ小話を追加。
と、そこそこちゃんと更新できてた。
シフト仕事を辞めてからリアルで他人との関わりがまったくない。話し相手は家人ぐらい。
ストレスのない生活はいいんだけど、さすがにこれってボケるのに50cmぐらいまで来てるんじゃないか疑惑も。
それもあって、ネットに入り浸りなのかもしれんなあ。
【健康】
家人が大変だったんだけど、わたしは3月に頚椎の異常と肋骨の骨折が判明。
背中に激痛が走るし、なんか姿勢の都合でビキっと痛むし内臓の問題かと思ったら骨の問題だった。
どちらも原因不明で、どちらも治療は特になく自然治癒待ち。
…結局なんだったんだろう、だなあ。
年初はデジカメを持って毎日ウォーキングで1万歩だったのに、夏の暑さに負けて4000歩程度になり、秋になったらと思ってたら秋が短かくていきなり冬の寒さ。
部屋で踏み台昇降をちょっとやってみたものの、これは飽きる。続かない。
身体を動かすことを考えないと、歳も歳だし、かなりまずい。
【映画館で観た映画】
15戦 12勝2敗1分
『羅小黒戦記2』
『九龍城砦 トワイライト・ウォリアーズ』
この2本が問答無用のツートップ。
あと、オススメしにくいけど
『アンデッド』
は、観たひとと答え合わせをしたくなる映画だったなぁ。
・以下、今年観た順番
お坊さまと鉄砲
ビーキーパー 養蜂家
トワイライト・ウォリアーズ
アンデッド
ザ ルーム ネクスト ドア
鹿の國
教皇選挙
ミッションインポッシブル ファイナル レコニング
鬼滅の刃 無限城編 第1章
スーパーマン
バレリーナ
プレデター バッドランド
羅小黒戦記2
KILL 超覚醒
悪魔祓い株式会社
以上、老人特有。
無駄に長くてとりとめもない「2025年ふりかえり」記事となりました。
来年2026年、健康で良い年でありますように!
» ローカル環境で電子書籍を作る、Macアプリ・Windows版ツール 「かんたんEPUB3作成easy_epub」

