nulla/lib/nulla/keygen.ex

19 lines
618 B
Elixir

defmodule Nulla.KeyGen do
def generate_keys do
rsa_key = :public_key.generate_key({:rsa, 2048, 65537})
{:RSAPrivateKey, :"two-prime", n, e, _d, _p, _q, _dp, _dq, _qi, _other} = rsa_key
public_key = {:RSAPublicKey, n, e}
private_entry =
{:PrivateKeyInfo, :public_key.der_encode(:RSAPrivateKey, rsa_key), :not_encrypted}
public_entry =
{:SubjectPublicKeyInfo, :public_key.der_encode(:RSAPublicKey, public_key), :not_encrypted}
private_pem = :public_key.pem_encode([private_entry])
public_pem = :public_key.pem_encode([public_entry])
{public_pem, private_pem}
end
end