Нет ничего плохого в разборе вашего собственного ввода, я бы не назвал это "переопределением крипто-примитивов".
Чтобы получить ключ publi c, просто проанализируйте модуль в большое целое число:
bigN.SetString("9C99AB1DC1462220A628D...", 16)
Затем создайте свой собственный rsa.PublicKey
.
Полный пример на детской площадке :
N := "9C99AB1DC1462220A628D19BB6C6627FDCCC208FD9F93722F44515F5086F3312D3EFE256A11789F1F7F9A114B879A2DE0005FAE99A68321DD821CE589D1F6E0D"
E := 010001
bigN := new(big.Int)
_, ok := bigN.SetString(N, 16)
if !ok {
panic("failed to parse")
}
pub := rsa.PublicKey{
N: bigN,
E: E,
}
fmt.Println(pub)