I am trying find the encryption format of a private key whether it is pkcs1 or pkcs8. Is there any golang code that helps me identify it
How to check pkcs format of a private key using golang code?
1k Views Asked by Vejju Deepesh At
2
There are 2 best solutions below
1
On
func main() {
pemString := `-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,1ADE9ED351F5B8C7
z8nRX5jG2eUxcahgzF/Sn47DWXKs/y+pOcyYzTA3eBYwkqnjOzSqK9YbV8irAAZm
uwwoGBCjn7740nCo+pEYe+ECC4MJBrAl6uPcX6eL0ltj1En5gqFB6bPqFrVa8uuf
MDoSGJzIcDl9kuLK4xS0q9TE7K5ayrzfn7ecn6/KHjqgIdGtEsrZT1Ajhm6Quubs
PhCRTldky/o1LegEoooUm2s509EGX2PixAWfTS36Z3UENOSWAgHJCdfybDR7+jvP
lC9ZHXD/OVcgDVC+K3UjF7kV5HMD+CosuCwR6oXHEiKGv6X6rW46wyB17ul/zDA5
6MbQeEDDE3uEa+cpAGzeYwudCRttclsBlLKBDHv2DgjI+yoGU/GuwuV5Gd9y4fYw
5ZakGhezbm9W5g4XiuA3wTM9j4x2hNIB2Bexu8b9KlZwJnXZOY8glDcfdT5+kmQL
CY4LlqZQU/YXFLoGpChidQmIQhxzVsYRx46NK0l+hrrJJ2xGz+Cj5AhqomOjq69y
5AAjL3THAj1ys2dy54Ue1m1T4w12Oz+fAICVC2mb966821cUjkSzC2QVGqE+UdrS
C9qaMtBvKxumN/88Pl3SsO1tDpgSG4OTcr+Hyeh20fg3wVnFPZJZyWDVnv4cXrVs
SYAk7m3ngAvr+XOu8WOdOc8ouuiWlaFhKNpGC6MZT1FKCCD53VANeehdBbYngmrR
oZAuQBtS1aJpMpP2zcsXcexcuZrHSdVlaU1Cs3JykIXt1kmJDKAcyz1C8dRA23fI
QlP3Q+lbohQpWdS8hSDhetxUaCYHIYHJL3fp/0hsOWrd2oJ7ukNBEPIaEK9FnKHe
nrAp6spTrtCAFum6UAqiV6eoAyX2SwIJepPivgxcquA7rIeO/D4OZCHRsQtLMFPn
FG7KYJ0ZcAincs5AKX67hxrZBLt1VvjvqyifdhFEJoCI0vwza1Q9tFtrkJ4dXr5W
n5wnS8dSZnin9JWYCf1ltxVwPNxlii1jwYmIKM49D3qcmSsKsWNNrAW/nvrkOP0R
CasZKUGgpYu6cu0T1JYayZyb5gWjawDUkZpdd0E/RS/xk5qvJ6jrcu8QoiOo0s+f
EizdBvhiLuA6SNWHj/ksXf3seTTdHxDdG91iea5t+vK1ZJoJC9PTxB18ws6BALCH
3DGXBo1vdoz7HVTq0YeTwavzhY9l3UYPcNeM6+blEuy7S0p5OoavVevynKXp+/Ct
gsODMh6Xhz1kjPIDfvuA36HJiB84FGED6d2s+7MOTh/z7p5d1OfUMu+0IsyDR6Un
p17G82ihgZlE9MbJVnAGSpUPQd6gmtdFh7jgu2S7SYqph5P6s/aVlZsH36xVgdRG
3pdo+7qhuWulBwN9dsdSigy0CLAOiGJAU3Pxu1QdKiwE+/Qs6LmLRkLWbd4S42N2
Ur1xwXiBC8Qz35JZpE6+MyvR4jUybSC6IMhWPHrpQ2sVw6HFlRvPN78egO9zuO6v
UTqL30g3J5+SS+ulLm16xwRgBAiLBYgvDLpfsQB3G3rShOyiNvvOneGZ8FZIerpB
RVpv18PvAvhFICyUuxVkvTm6j1BObmMvoefPOUWeZHsE+Miu/N2UoQ==
-----END RSA PRIVATE KEY-----`
block, _ := pem.Decode([]byte(pemString))
_, err := x509.ParsePKCS8PrivateKey(block.Bytes)
if err != nil {
fmt.Println(err)
fmt.Println("hi")
} else {
fmt.Println("bye")
}
}
asn1: structure error: length too large
hi
Just parse the key,
errcomes if mismatch.EDIT:
For encrypted private key, need to decrypt first: