カテゴリー「開発記録」の8件の記事

2022年8月12日 (金)

電子処方せん対応 4Dプラグイン開発(その3かな?)

4Dのプラグインを開発する

OpenSSL、PKCS#11を使った4Dのプラグインを開発する時の備忘録

4D Plugin WizardでVisual Studioのプロジェクトを作る

4D Plugin Wizard.4DProjectを4D.exeで起動

Newボタンで新しいプロジェクトを追加、名前をつけて開く

49_20220812175001

Add Theme...で新しいテーマを追加

Add Command...で新しいコマンド(関数)を追加

48_20220812175301

コマンドの名前を決めて

Addボタンで引数を追加、タイプ、名前、方向を決める。戻り値のある無し、型も指定、OKで保存

コマンドは後でいくらでも追加、修正ができるので、とりあえず適当に一つ作っておけばいい

49_20220812175701

ここのチェックはデフォルトのまま。唯一、Xcodeのプロジェクトは今回は必要ないので、チェックを外しておく

Generateボタンを押してプロジェクトを生成、保存先フォルダを指定して保存

ランタイムエラーがでるが、無視して継続を選んで最後まで実行、プロジェクト名のフォルダができてその内容が表示される。

51_20220812180801

4D Plugin-VS.slnがプロジェクトファイルだ

プロジェクトの起動とビルド

4D Plugin-VS.slnをダブルクリックするとVisual Studioが起動する、4Dが生成したプロジェクトは古いので最新のバージョンになるようにOKボタンを押して自動的に変換してもらう。

52_20220812182101

起動した。ソリューションエクスプローラーからソースファイルの4DPlugin.cppを選択するとソースが表示される。

53

ソースは不完全なので、このままではコンパイルできない。試しにビルドするとエラーが吐き出されるのでソースを修正する。4Dのプラグインは4DのAPIを使って引数を取り出し、4DのAPIで引数にデータを戻す。文字列(ストリング)はUTF16なのでunsigned short*であるので、ストリング関係の関数は2バイト用のを使うこと。ストリングリテラルはL"abc"という感じ。ストリングの受け渡しは少々わかりづらいので注意。BLOBはハンドルで渡される。ハンドルのロック、アンロックに注意。そのあたりを注意しておけば大丈夫だ。

詳細は省くが、こんな感じのソースにするとビルドできる。

void HPKI_test( PA_PluginParameters params )
{
	PA_long32 Param1;
	PA_Unistring* Param2;
	PA_Unichar* Param2_uchars;
	PA_Handle Param3;

	Param1 = PA_GetLongParameter(params, 1);
	Param2 = PA_GetStringParameter( params, 2 );
	Param2_uchars = PA_GetUnistring(Param2);

	Param2_uchars = (PA_Unichar * )L"789";
	Param3 = PA_GetBlobHandleParameter(params, 3);


	// --- write the code of HPKI_test here...
	PA_SetLongParameter( params, 1, Param1 );
	PA_SetUnistring( Param2, Param2_uchars );
	PA_SetBlobHandleParameter( params, 3, Param3 );
}

 

ビルドするとsample.4Dbase→Pluginsフォルダの中に4D Plugin.bundleというプラグインができる。

sample.4Dbaseフォルダ中にはsample.4dbという4Dのデータベースが最初からあるので、これを起動すると作ったプラグインが表示されて利用可能になる。

56_20220812193301

あとは適当にテストメソッドを書いてテストする。

57_20220812193701

テスト→修正を繰り返す時は、必ず4Dを終了させること。動いているとプラグインが開いたままなので、VisualStudioからプラグインを書き換えられないのでリンクエラーとなる。

 

プラグインのコマンドの追加

 

コマンドの追加はResources¥manifest.jsonを修正する。ダブルクリックするとVSが開くので、追加するコマンドを表現したjsonオブジェクトをコレクションに追加する。

58

 

プラグインのソースの先頭のスイッチ文に新しいコマンドの関数への分岐を追加する。

59

 

関数を実装する。

61_20220812204601

 

4DPlugin.hヘッダーファイルで新しい関数を宣言する。

69_20220812210701

 

OpenSSL、PKCS#11の導入

次にOpenSSLとPKCS#11を使えるようにプロジェクトの設定を変更する。

 

ソースにインクルードファイルを記述、HPKIのサンプルコードのソースからコピペ

62_20220812213701

 

OpenSSLのインクルードファイルまでのパスを追加する。

63_20220812211101

 

pkcs11.hヘッダーファイルをHPKIのサンプルコードのフォルダからプラグインのフォルダにコピーする。

67_20220812211401

 

pkcs11.hヘッダーファイルは、置いただけでは認識されないので、プロジェクトにドラッグ&ドロップする。

70

 

プロジェクト→右クリック→プロパティで、リンカーの入力。追加の依存ファイルにlibcrypto.libを追加

71

 

同じくリンカーの全般の追加のライブラリディレクトリにC:¥Program Files¥OpenSSL-Win64¥libを追加

72

 

以上で終わりかな。漏れてたらあとで追記する。あとはひたすら書いて直す書いて直す...楽しい苦行のはじまりだ。

 


