トップ «前の日記(2013-01-26) 最新 次の日記(2013-01-28)» 編集

Cocoa練習帳

iOS/iPhone/iPad/watchOS/tvOS/MacOSX/Android プログラミング, Objective-C, Cocoa, Swiftなど

2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|

2013-01-27 [OSX][iOS]RSA公開鍵のバイナリ形式

modulusとpublicExponentの二つのパラメータからRSA公開鍵のバイナリ値を生成する必要があった際に調べた事のメモだ。

RSA公開鍵のASN.1での定義は以下のとおり。

RSAPublicKey ::= SEQUENCE {
    modulus INTEGER, -- n
    publicExponent INTEGER -- e
}

Apple Developer サイトの資料によると、公開鍵のバイナリ形式で、ASN.1の符号化の一つのDERということなので調べてみた。ただし、ASN.1について全ての情報は膨大なので、RSA公開鍵に関係がある部分のみの抜粋となっている。

SEQUENCEやINTEGER等のオブジェクトの形式は以下のとおり。

オブジェクト

タグの番号は以下のとおり。

タグ番号

オブジェクトのタグ欄には、タグ番号がそのまま格納されるのではなくて以下の形式となっている。

タグ

7〜8bitのクラスは、汎用型のSEQUENCEとINTEGERのみなので、RSA公開鍵では00となる。

6bitの構造化は、INTEGERは単一型(0)、SEQUENCEは構造型(1)となる。なので、タグ欄にはINTEGERにはタグ番号そのものが設定され、SEQUENCEは、00+1+10000=0x30となる。

長さ欄は、以下のとおり。

長さ

_ 【Cocoa練習帳】

http://www.bitz.co.jp/weblog/
http://ameblo.jp/bitz/(ミラー・サイト)

トップ «前の日記(2013-01-26) 最新 次の日記(2013-01-28)» 編集