Sample code for 30+ languages & platforms
Classic ASP

Load RSA Private Key from JWK Format (JSON Web Key)

See more RSA Examples

Demonstrates how to load an RSA private key from JWK (JSON Web Key) format.

Note: This example requires Chilkat v9.5.0.66 or later.

Chilkat Classic ASP Downloads

Classic ASP
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<%
success = 0

' Note: This example requires Chilkat v9.5.0.66 or later.

' First build a JWK sample to load..
set json = Server.CreateObject("Chilkat.JsonObject")
success = json.UpdateString("kty","RSA")
success = json.UpdateString("n","33TqqLR3eeUmDtHS89qF3p4MP7Wfqt2Zjj3lZjLjjCGDvwr9cJNlNDiuKboODgUiT4ZdPWbOiMAfDcDzlOxA04DDnEFGAf-kDQiNSe2ZtqC7bnIc8-KSG_qOGQIVaay4Ucr6ovDkykO5Hxn7OU7sJp9TP9H0JH8zMQA6YzijYH9LsupTerrY3U6zyihVEDXXOv08vBHk50BMFJbE9iwFwnxCsU5-UZUZYw87Uu0n4LPFS9BT8tUIvAfnRXIEWCha3KbFWmdZQZlyrFw0buUEf0YN3_Q0auBkdbDR_ES2PbgKTJdkjc_rEeM0TxvOUf7HuUNOhrtAVEN1D5uuxE1WSw")
success = json.UpdateString("e","AQAB")
success = json.UpdateString("d","DjU54mYvHpICXHjc5-JiFqiH8NkUgOG8LL4kwt3DeBp9bP0-5hSJH8vmzwJkeGG9L79EWG4b_bfxgYdeNX7cFFagmWPRFrlxbd64VRYFawZHRJt-2cbzMVI6DL8EK4bu5Ux5qTiV44Jw19hoD9nDzCTfPzSTSGrKD3iLPdnREYaIGDVxcjBv3Tx6rrv3Z2lhHHKhEHb0RRjATcjAVKV9NZhMajJ4l9pqJ3A4IQrCBl95ux6Xm1oXP0i6aR78cjchsCpcMXdP3WMsvHgTlsZT0RZLFHrvkiNHlPiil4G2_eHkwvT__CrcbO6SmI_zCtMmypuHJqcr-Xb7GPJoa64WoQ")
success = json.UpdateString("p","8K33pX90XX6PZGiv26wZm7tfvqlqWFT03nUMvOAytqdxhO2HysiPn4W58OaJd1tY4372Qpiv6enmUeI4MidCie-s-d0_B6A0xfhU5EeeaDN0xDOOl8yN-kaaVj9b4HDR3c91OAwKpDJQIeJVZtxoijxl-SRx3u7Vs_7meeSpOfE")
success = json.UpdateString("q","7a5KnUs1pTo72A-JquJvIz4Eu794Yh3ftTk_Et-83aE_FVc6Nk-EhfnwYSNpVmM6UKdrAoy5gsCvZPxrq-eR9pEwU8M5UOlki03vWY_nqDBpJSIqwPvGHUB16zvggsPQUyQBfnN3N8XlDi12n88ltvWwEhn1LQOwMUALEfka9_s")
success = json.UpdateString("dp","DB9nGuHplY_7Xv5a5UCs5YgxkWPtJFfbIZ1Zr-XHCCY09JIWReOGQG226OhjwixKtOK_OqmAKtMKM9OmKviJRHNbDhbTxumN3u7cL8dftjXpSryiEQlPmWyW94MneI2WNIrvh4wruQuDt8EztgOiDFxwcnUgey8iend7WmZnE7E")
success = json.UpdateString("dq","O-bSTUQ4N_UuQezgkF3TDrnBraO67leDGwRbfiE_U0ghQvqh5DA0QSPVzlWDZc9KUitvj8vxsR9o1PW9GS0an17GJEYuetLnkShKK3NWOhBBX6d1yP9rVdH6JhgIJEy_g0Suz7TAFiFc8i7JF8u4QJ05C8bZAMhOLotqftQeVOM")
success = json.UpdateString("qi","InfGmkb2jNkPGuNiZ-mU0-ZrOgLza_fLL9ErZ35jUPhGFzdGxJNobklvsNoTd-E2GAU41YkJh24bncMLvJVYxHHA5iF7FBWx1SvpEyKVhhnIcuXGD7N5PbNZzEdmr9C6I7cPVkWO-sUV7zfFukexIcANmsd_oBBGKRoYzP5Tti4")