歯科電子カルテシステム・カルテメーカー は利用料月額16,500円(税込)
MacとWinの両方で利用可能な電子カルテです。介護保険にも対応してます。

カルテメーカーの詳細はカルテメーカー・ホームページまで。
カルテメーカーを実際に動かしてみたいときは評価版をダウンロードできます。

 

| | コメント (0)

電子処方せん対応 4Dプラグイン開発

電子処方箋対応 4Dプラグイン開発 pkcs#11、OpenSSL、電子署名、HPKIカード 導入備忘録」の続き

 

サンプルコードのテスト

以下のページの「サンプルコード(ZIP形式)」をクリックしてzipファイルをダウンロード

やさしいHPKIMeDis

サンプルのコマンドを使ってみる

サンプルの中にビルド済みの実行ファイルがあるので、これを使ってみる。使い方は付属ドキュメントを参照

適当なところに「すべて展開..」で解凍する。

27_20220812155001

「HPKISignVerifySamoleP11」フォルダを開く

28_20220812155301

「HPKISignVerifySamoleP11.exe」を確認

HPKIカードをセットして、コマンドプロンプトを開いて実行

>HPKISignVerifySampleP11 sign <パスワード>
証明書取得処理 開始
Certificate:
30 82 05 7b 30 82 04 63 a0 03 02 01 02 02 02 01
81 30 0d 06 09 2a 86 48 86 f7 0d 01 01 0b 05 00
(略)
6b 61 31 1b 30 19 06 03 55 04 05 13 12 54 65 73
...
証明書取得処理 成功: HPKI END ENTITY CERTIFICATE

署名処理 開始
SHA256 HASH:
af a2 7b 44 d4 3b 02 a9 fe a4 1d 13 ce dc 2e 40
16 cf cf 87 c5 db f9 90 e5 93 66 9a a8 ce 28 6d

Signature:
3a e0 63 c6 24 5e 87 42 4b f3 02 7b e7 41 a9 23
7f be 63 c6 18 9b b8 8a 77 80 a2 6c d4 fd 13 b0
(略)
00 ba c8 c3 41 9a 5b bd de a4 7f f8 d0 95 e5 3d
署名処理 成功

検証処理 開始
検証処理 成功

ドライバやライブラリが正しくインストールされていれば、特に問題なく動作する。

 

サンプルのコンパイルとビルド

次に「HPKISignVerifySampleP11」のプロジェクトを開いて、ソースコードの確認とビルドまたはデバッグをしてみる

29_20220812161101

「HPKISignVerifySampleP11.sln」がVSのプロジェクトファイルだ。これをダブルクリックして開く、右のソリューションエクスプローラーで「HPKISignVerifySampleP11.c」をクリックするとソースが表示される。

32_20220812161701

ビルド」メニューから「HPKISignVerifySampleP11をビルド」を選ぶとコンパイルとビルドが開始される。

33_20220812162601

下のパネルに処理経過が表示され、ビルド:成功1と表示されたらOK

今のディレクトリからx64→Debugと開くとビルドしたHPKISignVerifySampleP11.exeができている。

41_20220812163101

コマンドプロンプトで作業ディレクトリをここに変更して、このHPKISignVerifySampleP11.exeを先ほどと同じように実行すると同じ結果が表示される。

ビルドに失敗する時

OpenSSLを標準的な場所のインストールしてあれば問題なくビルドできるはずだ、ダメな時は、ソリューションエクスプローラーでプロジェクト名(HPKISignVerifySampleP11)を右クリック、一番下のプロパティを選択

C/C++の全般の追加のインクルードディレクトリでOpenSSLへのパスを確認

42_20220812163901

リンカの全般の追加のライブラリディレクトリでOpenSSLへのパスを確認

43_20220812164301

同じくリンカのすべてのオプションの追加のライブラリディレクトリOpenSSLへのパスを確認

44_20220812164501

これらが問題なければ、正常にビルドできるはずである。再度ビルドするときは「リビルド」を選ぶ

 

デバッグして処理の追跡する

動作を逐次確認するのであればデバッグモードで動かす。

前準備として、コマンドに渡す引数を事前に設定しておく

ソリューションエクスプローラーでプロジェクト名(HPKISignVerifySampleP11)を右クリック、一番下のプロパティを選択

デバッグのコマンド引数を編集して引数を設定する。先頭のスペースはいらない

45_20220812165201

ソースコードの左端をクリックしてブレークポイントを設定

デバッグメニューからデバッグの開始を選択。

46_20220812165801

ブレークポイントに達すると止まる。変数など確認して動作を見ていく

47_20220812165901

 

以上

 


歯科電子カルテシステム・カルテメーカー は利用料月額16,500円(税込)
MacとWinの両方で利用可能な電子カルテです。介護保険にも対応してます。

カルテメーカーの詳細はカルテメーカー・ホームページまで。
カルテメーカーを実際に動かしてみたいときは評価版をダウンロードできます。

 

| | コメント (0)

忘れないうちにOpenSSLでの暗号化と復号 (その1)

