JCA -Java Cryptography Architecture-

公開鍵暗号あたりを勉強していたとき、巡り合ったのが JCA なるターム。

調べてみたら Java Cryptography Architecture からきているらしい。

どういうものかは、公式の案内やこの記事あたり参照。

 

気になる問題は、マイナカードあたりでは、(秘密鍵による)暗号化自体はカードに格納されているアプリで行うので、どうやって外部暗号化モジュールと連携をはかるかってこと。


・・・とタラタラやっていたら、偉大な某氏が、X で調べ始めた

ええと、実際の JDK のソースにあたるとここら辺の実装が分かってくる。

例えば、XML 署名の際には、sign というメソッドを使うが、そのソースはこうなっている。

XMLsignature クラス自体が abstract なため具体的な実装はなく、やはり暗号化ブロバイダあたりの機能を使っているってことかな。


 

 

 

(適宜情報追加予定)

 

node.js に慣れてきた時に読む記事

node.js は JavaScript 実行環境と捉えた方がいい。

だから、(ブラウザではなく)コマンドラインから JavaScript コードを走らせるコマンドは

node XXX.js

になる。


npm は、Node Package Manager の略。

何かのパッケージをインストールするときは、グルーバルなのかローカルなのか意識しよう。

グローバルの場合(あるユーザーの node 環境すべてで使える)は、-g (–global) オプションを忘れずに。

 

 

WebAssembly -JavaScript と C/C++ の連携-

このところ JavaScript で C/C++ を使う方法を調べている。

いくつか方法があるようなのだが、それなりに感動したのは WebAssembly 。

C/C++ ソースから、なんらかの仕方で(ブラウザが扱える)wasm ファイルを生成し、それをブラウザ環境で動作させる、ということらしい。

こう書くとなんやら難しそうに見えるかもしれないが、導入自体はかなり簡単。

MDN のページあたりを参照。

C → wasm 変換はツールがいくつかあるらしいのだが、ワイは emscripten を使った。

emscripten 導入も MacOS なら homebrew を使って

brew install emscripten

で完了。

適当なウェブサーバーに生成された hello.html を配置すると以下のようなページが現れる。

ちゃんとハロワしてますね。

 

もうちょっと習得を進めたい場合は、この記事あたり参照。

 

Chrome 拡張ワザを覚える

なんでもいいから入門記事で手を動かす。

参考:とほほさんの記事

最初は popup を出す機能拡張。

menifest.json となんらかの素材があれば Chrome 拡張はできる。

なお、背景色を変えるサンプルは実際に動かすとこうなる。

Chrome 拡張を知らない人からしたら、「へぇー」だろう。

最後で作成する設定云々がわかりにくいが、要は以下のような背景色「設定」画面を作成するということ。

(ネット上に良い記事があったら追記します)

 

 

WildFly 運用のための覚え書き

もうあまり使うことはないかもしれないが、Java のアプリケーションサーバ WildFly の運用のための覚え書き。

同一物理マシンに複数の WildFly を設置するのは可能か?

レガシーなプロジェクトで、JavaEE ウェブアプリと JakartaEE ウェブアプリが混在するような場合、少なくとも2台のWildFly が必要になる。27 以降の WildFly と 27 より前のバージョンがそれぞれ少なくとも一つは必要。

結論から言うとできる。

ただ、ポートがかち合わないように設定ファイルを変える。
ワイの場合は、各ポート番号に 10000 を足す。

standalone-full.xml
<socket-binding-group name="standard-sockets" default-interface="public" port-offset="${jboss.socket.binding.port-offset:0}">
        <socket-binding name="ajp" port="${jboss.ajp.port:18009}"/>
        <socket-binding name="http" port="${jboss.http.port:18080}"/>
        <socket-binding name="https" port="${jboss.https.port:18443}"/>
        <socket-binding name="iiop" interface="unsecure" port="13528"/>
        <socket-binding name="iiop-ssl" interface="unsecure" port="13529"/>
        <socket-binding name="management-http" interface="management" port="${jboss.management.http.port:19990}"/>
        <socket-binding name="management-https" interface="management" port="${jboss.management.https.port:19993}"/>
        <socket-binding name="txn-recovery-environment" port="14712"/>
        <socket-binding name="txn-status-manager" port="14713"/>
        <outbound-socket-binding name="mail-smtp">
           <remote-destination host="${jboss.mail.server.host:localhost}" port="${jboss.mail.server.port:10025}"/>
        </outbound-socket-binding>
        <outbound-socket-binding name="messaging-activemq">
            <remote-destination host="${jboss.messaging.connector.host:localhost}" port="${jboss.messaging.connector.port:51616}"/>
        </outbound-socket-binding>
    </socket-binding-group>

ただし、このやり方だと activemq は 71616 となり

A maximum value of 65535 is required

と WildFly に怒られるので、10000 を引く。

こうしておくと以下のように管理画面も同時に表示できる。

めでたしめでたし。

WildFly をサービス化する

JBOSS_HOME の docs 以下のフォルダに各種サンプルファイルがあるので、これをうまく活用する。
Ubuntu の場合は、以下のようにそのまま使える。

sudo mkdir /etc/wildfly
sudo cp /opt/wildfly/docs/contrib/scripts/systemd/wildfly.conf /etc/wildfly
sudo cp /opt/wildfly/docs/contrib/scripts/systemd/wildfly.service /etc/systemd/system/wildfly.service
sudo cp /opt/wildfly/docs/contrib/scripts/systemd/launch.sh /opt/wildfly/bin/launch.sh

この作業が終わった後、初回起動は

sudo systemctl enable --now wildfly

というコマンドで。

jboss-cli.sh による deploy

なお、サービスが走っている場合のデプロイは jboss-cli.sh を走らせ、そこから

deploy PathTo/hoge.war

で投入できる。

バックグランドで起動させる

Java の慣習でしょうか & を付ける。

standalone.sh -c stanalone-full.xml &

Ctrl+C でメッセージを終了させてもプロセスは終わってない模様。

コマンドラインから停止

バックグランドで走らせた状態では Ctrl+C では停止できないので以下のコマンドを使う。

jboss-cli.sh --connect command=shutdown

 

(適宜修正予定)