' The JSON contains the following:
' { 
'   "kty": "RSA",
'   "n": "33TqqLR3eeUmDtHS89qF3p4MP7Wfqt2Zjj3lZjLjjCGDvwr9cJNlNDiuKboODgUiT4ZdPWbOiMAfDcDzlOxA04DDnEFGAf-kDQiNSe2ZtqC7bnIc8-KSG_qOGQIVaay4Ucr6ovDkykO5Hxn7OU7sJp9TP9H0JH8zMQA6YzijYH9LsupTerrY3U6zyihVEDXXOv08vBHk50BMFJbE9iwFwnxCsU5-UZUZYw87Uu0n4LPFS9BT8tUIvAfnRXIEWCha3KbFWmdZQZlyrFw0buUEf0YN3_Q0auBkdbDR_ES2PbgKTJdkjc_rEeM0TxvOUf7HuUNOhrtAVEN1D5uuxE1WSw",
'   "e": "AQAB",
'   "d": "DjU54mYvHpICXHjc5-JiFqiH8NkUgOG8LL4kwt3DeBp9bP0-5hSJH8vmzwJkeGG9L79EWG4b_bfxgYdeNX7cFFagmWPRFrlxbd64VRYFawZHRJt-2cbzMVI6DL8EK4bu5Ux5qTiV44Jw19hoD9nDzCTfPzSTSGrKD3iLPdnREYaIGDVxcjBv3Tx6rrv3Z2lhHHKhEHb0RRjATcjAVKV9NZhMajJ4l9pqJ3A4IQrCBl95ux6Xm1oXP0i6aR78cjchsCpcMXdP3WMsvHgTlsZT0RZLFHrvkiNHlPiil4G2_eHkwvT__CrcbO6SmI_zCtMmypuHJqcr-Xb7GPJoa64WoQ",
'   "p": "8K33pX90XX6PZGiv26wZm7tfvqlqWFT03nUMvOAytqdxhO2HysiPn4W58OaJd1tY4372Qpiv6enmUeI4MidCie-s-d0_B6A0xfhU5EeeaDN0xDOOl8yN-kaaVj9b4HDR3c91OAwKpDJQIeJVZtxoijxl-SRx3u7Vs_7meeSpOfE",
'   "q": "7a5KnUs1pTo72A-JquJvIz4Eu794Yh3ftTk_Et-83aE_FVc6Nk-EhfnwYSNpVmM6UKdrAoy5gsCvZPxrq-eR9pEwU8M5UOlki03vWY_nqDBpJSIqwPvGHUB16zvggsPQUyQBfnN3N8XlDi12n88ltvWwEhn1LQOwMUALEfka9_s",
'   "dp": "DB9nGuHplY_7Xv5a5UCs5YgxkWPtJFfbIZ1Zr-XHCCY09JIWReOGQG226OhjwixKtOK_OqmAKtMKM9OmKviJRHNbDhbTxumN3u7cL8dftjXpSryiEQlPmWyW94MneI2WNIrvh4wruQuDt8EztgOiDFxwcnUgey8iend7WmZnE7E",
'   "dq": "O-bSTUQ4N_UuQezgkF3TDrnBraO67leDGwRbfiE_U0ghQvqh5DA0QSPVzlWDZc9KUitvj8vxsR9o1PW9GS0an17GJEYuetLnkShKK3NWOhBBX6d1yP9rVdH6JhgIJEy_g0Suz7TAFiFc8i7JF8u4QJ05C8bZAMhOLotqftQeVOM",
'   "qi": "InfGmkb2jNkPGuNiZ-mU0-ZrOgLza_fLL9ErZ35jUPhGFzdGxJNobklvsNoTd-E2GAU41YkJh24bncMLvJVYxHHA5iF7FBWx1SvpEyKVhhnIcuXGD7N5PbNZzEdmr9C6I7cPVkWO-sUV7zfFukexIcANmsd_oBBGKRoYzP5Tti4"
' } 

' Note: The JSON can contain other members, such as "use", "kid", or anything else.  These will be ignored.
json.EmitCompact = 0

' Show the JWK string to be loaded:
jwkStr = json.Emit()

set privKey = Server.CreateObject("Chilkat.PrivateKey")
success = privKey.LoadJwk(jwkStr)
If (success <> 1) Then
    Response.Write "<pre>" & Server.HTMLEncode( privKey.LastErrorText) & "</pre>"
    Response.End