今回は完全に備忘録(笑)

 

OpenSSLで暗号の基本を復習する。

電子署名は、秘密鍵で暗号化して公開鍵で復号する

SSL(TSL)は、公開鍵で暗号化して秘密鍵で復号する

まずはやってみる

このページを参考にした。

OpenSSL で RSA の秘密鍵を作成する方法WEB ARCH LABO

 

秘密鍵をつくる

openssl genrsa」コマンドで、2024bit(253バイト)のRSA秘密鍵を作る。通常は2048bit。ビット数を少なくした時の状態が見たかったので記事のまま指定してみた。コマンドの詳細はリンク先を参照

$ openssl genrsa 2024 > server.key
Generating RSA private key, 2024 bit long modulus (2 primes)
................................................................................
.....................................+++++
.........................+++++
e is 65537 (0x010001)

 

できたキーの中身をテキストとして表示してみる

$ cat server.key
-----BEGIN RSA PRIVATE KEY-----
MIIEjwIBAAKB/gDeRJbhTAshOXp6uJig8IGfZEvofJb5ndHVwm5o4UssOsEWxlPb
VZkO2V3HmfDNbYzSvI5WIFYb3FW+e0cZf+0zh+drECs/8pJ5ryQhJgNqVXn2gR5m
(略)
CfSTk/DqVqK6mFsduBRtdp8+p2Pde/h1aSwfrUiiCvDbZOJvb0JcRLC4CUL8MYOU
iN+SgL5CC9cOFo3/mKncY19psQExepkSnwNv39PbSS7xLicO++tDW3arMtcn7k6t
Dz3rHznsGgUymLsjvcdlwX6Zdw==
-----END RSA PRIVATE KEY-----

頭と最後に種類の表示があって、中身がbase64でエンコードされているのでpem形式の鍵である。ちなみに改行はLF(0x0A)である。

 

詳しく見てみよう「openssl rsa」を使う。「-text」オプションでプレーンテキストの出力となる。「-in」で入力ファイル(秘密鍵)を指定。

$ openssl rsa -text -in server.key
RSA Private-Key: (2024 bit, 2 primes)
modulus:
00:de:44:96:e1:4c:0b:21:39:7a:7a:b8:98:a0:f0:
81:9f:64:4b:e8:7c:96:f9:9d:d1:d5:c2:6e:68:e1:
(略)
publicExponent: 65537 (0x10001)
privateExponent:
00:bd:77:28:4a:4a:a1:1e:24:39:f4:8c:90:86:78:
1d:76:7a:6f:7e:71:5d:dc:d0:1c:03:a4:26:ab:be:
(略)
prime1:
0f:56:0d:7e:f0:16:ca:e7:62:14:98:bc:6e:46:52:
0f:cd:3f:1f:18:d5:ea:ba:f1:c9:cb:2b:20:b8:15:
(略)
prime2:
0e:7e:3a:60:ce:5c:d9:8f:06:82:05:b1:40:b3:e5:
57:f0:1c:eb:81:bf:fa:ce:6a:ca:b0:7a:5d:2a:04:
(略)
exponent1:
0c:48:e1:3c:aa:73:87:8b:3b:5c:c6:50:42:81:5f:
e0:ba:87:72:90:81:62:aa:e7:5d:be:ba:48:56:4c:
(略)
exponent2:
03:15:cd:d9:93:b4:62:3f:b7:13:f0:a0:45:f4:c5:
aa:8d:9b:aa:6a:89:72:9b:84:52:37:75:24:e5:ef:
(略)
coefficient:
03:e0:f6:14:9b:95:01:01:8f:28:aa:fd:09:f4:93:
93:f0:ea:56:a2:ba:98:5b:1d:b8:14:6d:76:9f:3e:
(略)
writing RSA key -----BEGIN RSA PRIVATE KEY-----
MIIEjwIBAAKB/gDeRJbhTAshOXp6uJig8IGfZEvofJb5ndHVwm5o4UssOsEWxlPb
VZkO2V3HmfDNbYzSvI5WIFYb3FW+e0cZf+0zh+drECs/8pJ5ryQhJgNqVXn2gR5m
(略)
iN+SgL5CC9cOFo3/mKncY19psQExepkSnwNv39PbSS7xLicO++tDW3arMtcn7k6t
Dz3rHznsGgUymLsjvcdlwX6Zdw==
-----END RSA PRIVATE KEY-----

modulus部分は公開鍵の部分だ。bit列だが、RSAなので生成時に指定したbit数の正の整数である。ビッグ エンディアンで格納されている。今回は2024bitなので253バイトのはずであるが、先頭bitが1のため負数になってしまうので、先頭に1バイトの0を追加して254バイトになってる。

それぞれの数値の意味は次のサイトが詳しい

RSA鍵の要素と暗号化Qiita

 

公開鍵をつくる

openssl rsa」で公開鍵を作る。作るというより秘密鍵から公開鍵を取り出すと言ったほうが正しい。「-pubout」オプションで公開鍵を取り出す。コマンドがgen~ではなくrsaであることからも、作るのではなくRSA鍵を操作して取り出すという意味合いなのだろう。

