ssh-keygenで生成したpublicキーを読み込んで、暗号化したい
そのためには最終的にcrypt/rsaパッケージのrsa.PublicKeyオブジェクトが必要。
- pem形式のprivate keyをパース(crypt.pemとcrypt.x509)して、rsa.PrivateKey.PublicKeyを使う。
- でもPrivateKeyは配りたくないのでPublicKeyが使いたい
- pem形式のpublic keyをパースする方法。
- でもssh-keygenで出てくるpublic keyはpem形式じゃない。
- golang.org/x/crypt/sshを使う。ssh.ParsePublicKey()でsshkey-gen方式のキーはパースできるが、rsa.PublicKeyではなくて、ssh.PublicKeyという別のオブジェクトが出てきて使えない。
- ssh.PublicKeyはInterfaceで、ssh.rsaPublicKeyが実体で、
type ssh.rsaPublicKey rsa.PublicKey
って定義されている - ssh.PublicKeyからrsa.PublicKeyへ変換する方法は提供されてない
- rsa.PublicKeyからssh.PublicKeyは変換できる
- ssh/keys.goの変換関数の実体や、ssh.rsaPublicKeyはプライベートなので外から使えない。
- ssh.PublicKeyはInterfaceで、ssh.rsaPublicKeyが実体で、
- reflect/unsafeを使って、インタフェースから*rsa.PublicKeyを取り出せないか?
- ssh/keys.goのコードをコピーして同じように処理する?