End If

' OK.. the JWK is loaded.  It can be used in whatever way desired...

' The key can be retrieved in any other format, such as XML or PEM..
Response.Write "<pre>" & Server.HTMLEncode( privKey.GetXml()) & "</pre>"

' XML output:
' <RSAKeyValue>
' 	<Modulus>33TqqLR3eeUmDtHS89qF3p4MP7Wfqt2Zjj3lZjLjjCGDvwr9cJNlNDiuKboODgUiT4ZdPWbOiMAfDcDzlOxA04DDnEFGAf+kDQiNSe2ZtqC7bnIc8+KSG/qOGQIVaay4Ucr6ovDkykO5Hxn7OU7sJp9TP9H0JH8zMQA6YzijYH9LsupTerrY3U6zyihVEDXXOv08vBHk50BMFJbE9iwFwnxCsU5+UZUZYw87Uu0n4LPFS9BT8tUIvAfnRXIEWCha3KbFWmdZQZlyrFw0buUEf0YN3/Q0auBkdbDR/ES2PbgKTJdkjc/rEeM0TxvOUf7HuUNOhrtAVEN1D5uuxE1WSw==</Modulus>
' 	<Exponent>AQAB</Exponent>
' 	<D>DjU54mYvHpICXHjc5+JiFqiH8NkUgOG8LL4kwt3DeBp9bP0+5hSJH8vmzwJkeGG9L79EWG4b/bfxgYdeNX7cFFagmWPRFrlxbd64VRYFawZHRJt+2cbzMVI6DL8EK4bu5Ux5qTiV44Jw19hoD9nDzCTfPzSTSGrKD3iLPdnREYaIGDVxcjBv3Tx6rrv3Z2lhHHKhEHb0RRjATcjAVKV9NZhMajJ4l9pqJ3A4IQrCBl95ux6Xm1oXP0i6aR78cjchsCpcMXdP3WMsvHgTlsZT0RZLFHrvkiNHlPiil4G2/eHkwvT//CrcbO6SmI/zCtMmypuHJqcr+Xb7GPJoa64WoQ==</D>
' 	<P>8K33pX90XX6PZGiv26wZm7tfvqlqWFT03nUMvOAytqdxhO2HysiPn4W58OaJd1tY4372Qpiv6enmUeI4MidCie+s+d0/B6A0xfhU5EeeaDN0xDOOl8yN+kaaVj9b4HDR3c91OAwKpDJQIeJVZtxoijxl+SRx3u7Vs/7meeSpOfE=</P>
' 	<Q>7a5KnUs1pTo72A+JquJvIz4Eu794Yh3ftTk/Et+83aE/FVc6Nk+EhfnwYSNpVmM6UKdrAoy5gsCvZPxrq+eR9pEwU8M5UOlki03vWY/nqDBpJSIqwPvGHUB16zvggsPQUyQBfnN3N8XlDi12n88ltvWwEhn1LQOwMUALEfka9/s=</Q>
' 	<DP>DB9nGuHplY/7Xv5a5UCs5YgxkWPtJFfbIZ1Zr+XHCCY09JIWReOGQG226OhjwixKtOK/OqmAKtMKM9OmKviJRHNbDhbTxumN3u7cL8dftjXpSryiEQlPmWyW94MneI2WNIrvh4wruQuDt8EztgOiDFxwcnUgey8iend7WmZnE7E=</DP>
' 	<DQ>O+bSTUQ4N/UuQezgkF3TDrnBraO67leDGwRbfiE/U0ghQvqh5DA0QSPVzlWDZc9KUitvj8vxsR9o1PW9GS0an17GJEYuetLnkShKK3NWOhBBX6d1yP9rVdH6JhgIJEy/g0Suz7TAFiFc8i7JF8u4QJ05C8bZAMhOLotqftQeVOM=</DQ>
' 	<InverseQ>InfGmkb2jNkPGuNiZ+mU0+ZrOgLza/fLL9ErZ35jUPhGFzdGxJNobklvsNoTd+E2GAU41YkJh24bncMLvJVYxHHA5iF7FBWx1SvpEyKVhhnIcuXGD7N5PbNZzEdmr9C6I7cPVkWO+sUV7zfFukexIcANmsd/oBBGKRoYzP5Tti4=</InverseQ>
' </RSAKeyValue>

Response.Write "<pre>" & Server.HTMLEncode( privKey.GetPkcs8EncryptedPem("secret")) & "</pre>"