$ openssl rsa -in server.key -out pub.key -pubout
writing RSA key

 

できたキーの中身をテキストとして表示してみる

$ cat pub.key
-----BEGIN PUBLIC KEY-----
MIIBHjANBgkqhkiG9w0BAQEFAAOCAQsAMIIBBgKB/gDeRJbhTAshOXp6uJig8IGf
ZEvofJb5ndHVwm5o4UssOsEWxlPbVZkO2V3HmfDNbYzSvI5WIFYb3FW+e0cZf+0z
h+drECs/8pJ5ryQhJgNqVXn2gR5m6UIZikS300f1Rzd4+GyW5SJxJ4cogi45/v+Y
yNrIsC6PGXk6rOHmuAoCHIzF6fPq+dsNuZP9iwMXwH4UgEJa9nI8GKsM3NiX1IdH
5evHhdNzeTWYsWxPzJvBIfckNIT8KGlE5o4s3HsmLQHa2jGjxFkk086JeOcc0QrL
9b3TsgvYzfzvGMQovYaAAg+O7RANdZuo+X2jspmH9OcbAPH6QzuSCXdA63tLAgMB
AAE=
-----END PUBLIC KEY-----

同じくpem形式のファイルになってる

 

秘密鍵の時と同じように詳細を見てよう。「-pubin」で公開鍵を読み込むことを指定する。

$ openssl rsa -text -pubin -in pub.key
RSA Public-Key: (2024 bit)
Modulus:
00:de:44:96:e1:4c:0b:21:39:7a:7a:b8:98:a0:f0:
81:9f:64:4b:e8:7c:96:f9:9d:d1:d5:c2:6e:68:e1:
(略)
e7:1b:00:f1:fa:43:3b:92:09:77:40:eb:7b:4b
Exponent: 65537 (0x10001)
writing RSA key
-----BEGIN PUBLIC KEY-----
MIIBHjANBgkqhkiG9w0BAQEFAAOCAQsAMIIBBgKB/gDeRJbhTAshOXp6uJig8IGf
ZEvofJb5ndHVwm5o4UssOsEWxlPbVZkO2V3HmfDNbYzSvI5WIFYb3FW+e0cZf+0z
(略)
-----END PUBLIC KEY-----

秘密鍵のModulus:部分が公開鍵であることが確認できる。Exponent:は公開指数(public exponent)と呼ばれるもので鍵生成の元となる数字らしいがよくわからない(笑)奇数じゃないといけないらしいが、ほぼ全部この数字。謎だ。

ここに詳しい説明あった。

RSA鍵の要素と暗号化Qiita

 

今日はここまで

 


歯科電子カルテシステム・カルテメーカー は利用料月額16,500円(税込)
MacとWinの両方で利用可能な電子カルテです。介護保険にも対応してます。

カルテメーカーの詳細はカルテメーカー・ホームページまで。
カルテメーカーを実際に動かしてみたいときは評価版をダウンロードできます。

 

| | コメント (0)

2022年8月 9日 (火)

電子処方箋対応 4Dプラグイン開発 pkcs#11、OpenSSL、電子署名、HPKIカード 導入備忘録

電子処方箋の電子署名はHPKIカードでおこないます。このための処理は4Dの標準機能では当然できないのでプラグインで機能を実装しなければいけません。

HPKIカードで電子署名をするためには、pkcs#11ライブラリとOpenSSLライブラリが必要です。この記事はこれらをプラグイン開発プロジェクトの下準備のための備忘録です。

pkcs#11
暗号化トークン・インタフェース標準。暗号化トークンにアクセスしてトークン内部の情報やアプリケーションを利用するための標準的なインターフェースを定めた規格。

暗号化トークン
トークンの意味は「印、象徴」。暗号化トークンといった場合は、暗号化のための電子鍵等を搭載したICカードやUSB装置などの物理的な物を指す。現在の一般的なものはICカード。マイナンバーカードが代表例。今回使うのはHPKIカード

OpenSSL
電子的な暗号を扱うための総合的なオープンソースのライブラリ、暗号、PKI(公開鍵基盤)、SSL/TSLなどなど、ほぼあらゆる暗号化関連処理をすることができるライブラリ。現在のバージョンは3であるが、最新バージョンを使ってる例はまだほとんどない、実質的な標準はバージョン1.1

 

とりあえず読むべきもの

まずはなんといってもここ

保健医療福祉分野公開鍵基盤 電子認証局のご案内MeDis

この中のこのページの資料は特に重要、「はじめてのHPKI ~実装の手引き~」は最重要、ダウンロードして10回以上は読むべし

やさしいHPKIMeDis

サンプルコードも必須。開発にも使うので必ずダウンロード。VisualStudioのプロジェクトファイルなのでダウンロードしてプロジェクトファイルをダブルクリックして開きましょう。必読、ここからいろいろとコピペして開発する。

次に本家本元、「JAHIS 保健医療福祉情報システム工業会」ここに標準規格の規格書等があります。こちらのHPKI関連も必読

