HPKI signer For Mac

X(twitter) あたりでごちゃごちゃいってたやつは、結局、chrome 拡張にして chrome ウェブストアで公開しました。

NativeMessaging を使っているので、これだけだと何も機能しませんが「署名カードドライバ」などを設定すれば、Mac のブラウザから電子署名値(秘密鍵による暗号結果ですが)を取得することができます。

設定方法などは、このページで案内しています。

HPKI signer For Arm Mac になってますが、ドライバのビルド設定確認したらユニバーサルバイナリになっていたので、おそらく Intel Mac でも動くと思います。

 

猪股弘明

C 言語における 16 進表記文字列⇄バイナリ列変換

C 言語では、わかりやすい感じのフレームワークはそれほど多くないせいで、例えばタイトルのようなことをやらせようとすると苦労する。

16 進表記文字列→バイナリ列変換

これは、よくネット上で落ちている。

後利用しやすいように書けば

uint8_t* hex2bin(char* hex, size_t length) {
    static uint8_t* bin;
    bin = malloc(length/2);//need free(bin) later
    
    for (int i=0; i<length; i+=2) {
         unsigned int x;
         sscanf((char *)(hex + i), "%02x", &x);
         bin[i/2] = x;
    }
    
    return bin;
}

ポインタが hex である長さ length の文字列を渡せば、バイナリ列のポインタを返してくれる。

バイナリ列→16進表記文字列変換

この記事の発想にいたく感心した。

ポインタを使うと初学者はわかりにくくなると思い、一部配列表記にしている。

char* bin2hex(uint8_t* bin, size_t length){
    static char* magicarray = "0123456789ABCDEF";
  
    static char* hex;
    hex = malloc(length * 2 +1);//need free(hex) later
    
    for(int i = 0; i<length; i++){
        uint8_t octet = bin[i];
        hex[2 * i] = magicarray[octet / 0x10];
        hex[2 * i + 1] = magicarray[octet % 0x10];
    }
    hex[length * 2] = '\0';
    return hex;
    
}

要するに

「バイト列の一つの要素に注目したとき

(文字列表記上の)上位 4 bit 相当部分は、その要素を 0x10 (=16) で割った商

(文字列表記上の)下位 4 bit 相当部分は、その要素を 0x10 (=16) で割った余り

という論理。

その際に 16 進表記特有の文字( A…F) を指定するのに、専用の配列を用いている。
上のコード上では、その配列を magicarray としたが、こうするとすっきり書けますね。

 

猪股弘明

 

病院日当直・訪問診療で履きやすい靴

X でも触れたのだが、現在は週1で訪問診療の仕事を入れている。

悩みの種になるのは履き物で、最低でも

・脱ぎ履きしやすい

・少々の雨でも気にしなくていい

という条件を満たす必要がある。

皮のローファーなどは、着脱は容易なのだが、雨風に弱いし、第一重い。

試行錯誤の結果、現在はメレルというところのモアブというハイキングシューズを採用している。

ゴアテックス、どんなものだろう?と思っていたのだが、先日の雨の日でも雨水はじきまくり。

しばらくは、これかな。


ところで、Amazonで並行輸入品が安く買えたりする。

カラーは「ウオルナット」と説明されているが、写真ほどバーガンディっぽくはない。

(続く)

 

 

保護中: Java 開発環境

このコンテンツはパスワードで保護されています。閲覧するには以下にパスワードを入力してください。