' PEM output

' -----BEGIN ENCRYPTED PRIVATE KEY-----
' MIIFDjBABgkqhkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQIRp9eD6gS5x4CAggA
' MBQGCCqGSIb3DQMHBAgMYSDcTKD+UASCBMgAtoYFncjSiep51R2qhK0j5RLsPdCD
' tb3GiwJJycYkMMpbOCVIBNtDMDRrAuTQmdDjFAgKkfktT0p1fLd0RHAv4JKWrDeE
' OsV1BS1pJgI6ulEJVs7nwV9y6JkzuqIiguVM1ukYm8uwjVwKBQtOg9jZjE7uLqSs
' X508rEI3BNxKeD5VMpIDzh+nil5pG3AC74/yAJFJop5J+dcoYgTIVwwcWsieKpCD
' wgTmXQ53tYGtudC4HM3Wtp2PHdg6jDVZFeXkjbcJFKsmalw9wCDOUvE64onUqyhf
' z/8Thu2g3Bs4rYXflEbIbsxqYit7wM5nLAvqByKdOUdmOLLsj0PlnN+ZA9+JRmnI
' bOHUg+XxvreRdphXeNeUF16ro22c9TMyjSXiEP6RvrEcyoi0UnVeeCKjO90q10n3
' TQdIFMkY1gwgUuBo+OUtZPTkbrFA33e9NiHc/OiHVETDHYO/WEceu2ef6mSjcw+C
' Q6WMR6EH24eXUfoI4xaNexGaR7w2EkU1UfGqs6f+c4siZMPExm41H2Xc/MBOpmES
' iQxoinajiiw4DOQ08Cs/hVAm4/dH9XhCnBIig+PZpmeOZGoeyK2D57czLaTPBHdH
' Jr7sZ/pe9vk84DAeQw0nxRbatxBqw2Zq0r6kjmwljRKNlJXGuPlfw0ooOH8F4c+E
' e8XwrPKsOe14u4plP5H0u5N+JVBJGJdGQOuFGKU7Flw0hgEdwdyxHv5dDmPyhtyR
' Ty1YjYyGQZxWLxw4Q2qJwpikL6o8ylXegSr20aeHFDvtCY63UFLxvZ4pDnCxOIR8
' xXJJy179t6BbCPQao4c5U/PRsahgUn/XjKL0lXFUyWoX6Rehr8Zmr+RZFaVhG4WO
' ZodH2CzYNv6co7bfLKLa9u1NHPfTVTVxZTYKw/tuPGscVVhXptPDCjHqOvCtX+pS
' +oshZ1SwM/0MgDmJfyJ0rDkkjBDsv5x5iJV9jmx/DAlGhOR7Is9xgjx5XEXD8oug
' fVQI2ZpZqQ1EAPCGKfQl7XUMwN4S0cmYf/xS5afNMyABJGj0wUdF3YlHxkz+wkeE
' poQ/1EVQLCTVcJBrbbpkJAgUFFwOm6o8behxgVr3yHuO6zuFi5rXVqnztm9JYMRj
' H3ACb14wRR2ctyZovPvZpODywH1K7kfIdRn9UE/o21HfnhtdUJEFPTS16mjGsJpx
' E5aSCXVrvrb/JqHpSvNRpKlHWV9nxuONzqBX3QKa5X/31opPI7qEBYND0oHuH/cB
' BYlstKCUhb4hmg4M6qwA7qC5aLJVoz8toWA4cv0JhhVqnR1jcsyq+r4zusdiEJ2I
' kW5F9u0zNLa8xHByz3Qr6wTMBu3NY3w9NFwIXXq2lkrxDlvHFjMImdXFzb/G1fbc
' 7BDIOwPrEffb0yEsgHxJVHE3NPZJOrbLquS7M8IFjhoky6QxesaU/QLjyMMKphrQ
' EdmBRwKsYHS9BdX4YawtCRjJd3n+z2guF+dIHDvIZVgL1Ednu7G654gVl+MJVIHo
' Wc7pGOc3PRaAEPRF9O0Smwwr+x1qRedoCVhLc3idWPAW+dOTpZUbTSB21D/Q8vdr
' QJ0fNbTa4AGLLoMOp0rZI1ji6ghcMqz5FqyhDqawSV7je6Z/EE0DRwzRZ1mRwykF
' Qe0=
' -----END ENCRYPTED PRIVATE KEY-----

%>
</body>
</html>