2010/11/03

django file download

ひさ〜しぶりに Django で作ってあったものをいじりました。
str で持ってるデータをダウンロードしてもらいたくって
どうするのかな〜と思ってググってみると

Generating file to download with Django - Stack Overflow
もぉほんと、Stack Overflow と結婚しちゃえばいいのに

上のページは
「Zip file を実ファイル作らずに何とかしたい」
っつー話だったようですが
def download(request):
zip_string = (何か zipped なデータ)
response = HttpResponse(zip_string, content_type='application/zip')
response['Content-Disposition'] = 'attachment; filename=myfile.zip'
return response
みたいにすればいいみたいでした。
みたいってのは content_type を HttpResponse の引数に渡して
Content-Disposition で filename など指定してあげること。

なんか、今更そんなこと調べてるのか! って感じですね、

2010/10/26

getpass python username

Google History は便利ですねぇ。
以前は Firefox の履歴から Google で検索したものを、
じゃなかった、ググったものを抜いてネタ探してたんですが、
今ではすっかり Google History です。

で、暫くサボってたんで記憶も曖昧になってるんですが
getpass python username で検索してるんですよね

何したかったかっつーとそれは覚えてて
getpass は key input 隠して入力取ってくれるけど
入力見せつつ prompt 出して入力取ってくれるの無いの?
って思って

でね、あるわけですよ、raw_input って関数が、だから、
import getpass

print "%s\t%s" % (raw_input('user: '), getpass.getpass('passwd: '))
こんなことすりゃいいんですよ

でね、これは覚えてるんだけどどのページ見て raw_input に辿りついたのか
もしかしたら何か適当にソースを読んだのかもしれないし
どっかページを見たのかもしれないし
それが思い出せんのです

いや〜、こまった
歳が

2010/10/10

tokyocabinet

Tokyo Cabinet を使ってみよー、と思ったんですが
ググってみても
データベースマネージャ Tokyo Cabinet
まぁご本家が一番お詳しいわけですよ

と思ってインストールしようとしたら若干はまりまして
  • 32bit 環境だったら --enable-off64 付けましょう
というのが教訓でした

で、どうせならこれを TokyoTyrant からと思って
ディスク多めだった FreeBSD のサーバから、と思ったらまたはまって
  • FreeBSD だったら gmake 使って build

というのが結論でした

更に、データほ他マシンに移動させると
5: invalid meta data
って怒られたりするの。
  • --enable-swab っていう configure option もあるぞ
まじでー

dbm かわいいなぁ

メモリが 16GB くらいあるマシンが欲しいっす

2010/10/05

cryptoapi aia windows-98

cryptoapi というのはここでは Windows API の暗号のやつを想定
AIA は Authority Information Access の略
Authority Information Access は X.509 などの機能拡張
X.509 は公開鍵証明書の規格の名前
で Windows 98 は Microsoft の OS の名前

で、やっぱ AIA ですよね、何それ? っていうの
http://www.ipa.go.jp/security/rfc/RFC5280-04JA.html#042201 見ると
その証明書の認証局の証明書が入ったりするみたいです。

で、ここで我らが Microsoft さんの登場です。
いつも知らないところで色々してくれてる Microsoft さん。
CryptoAPI で証明書を検証するときにも AIA をちゃんと見てくれて
手元に指されてる証明書が無かったら取ってきてくれたりするんです。

えー、まじでー

っていうのを検索した結果の「暗号と PKI の基本」には書いてあります

にしても「RFC 5280」にしても「暗号と PKI の基本」にしても
長い
引用しようと思ったけど必要なとこ含ませると長くなっちゃって
そんなダラダラ引用しても仕方ないから引用しませんでした
なんかもーこっとさっくり言えないもんすかねぇ

で、Windows 98 ですよ、検索語句にも含めた
Windows 98 でもそうなのかどうか? が良く分からず
検索自体は空振りに終わってしまいました
実機検証でもできたらいいんですが...

Windows 98 ってどうやったらいま動かせるの??
CD はあるんですが boot disk が見当たらず
FreeDOS と仮想化技術で何とかならないのかなぁと思うんですが
面倒ですね、Windows 98 までそこまでするか??

いかん、Microsoft の話してるのに愚痴が多くなってしまった

2010/09/23

diffie-hellman dhe

なんか、質問受けてたんですよね、きっと
DH と DHE って何が違うの? って話になったんで検索しました

夜でもアッサム: SSL(TLS)のDHとDHEの違い
なんかもぉ、しっかり書いてありましたよ
  • DHEのEは、EphemeralのE。
  • DHEは、DHパラメータを通信時に動作に作成する。
  • DHは、DHパラメータは証明書に書かれている物を使う。よって、static DHとも呼ばれる。
  • DH-RSAは、証明書にCAがRSAで署名したという事。証明書にRSA鍵が入っているわけではない。
  • DHE-RSAは、証明書にRSA鍵が入っている。