JAHIS標準・技術文書JAHIS 保健医療福祉情報システム工業会

とりあえず以下の文書は読んでおく

JAHISヘルスケアPKIを利用した医療文書に対する電子署名規格Ver.2.0
JAHIS HPKI対応ICカードガイドラインVer.3.0
JAHIS電子処方箋実装ガイドVer.1.2
JAHIS院外処方箋2次元シンボル記録条件規約Ver.1.7
JAHIS電子版お薬手帳データフォーマット仕様書Ver.2.4

 

準備するもの

VisualStudio

開発環境、HPKIカードドライバの関係でwindowsしか使えないので、これを使う。Mocrosoft Storeから無料でダウンロードできる。Visual Studio Community 2022というのをダウンロード。インストール時にどれをインストールするかって表示されるけど、よくわからなかったのでとりあえずコマンドライン ツールが作成できてC/C++、C#で開発できそうなのを選んだ。まぁ、適当でもなんとかなった。結果オーライ(笑)

 

4D プラグインSDK

4Dのプラグインを開発するのに必須。特にプロジェクトのスケルトンを作る「4D Plugin Wizard」は便利。GitHubはあまり利用していないし、これ自体の開発を手伝うわけじゃないので、zipでダウンロードして展開して使ってます。使い方はdocsフォルダの中のindex.htmlを開くとドキュメントが読める(英語)

4D-Plugin-SDKGitHub

 

medisのサンプルコード

最初に紹介した「やさしいHPKI」ページにあるサンプルコードをダウンロード。.slnファイルをダブルクリックでVisualStudioが起動する。

やさしいHPKIMeDis

 

テスト用HPKIカード、HPKIカードドライバ

テストカードの貸出しMeDis

このページに書いてあるように問い合わせページに書いてあるメールアドレスへカードを貸してくれとメールを送信。ちなみに無料です。

数日で、申し込み用紙がメールで届くので、印刷して郵送する。なんだか事業所の実在を証明するので、会社のパンフレット等を同封してというので、適当にホームページを印刷して送付。HPKIカードドライバも必要なので、送ってもらうように記述

どの資格でのHPKIカードでも発行してもらえます。

注意!!本人限定受取」郵便という特殊な方法で届く。受け取れるのは送付を依頼した個人の自宅限定。免許証などで本人確認ができる住所以外では受け取れない。事業所宛に配送してもらうと受け取れないので注意。最初にハガキが届くので、配送先や受取方法、日付時間等をハガキかwebで郵便局に伝えると配送される。郵便局に受取にいってもいいが、送付先住所と免許証等(写真付きが必須)の身分証明書の住所が一致してないと受け取れない。

医師会薬剤師会の証明局からも入手可能。どちらも有料。

 

ICカードリーダー

マイナンバーカード対応と書いてあれば、基本なんでもいいのですが、とりあえず購入して動作確認ができてるのは、定番中の定番、NTTコミュニケーションズのACR39-NTTComです。ソニーのPaSoRi RC-S380も定番ですね。これもおすすめ。

それにしても高くなったなぁ、どっちも2021年に購入して2800円くらいだったのに、NTTのは3800円、ソニーは5600円、まぁ、安いのもあるけど、ちょっと使うのは...

windowsであれば、USBを繋ぐだけでドライバのインストールとか自動でおこなって認識されます。

 

ドライバー、ライブラリのインストール

HPKIカードドライバーのインストール

ICカードリーダーを接続するとPC/SC(ICカードを利用するための基本的なAPI)を使うことが可能になるドライバーが自動的にインストールされる。

PC/SCのインターフェースを使ってHPKIカードを操作することも原理的には可能であるが、コマンドを16進の機械語みたいな感じで送るとか、あまりにプリミティブで、かつ、利用するための資料が圧倒的に少ないので現実的にこれでプログラムすることは不可能だろう。

そこで、より上位のPKIミドルウェア層のPKCS#11、CryptoAPIなどのPKIドライバ(ライブラリ)を導入して、PKCS#11、CryptoAPI、Cryptography API: Next Generationインターフェースでプログラムできるようにします。

20220809-132913
JAHIS HPKI 対応 IC カードガイドライン Ver.3.0 より

このドライバ、ライブラリはmedis等からHPKIカードと一緒に送られてくる「HPKIカードドライバセット Version 1.50」という円盤に入っています。

円盤の中のドキュメントに従ってインストールします。途中でICカードリーダーの選択画面がでますので、インストール前にカードリーダーをPCに接続しておくといいでしょう。(後でも選択できる)

PKCS#11用のDLLファイルがC:¥Windows¥System32にインストール、CryptoAPIのサービスドライバ(場所不明)、関連するライブラリ、ドライバ(場所不明)がインストールされる。また、ユーティリティソフトで「PIN変更ツール」「証明書表示ツール」「リーダライタ選択ツール」の3つもインストールされる。名前の通りの機能のアプリなので、適宜利用する。

インストールが正しく行われたかは、HPKIカードをリーダーにセットして「証明書表示ツール」を使うといいだろう。アプリケーションが2つ表示され、その中に証明書が表示されればOK。

