mirror of
https://github.com/storytold/irsa-manager.git
synced 2026-10-24 08:15:52 +00:00
create Key Pair
This commit is contained in:
+13
-25
@@ -5,48 +5,36 @@ import (
|
||||
"crypto/rsa"
|
||||
"crypto/x509"
|
||||
"encoding/pem"
|
||||
"os"
|
||||
)
|
||||
|
||||
func createKeyPair() error {
|
||||
// RSAキーペアの生成
|
||||
type KeyPair struct {
|
||||
PublicKey []byte
|
||||
PrivateKey []byte
|
||||
}
|
||||
|
||||
func createKeyPair() (*KeyPair, error) {
|
||||
privateKey, err := rsa.GenerateKey(rand.Reader, 2048)
|
||||
if err != nil {
|
||||
return err
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// private keyをPEM形式で保存
|
||||
// convert private key to PEM
|
||||
privPem := pem.Block{
|
||||
Type: "RSA PRIVATE KEY",
|
||||
Bytes: x509.MarshalPKCS1PrivateKey(privateKey),
|
||||
}
|
||||
privPemFile, err := os.Create("private_key.pem")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer privPemFile.Close()
|
||||
if err := pem.Encode(privPemFile, &privPem); err != nil {
|
||||
return err
|
||||
}
|
||||
privPemBytes := pem.EncodeToMemory(&privPem)
|
||||
|
||||
// 公開鍵をPKIX, ASN.1 DER形式に変換
|
||||
// convert public key to PKIX, ASN.1 DER
|
||||
pubASN1, err := x509.MarshalPKIXPublicKey(&privateKey.PublicKey)
|
||||
if err != nil {
|
||||
return err
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// 公開鍵をPEM形式で保存
|
||||
pubPem := pem.Block{
|
||||
Type: "PUBLIC KEY",
|
||||
Bytes: pubASN1,
|
||||
}
|
||||
pubPemFile, err := os.Create("public_key.pem")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer pubPemFile.Close()
|
||||
if err := pem.Encode(pubPemFile, &pubPem); err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
pubPemBytes := pem.EncodeToMemory(&pubPem)
|
||||
return &KeyPair{pubPemBytes, privPemBytes}, nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user