でね、気になるので原典をあたるわけですよ、
英語だと辛いから和訳ですけど
The TLS Protocol Version 1.0
DH は、認証局(CA)によって署名されたサーバー証明書に含まれているDiffie-Hellman パラメータを使用した暗号スイートを示すものである。DHEは、CA によって署名された DSS またはRSA証明書により署名されたDiffie-Hellmanパラメータを使用した一時的 Diffie-Hellman を示すものである。使用される署名アルゴリズムは、DHまたは DHEパラメータの後に指定される。
おぉ、なるほど、これだ

この前後に、大量の CipherSuite が記載されています。
抜粋すると
CipherSuite TLS_RSA_WITH_RC4_128_MD5 = { 0x00,0x04 };
CipherSuite TLS_RSA_WITH_RC4_128_SHA = { 0x00,0x05 };
CipherSuite TLS_RSA_WITH_3DES_EDE_CBC_SHA = { 0x00,0x0A };
CipherSuite TLS_DH_DSS_WITH_3DES_EDE_CBC_SHA = { 0x00,0x0D };
CipherSuite TLS_DH_RSA_WITH_3DES_EDE_CBC_SHA = { 0x00,0x10 };
CipherSuite TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA = { 0x00,0x13 };
CipherSuite TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA = { 0x00,0x16 };


SSL/TLS って何をしてるかってーと
  • サーバ(とクライアント)の認証
  • 通信の暗号化
  • 通信の改竄検知
でした。で、それぞれ
  • 証明書(=身元情報+公開鍵+それらの認証局による署名)と公開鍵に対応する秘密鍵を持ってること
  • 外部とは秘密に交換した情報を鍵とした暗号化
  • 外部とは秘密に交換した情報を鍵とした HMAC
で実現してました。

何が大切かっていうと「信頼できる相手」と「鍵交換」できるってことね

TLS_RSA_WITH
鍵交換に使える RSA 証明書があるんで、秘密鍵持ってることを確認して認証して、証明書の鍵で鍵交換
TLS_DH_???_WITH
DH 証明書があるんで、鍵交換で同じもの共有できると秘密鍵の所有も確認できるんで認証もできる。??? ってのは証明書の署名。
TLS_DHE_???_WITH
鍵交換には使えないかもしれない? RSA/DSS 証明書があるんで、秘密鍵持ってることを確認して認証して、公開鍵で署名した DH の鍵なら信頼できるんでそれを使って鍵交換。??? は、何だ? 証明書の公開鍵か? 署名か?


かな、ちょっと想像入ってるけど。
分からない部分もあるけど。

っていうか鍵交換に使える RSA 証明書しか見たことないし
TLS_RSA_WITH だけで許してもらえるよね、きっと。

2010/09/02

pkcs7 openssl create

Windows はダブルクリックで
X.509 な証明書の中身を見せてくれるのでいいですよね
PKCS#12 も PKCS#7 も中身見せてくれたりします
何で CSR は見せてくれないんでしょう、ここだけちょっと残念

PKCS#7 ってのは「PKCS - Wikipedia」に書いてありますが
メッセージの暗号化や証明書の配布に使われる形式だそうです
Windows だと複数の証明書をまとめて PKCS#7 にしておくと
一辺にインポートできたりして便利です

で、作り方が分からない、OpenSSL ならできるんじゃないの!?
でもそれっぽいコマンドがないヨ!!
と思って検索しました

Creating a PKCS7 (P7B) Using OpenSSL | langui.sh
おぉぉ、
$ openssl crl2pkcs7 -nocrl -certfile cert.pem
なのか。crl2pkcs7 なのに -nocrl ってそのセンス!!

PEM が連なってる 1 つのファイルを突っ込んでみて
できたファイルがちゃんと Windows で読めました、沢山入ってました
ちなみに拡張子は .p7b です

2010/08/30

linux 音楽cd コピー

数日車に乗る用事があったので
聴きたい CD をコピーして車で聴くかと思いました
で、Mac mini でコピーしようと思ったんですが方法が良く分からず
ググったり何なりした結果 iTunes に一旦読み込まないとダメと結論
なにそれ面倒くさい

本当は OS X 用のライティングソフトも持ってるんですが
インストールしてなくてどっか仕舞っちゃってたのでやっぱ面倒
なので Linux で何とかならないの? と思いました

Linux:コマンドラインで音楽CDをコピー - miyapiのひとりごと
これだ!

cdrdao ってソフトがあって、それなら音楽 CD も扱ってくれるみたいで
# cdrdao copy
でも適当にデバイス見付けてよきにはからってくれます
ドライブが複数繋がってたら指定したらいいと思う

cdrdao で使いそうなコマンドは copy の他に scanbus と write くらいかな?
copy のときに --keepimage って付けると .toc と .bin って拡張子のファイルが保存され
write で .toc なファイルを指定すると .bin を焼いてくれます
コピーを複数枚複製する場合にはこれが良さそうでした