2012-02-26 16 views
2

私は、OpenSSLのDSA実装を使用しようとしているが、私は、次の詳細が非常に混乱しています:コマンドopenssl dsa ....の「-text」OpenSSLのバイトシーケンスは、リトルエンディアンかビッグエンディアンのどちらですか?

  • オプション:出力の16進数、私は修正していますそれらがバイトであると仮定するために、リトルエンディアンの順序になっていますか?

  • 機能BN_bn2hexとBN_hex2bnは、どのEndianessを使用していますか?

ご協力いただきありがとうございます。

答えて

8

OpenSSLは、すべての一連のバイト(unsigned charアレイ)をビッグエンディアンとして扱います。

ファンクションBN_bn2hexおよびBN_hex2bnは、印刷可能な形式との変換用です。印刷可能な形式は常に自然な読み上げ順序であり、ビッグエンディアンです。

bn2binのような印刷できない形式の変換については、ドキュメントでは変換がビッグエンディアンであることが明示されています。しかし、私が前に言ったように、OpenSSLの大会はすべての一連のバイトのビッグエンディアンです。

+0

あなたの答えをありがとう! – dsign

+0

@indivこれは、コードがリトルエンディアンマシン上で実行されている場合、OpenSSL APIに渡す必要のあるデータのバイトスワップを行う必要があることを意味しますか? – user3342339

+1

@ user3342339:いいえ。数字を表すバイト列(通常は 'unsigned char []'または 'unsigned char *')のみがビッグエンディアンとして解釈されます。 'int'や' long'のようなプリミティブ型を受け入れるAPI関数は、期待通りにホストフォーマットです。 – indiv

関連する問題