oauth2c
oauth2c copied to clipboard
Generate JWK
#82
❯ go run . jwks generate -h
Generate JWK
Usage:
oauth2c jwks generate [flags]
Flags:
--curve int curve (ec) (default 256)
-h, --help help for generate
--size int key size (rsa) (default 2048)
--type string key type (rsa, ps, ec) (default "rsa")
--use string key use (sig, enc) (default "sig")
❯ go run . jwks generate
Generate JWK
# Private JWK
{
"use": "sig",
"kty": "RSA",
"kid": "2ac21f8e-81a7-43e8-b2ac-e031be0c15d8",
"alg": "RS256",
"n": "yIaAAtYgo1HH2wtk60QkQxuMgpX2LHB313lrJ0LQ47jbBcIAeZJLPhSRtdi2lXyCCwqSljP0556mx3bkGndd9OMl2jkGRkQUbN2zDxGEpSnSmqi_ZWvjXtdGV7kWjXwNs6clfYQW57xPRDH3P7vLXrDbGMWMDJDivvvNCiMEy170ihsC7y-WXljfJOPKz5aBoW2SSNz-ZAi4wCZ_qFfKxfTe_kuncnghIRl8j-TZnQHa6Kh7rFnjiOLxmaiHjMrF94R5BjsTjNJF70Q4sfwXuDjzniEWcJxjw9FdSXhNmZFpH4wiptJXDZvfjV8AkgeQRSBUzFuXYLUm9jRffhieVw",
"e": "AQAB",
"d": "U0q65XK3_966WxvygV6-iTlqNdvAc1kMDm6auaYhSlXAdDXPKLBBnLnChHxN6u3avmdX2BggxAy8TeHugafPWSb41BoXpxwkN8wm0j1-kXQ7zI4HYkNcIErfJxT0bzR2JIdrJSW2te8cJcFzZ__DS8O-Xh3APH_6D0ZcNrexCB_eUVqnXAegKdQOBs6_UOGyRZhy1Ncs3jLUiFYeE-E-NBAD5sTiJ-06D_fXJJ3aBqj9tN-ZQ3WlyhD44N0NKdMAHeutr0IJh0SJERlJl2-m0WCUfjNbN77tz5jLfFEKTaaYzRZrYBtT1pX3cl4pvMSDA-9qQDeRxn7nM8XT4ZIscQ",
"p": "0tdK1JQ8JfJBNtHZecgdhdnDsD4QhLkVZs9-laVlxWF0j9pwoiCCYN1SzXsdEdUao-oLK8ACVKa9suH61ZjE1QMjpCbl-xcv5tP40_VrBYGao3proXe3A_-sUv2NpJxRWJA53MrWnUmCtwwNjR_SxKBlo1Wmt1GnDz3_bSgEFAU",
"q": "83mW0-sgUGDEi4B-IxCt3JVmqHUyg1wlfmknmZGAAReN6GujtzOb8QEyEaa5PEsoKA_jFvsBAmNQWEK_cy5_KVCA2NUHLyFME2gV5WqRzWJQ18JIfKxdEwrIdJwI_fpAUuGFY7jS7lE4CopUvc4yA45v901sidwUAFWfbHutc6s",
"dp": "eIHZIVuAbWfjYkPa-0InraNjt84hftqSouqhvUKFwqULDFWb3u6Z1mdptkxRtymISnuw2tap_lw3PJDw3zir99wNePtKo5MDK_mn1O4Gt2T2T83eyrE0B7MQeXa2iIlX7Tix-cJtnASyE5FuBWVVAFF1BkAkQ88Fny6eWXNvsUk",
"dq": "xa_HwzF5_0lSzGH8CMSWJjA4NjdSWE4NM2J2AL6ezEQvuLMNLsb8quZpnONeK5JqfHzJyfLrkuDIb6FiiUcLgKQYufXd62qBtpAglzG8SKK3OThKWtAokjmDIQtAUddLOwBZqep7eX0An65JuAMfoLuaNZXrttO2eb8Lvq183Bk",
"qi": "wrwjJgmjZG31SisnAc1aciHEc0gCAc6MzRCqv86K78Z6YOXz0JVZp5ahOqwtIh5GS5qTefWYk9x7-_5tmZut8_7rF0H1bOp4O1OtCX6lN5oTN8PdnQ0BmwzBcZN-tw9fEwhvhez0YBSuLeL4tc50BhoyovuUQq-QgHnpnowlzUs"
}
# Public JWK
{
"use": "sig",
"kty": "RSA",
"kid": "2ac21f8e-81a7-43e8-b2ac-e031be0c15d8",
"alg": "RS256",
"n": "yIaAAtYgo1HH2wtk60QkQxuMgpX2LHB313lrJ0LQ47jbBcIAeZJLPhSRtdi2lXyCCwqSljP0556mx3bkGndd9OMl2jkGRkQUbN2zDxGEpSnSmqi_ZWvjXtdGV7kWjXwNs6clfYQW57xPRDH3P7vLXrDbGMWMDJDivvvNCiMEy170ihsC7y-WXljfJOPKz5aBoW2SSNz-ZAi4wCZ_qFfKxfTe_kuncnghIRl8j-TZnQHa6Kh7rFnjiOLxmaiHjMrF94R5BjsTjNJF70Q4sfwXuDjzniEWcJxjw9FdSXhNmZFpH4wiptJXDZvfjV8AkgeQRSBUzFuXYLUm9jRffhieVw",
"e": "AQAB"
}
# Private Key
-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEAyIaAAtYgo1HH2wtk60QkQxuMgpX2LHB313lrJ0LQ47jbBcIA
eZJLPhSRtdi2lXyCCwqSljP0556mx3bkGndd9OMl2jkGRkQUbN2zDxGEpSnSmqi/
ZWvjXtdGV7kWjXwNs6clfYQW57xPRDH3P7vLXrDbGMWMDJDivvvNCiMEy170ihsC
7y+WXljfJOPKz5aBoW2SSNz+ZAi4wCZ/qFfKxfTe/kuncnghIRl8j+TZnQHa6Kh7
rFnjiOLxmaiHjMrF94R5BjsTjNJF70Q4sfwXuDjzniEWcJxjw9FdSXhNmZFpH4wi
ptJXDZvfjV8AkgeQRSBUzFuXYLUm9jRffhieVwIDAQABAoIBAFNKuuVyt//eulsb
8oFevok5ajXbwHNZDA5umrmmIUpVwHQ1zyiwQZy5woR8Tert2r5nV9gYIMQMvE3h
7oGnz1km+NQaF6ccJDfMJtI9fpF0O8yOB2JDXCBK3ycU9G80diSHayUltrXvHCXB
c2f/w0vDvl4dwDx/+g9GXDa3sQgf3lFap1wHoCnUDgbOv1DhskWYctTXLN4y1IhW
HhPhPjQQA+bE4iftOg/31ySd2gao/bTfmUN1pcoQ+ODdDSnTAB3rra9CCYdEiREZ
SZdvptFglH4zWze+7c+Yy3xRCk2mmM0Wa2AbU9aV93JeKbzEgwPvakA3kcZ+5zPF
0+GSLHECgYEA0tdK1JQ8JfJBNtHZecgdhdnDsD4QhLkVZs9+laVlxWF0j9pwoiCC
YN1SzXsdEdUao+oLK8ACVKa9suH61ZjE1QMjpCbl+xcv5tP40/VrBYGao3proXe3
A/+sUv2NpJxRWJA53MrWnUmCtwwNjR/SxKBlo1Wmt1GnDz3/bSgEFAUCgYEA83mW
0+sgUGDEi4B+IxCt3JVmqHUyg1wlfmknmZGAAReN6GujtzOb8QEyEaa5PEsoKA/j
FvsBAmNQWEK/cy5/KVCA2NUHLyFME2gV5WqRzWJQ18JIfKxdEwrIdJwI/fpAUuGF
Y7jS7lE4CopUvc4yA45v901sidwUAFWfbHutc6sCgYB4gdkhW4BtZ+NiQ9r7Qiet
o2O3ziF+2pKi6qG9QoXCpQsMVZve7pnWZ2m2TFG3KYhKe7Da1qn+XDc8kPDfOKv3
3A14+0qjkwMr+afU7ga3ZPZPzd7KsTQHsxB5draIiVftOLH5wm2cBLITkW4FZVUA
UXUGQCRDzwWfLp5Zc2+xSQKBgQDFr8fDMXn/SVLMYfwIxJYmMDg2N1JYTg0zYnYA
vp7MRC+4sw0uxvyq5mmc414rkmp8fMnJ8uuS4MhvoWKJRwuApBi59d3raoG2kCCX
MbxIorc5OEpa0CiSOYMhC0BR10s7AFmp6nt5fQCfrkm4Ax+gu5o1leu207Z5vwu+
rXzcGQKBgQDCvCMmCaNkbfVKKycBzVpyIcRzSAIBzozNEKq/zorvxnpg5fPQlVmn
lqE6rC0iHkZLmpN59ZiT3Hv7/m2Zm63z/usXQfVs6ng7U60JfqU3mhM3w92dDQGb
DMFxk363D18TCG+F7PRgFK4t4vi1znQGGjKi+5RCr5CAeemejCXNSw==
-----END RSA PRIVATE KEY-----
# Public Key
-----BEGIN RSA PUBLIC KEY-----
MIIBCgKCAQEAyIaAAtYgo1HH2wtk60QkQxuMgpX2LHB313lrJ0LQ47jbBcIAeZJL
PhSRtdi2lXyCCwqSljP0556mx3bkGndd9OMl2jkGRkQUbN2zDxGEpSnSmqi/ZWvj
XtdGV7kWjXwNs6clfYQW57xPRDH3P7vLXrDbGMWMDJDivvvNCiMEy170ihsC7y+W
XljfJOPKz5aBoW2SSNz+ZAi4wCZ/qFfKxfTe/kuncnghIRl8j+TZnQHa6Kh7rFnj
iOLxmaiHjMrF94R5BjsTjNJF70Q4sfwXuDjzniEWcJxjw9FdSXhNmZFpH4wiptJX
DZvfjV8AkgeQRSBUzFuXYLUm9jRffhieVwIDAQAB
-----END RSA PUBLIC KEY-----
TODO
- [x] alg
- [ ] docs
- [ ] save to file
--private-jwk-output private.json --public-jwk-output public.json. --private-key-output private.pem --public-key-output public.pem --cert-output cert.pem