26

ダブルクリックすると証明書の詳細が表示されるが、中間CA証明書もルートCA証明書もないので信頼されていないと表示されるはずである。

 

OpenSSLのインストール

暗号と電子署名といえば定番OpenSSL

これが無いと何にもできません。ライブラリもそうですがコマンドラインからも使えるようにしておくのが大事。コマンドラインからいろいろ試すことで電子署名について理解が深まる。ちなみにコマンドラインで操作するならMacがおすすめ。OpenSSLの記事のほとんどはLinuxベースなのでWinのコマンドプロンプトでは直接試せない場合が多い。

インストールは「初めてのHPKI」で紹介している以下のサイトがお勧め。コンパイル済みのバイナリで配布されているのを使うので簡単にインストールできる。

windows10でOpenSSLのインストールとアンインストールの方法ONE NOTES

記事では32bitバージョンを選択してるけど、今なら64bit版の「Win64 OpenSSL v1.1.1q」を選択。v3.xは全く別物なので過去の知識が全然使えないのでパス(間違ってインストールしたけどどうにもならなかったw)

インストール先は記事と違ってデフォルトのC:¥Program Files¥OpenSSL-Win64のまま。記事の場所にインストールするとmedisのサンプルコードのプロジェクトのPathを修正しないとビルドできないと思います。DLLファイルの場所は記事を同じ/binにしました。DLLファイルの場所は、システムフォルダの方が良かった気がするけど、/binでも問題なかった。

Pathの設定は、記事とは微妙に違っていて「設定」→「システム」→「詳細情報」→「システムの詳細情報」で「システムのプロパティ」画面が開きます。

追加するパスはインストールした場所なので、今回はC:¥Program Files¥OpenSSL-Win64

 

おまけ、Macの場合

インストールの時に使ったサイトが消えちゃったので、適当に検索してください。大体みんな同じです。ターミナルを開いて

$ brew install openssl

でダウンロード&インストールされます。あっ事前にhomebrewはインストールしておいてくださいね。正しくインストールされると

$ which openssl
/usr/local/opt/openssl@1.1/bin/openssl
$ openssl version
OpenSSL 1.1.1q  5 Jul 2022

となります。うまくいかない時はこちらのサイトが参考になるかなぁ

macOSでopensslコマンド打つとエラーになるQiita homebrewでinstlalしたOpenSSLが反映されず、OSX標準のOpenSSLが使用されてしまう場合の対処方法

 


とりあえず前準備はこのくらいかな。次は実際にプロジェクトのビルドの時の設定とかを解説します。

 


歯科電子カルテシステム・カルテメーカー は利用料月額16,500円(税込)
MacとWinの両方で利用可能な電子カルテです。介護保険にも対応してます。

カルテメーカーの詳細はカルテメーカー・ホームページまで。
カルテメーカーを実際に動かしてみたいときは評価版をダウンロードできます。

 

| | コメント (0)

2020年8月15日 (土)

歯式メーカー アップデート

気がついたら1年半以上更新していない(^^;

 

たまには記事を投下しないと忘れ去られちゃうので...

 

ということで、突然ですがご好評いただいている「歯式メーカー」をアップデートしました(ってこれも結構前のことですがw)。

20200815-140920

 

ダウンロードページ

アップデートしたのはMac版だけです。

機能的には全く変更ありません。
最大の変更点は64bitアプリケーションになってMac OSX 10.15 Catalinaに正式対応した点です。

単純に64bitアプリケーションに対応しただけでなく、新しいMacのGatekeeperとアプリケーション公証(Notarized)制度への対応です。

10.14までは、アプリケーションを署名するだけでOKでした。署名をすることでアプリケーションが配布の過程で改竄、修正されていないことを証明していたのですが、時代が変わり、アプリケーション自体に悪意あるコードが仕込まれていないか、また、プライバシーの関連で不用意に個人情報に関わるハードウエア(カメラやGPSなど)にアクセスしていないかなどのチェックも必要になったために、10.15からアプリケーションの公証が必要になったのです。

署名自体もより深くまた追加の情報も必要になりました。また、実行環境の変化も見逃せません。実行コードは必ずリードオンリー(書き込み不可)の状態で実行され(Hardened Runtime)、コードの書き換えを禁止してマルウエアの可能性を排除することになり、また、実行時にアクセスするハードウエア等の情報(Entitlements)の付加も必要です。署名自体もタイムスタンプの付加が必須になりました。

この署名をした上で、アプリのコードをアプリをAppleに送り、内容をチェックし認証を受けます(公証)。認証されると「チケット」が発行されますので、これをアプリにホチキス止め(ステープル)してサイトにアップすることになります。

ダウンロードされたアプリは署名をチェックし、さらに「チケット」の有無と有効性をチェックされます。「チケット」がなければ、Appleの認証サーバーに問い合わせて、正しいアプリかどうかがチェックされます。この厳重なチェックを受けてようやく実行できるようになるんですね。

さらに、アプリは「アプリケーション」フォルダで実行する必要があります。「アプリケーション」フォルダ以外で実行すると、どこかわからない隔離された「箱庭」で実行されます。「箱庭」ではファイルアクセスも禁止されているので実質、起動できないんですねぇ。徹底してます。

そんなわけで、歯式メーカーも4Dv18を使うことで、上記への対応を済ませたバージョンにアップデートしたわけです。

上記への対応は、4Dv18から正式に対応してます。v17までは10.14までのコード署名にだけ対応していたので、v17で署名付きのアプリをビルドしても10.15では実行できませんでした。

v17で10.15へ対応するには、マニュアルで新しい署名をする必要があります。幸い4D社のmiyako氏が、新しい署名をするための4Dのプログラムを作成して公開されていますので、これをダウンロードして利用させていただきました。ありがとうございます。

https://github.com/miyako/4d-utility-build-application

v18では新しい署名に対応していますので、署名付きビルドをするだけでAppleの認証を受けられるアプリのコードを作ることができます。

ただ、歯式メーカーでは、4D社以外のプラグインを利用しており、これがどうしても4Dのオリジナルの機能ではうまく署名ができずAppleの認証を受けられませんでした。miyako氏のプログラムでは問題なく署名できたのではできたのでよかったですが、あいかわらずAppleへの対応では罠が多いですw

この新しい署名や公証の情報は少なくて最初の頃は苦労したのですが、これもmiyako氏がとても丁寧な記事を書いていらっしゃいますので、ご興味のあるかたは是非ご覧になってください。

https://miyako.github.io/2019/10/16/notarization.html

 

 

 

| | コメント (0)

2016年8月20日 (土)

新バージョン13.2b22.049h1をリリースしました。

新バージョン13.2b22.049h1をリリースしました。

これが4Dv13ベースの最後のバージョンとなります。4Dv15バージョンへのアップデートをするには、このバージョンでアップデートを済ませておく必要があります。

 

なお、4Dv13ベースのも、対応可能なマスタデータのアップデートのみ9月いっぱいは対応予定でいます。

しかし、10月のパラ点数の改定には4Dv13ベースのバージョンは対応しませんので、9月中に対応OSへのアップデートや新しいコンピュータ等への変更などの御対応をお願い申し上げます。

以下のマスターデータも更新しました。

処置名
4092 CRインレー[単] 
4093 CRインレー[複] 
4094 SRインレー[単] 
4095 SRインレー[複] 
37144 歯周初期治療訪問リハクラス
340038 SPT2

処置マスター
302 フッ化物歯面塗布処置
309 フッ化物歯面塗布処置(在宅)
314 フッ化物歯面塗布処置(エナメル質初期う蝕患者)
320 歯科特定疾患療養管理料
350 機械的歯面清掃処置
362 歯科疾患管理料
364 歯科疾患管理料 2回目以降
366 義管
2855 摂食機能療法
8190 歯科疾患在宅療養管理料(在宅療養支援歯科診療所)
8192 歯科疾患在宅療養管理料(1以外)
8260 在宅患者訪問口腔リハビリ指導管理料(10歯未満)
8262 在宅患者訪問口腔リハビリ指導管理料(10歯〜20歯未満)
8264 在宅患者訪問口腔リハビリ指導管理料(20歯以上)
37010 歯周基本検査[1~9歯]
37012 歯周基本検査[10~19歯]
37014 歯周基本検査[20歯以上]
37020 歯周基本検査[1~9歯]1月以内
37022 歯周基本検査[10~19歯]1月以内
37024 歯周基本検査[20歯以上]1月以内
37030 歯周精密検査[1~9歯]
37032 歯周精密検査[10~19歯]
37034 歯周精密検査[20歯以上]
37040 歯周精密検査[1~9歯]1月以内
37042 歯周精密検査[10~19歯]1月以内
37044 歯周精密検査[20歯以上]1月以内
37049 歯周病部分的再評価検査
37100 スケーリング
37102 スケーリング(1/3顎を超える)
37104 再スケーリング
37106 再スケーリング(1/3顎を超える)
37120 スケーリング・ルートプレーニング(前)
37121 スケーリング・ルートプレーニング(小)
37122 スケーリング・ルートプレーニング(大)
37123 再スケーリング・ルートプレーニング(前)
37124 再スケーリング・ルートプレーニング(小)
37125 再スケーリング・ルートプレーニング(大)
37130 歯周ポケット掻爬(前)
37131 歯周ポケット掻爬(小)
37132 歯周ポケット掻爬(大)
37133 再歯周ポケット掻爬(前)
37134 再歯周ポケット掻爬(小)
37135 再歯周ポケット掻爬(大)
37137 SPT1[20歯以上]
37140 SPT1[1〜9歯]
37141 SPT1[10〜19歯]
37144 歯周初期治療訪問リハクラス
37160 SPT2[1〜9歯]
37161 SPT2[10〜19歯]
37162 SPT2[20歯以上]
340003 基本検査
340004 精密検査
340038 SPT2
510000 チェック

薬価マスター
620003830 リノロサール注射液4mg(0.4%)
620006259 ソルラクト輸液 500mL
620007226 エリーテン注10mg/2mL 0.5%
620809804 トラネキサム酸注1g「NP」 10%10mL

公費マスター
28811002 兵庫県 81 乳幼児医療制度
28811003 兵庫県 81 乳幼児医療制度
28812002 兵庫県 81 乳幼児医療制度
28812003 兵庫県 81 乳幼児医療制度

病名
5272017 舌下腺炎

病名マスター
127 Ce
5272017 舌下腺炎

レセ病名マスター
5272017 舌下腺炎


| | コメント (0) | トラックバック (0)

2016年7月28日 (木)

winでカルテ印刷できない〜(泣)

v15のアルファテスト中なのですが、winでカルテ印刷ができないことが判明(泣)

Macでは大丈夫なのに何故と、昨日一日格闘していて、やっと原因を特定しました。

原因は、背景となる1号用紙、2号用紙の画像が「pict」形式だったからでした。

伝統のあるMacのクイックドロウピクチャー(pict)、ついにv15のWin版では非対応となってしまったんです。Mac版はOSでかろうじて対応しているようなので、表示できたんですね。でも残念ながらpictはMac標準の画像表示ソフトのプレビューでも表示できないフォーマットになってしまっていますので、Macでも早晩使えなくなります。

そこで、画像を作り直すことになったのですが、この元画像を作ったのは「スーパーペイント」というこれまた古いマックファンには御馴染みのソフトのなのですが、今や完全に失われたソフトです。

pictフォーマットは元祖ベクター系グラフィックフォーマットですので、うまく開くことができれば、ポストスクリプトやSVGに変換できるはずなのですが、残念ながらpictフォーマットを読むことができるグラフィックソフトがもうほとんどありません。

いろいろ試したところ、「Omni Graffle」でpictフォーマットを取りこむことができるのがわかりました。でも、残念ながらベクターデータとしては無理でビットマップに変換されて取り込まれます。ですので、このpict画像を下絵にして新しくベクター系の画像を作成することにしました。

格闘すること数時間、やっと1号紙が完成しました。

いつもはこういう背景画像は印刷用に解像度を600dpi程度に上げjpegで保存した画像を使っているのでが、今回は同じベクター系のSVGフォーマットで保存してみました。

20160728_183133

印刷してみると

Img_4621_2

なかなか良い感じ

Img_4622

細かい字も細い線も滲みもなく、これなら完璧です。

SVGいいわ!

レセプトの背景はjpegの画像を使ってるのですが、細い線が滲んで2重になったように見える部分がでちゃうんですが、SVGだと大丈夫。

4DはSVGを標準画像フォーマットとして採用しているので、そのお陰かもしれません。

今後は徐々に、レセプトの背景などもSVGに切り替えていこうと決意しました。

SVGはHTML5との相性もよいですし、今後はもっと一般的に使われてくるんじゃないかなぁ。

 


 

 

歯科電子カルテシステム・カルテメーカーは月額15,000円
MacとWinの両方で利用可能、介護保険対応にも対応してます。

カルテメーカーの詳細はカルテメーカー・ホームページまで。
カルテメーカーを実際に動かしてみたいときは評価版をダウンロードできます。

 

 

 

| | コメント (0) | トラックバック (0)

2016年7月27日 (水)

4D v15対応バージョンのアルファテスト開始!!

ちょっとブログの更新が途絶えていましたが、けっしてサボってたわけではありません。(^^;

現在使ってる4Dv13が、win10やEl Capitanのような新しいOSに対応できなくなってきたため、最新の4D v15R4への対応を進めていました。

4Dはv12以降、バージョン間で内部的な互換性はとても高くなっていて、基本的に大きなプログラムの変更の必要はないのですが、問題はインターフェース、特にフォントの問題でいつも悩まされます。

これはOS側、特にMac OSXがバージョンによってシステムフォントを変更するのが元凶なのですが、また、4Dがそれを上手く処理できていないというか、バージョンごとに対応が微妙に変わっていて、結果的に乱れてしまうんです。

今回のv13からv15への変更では、フォントの高さが変な変換をされてしまうため、文字の下の部分が切れてしまうという状態が発生しました。このため、表示系のオブジェクトのフォントスタイルの指定を全部指定しなおさないとダメという状況になっています。まあ、微妙に切れる状態なので、実用上はそのままでもいけないことはないのですが、格好悪いです。

そんなわけで、ちょっと時間ばかりかかってしまっているのですが、とりあえず良く使う画面での修正が終わって今日から自院での運用をはじめました。

20160727_92144

アイコンも変わってカッコ良くなりました。

20160727_92823

う〜ん、数人治療しましたが、表示や印刷でおかしいトコまだあるなぁ。ランタイムエラーも...

まだ、リリースまではちょっと時間かかりそう。

 


 

 

歯科電子カルテシステム・カルテメーカーは月額15,000円
MacとWinの両方で利用可能、介護保険対応にも対応してます。

カルテメーカーの詳細はカルテメーカー・ホームページまで。
カルテメーカーを実際に動かしてみたいときは評価版をダウンロードできます。

 

 

 

| | コメント (0) | トラックバック (0)