Public Sub InitializeRSA256
' String privateKeyContent = new String(Files.readAllBytes(Paths.get(ClassLoader.getSystemResource("private_key_pkcs8.pem").toURI())));
' String publicKeyContent = new String(Files.readAllBytes(Paths.get(ClassLoader.getSystemResource("public_key.pem").toURI())));
'
' privateKeyContent = privateKeyContent.replaceAll("\\n", "").replace("-----BEGIN PRIVATE KEY-----", "").replace("-----END PRIVATE KEY-----", "");
' publicKeyContent = publicKeyContent.replaceAll("\\n", "").replace("-----BEGIN PUBLIC KEY-----", "").replace("-----END PUBLIC KEY-----", "");
'
' KeyFactory kf = KeyFactory.getInstance("RSA");
Dim KeyFactory As JavaObject
KeyFactory.InitializeStatic("java.security.KeyFactory")
Dim publicKeyStr As String = File.ReadString(File.DirAssets, "jwtRS256.key.pub")
publicKeyStr = publicKeyStr.replace(Chr(10), "").replace("-----BEGIN PUBLIC KEY-----", "").replace("-----END PUBLIC KEY-----", "")
Log(publicKeyStr)
Dim privateKeyStr As String = File.ReadString(File.DirAssets, "jwtRS256.key")
privateKeyStr = privateKeyStr.replace(Chr(10), "").replace("-----BEGIN RSA PRIVATE KEY-----", "").replace("-----END RSA PRIVATE KEY-----", "")
Log(privateKeyStr)
' KeyFactory kf = KeyFactory.getInstance("RSA");
'
' PKCS8EncodedKeySpec keySpecPKCS8 = new PKCS8EncodedKeySpec(Base64.getDecoder().decode(privateKeyContent));
' X509EncodedKeySpec keySpecX509 = new X509EncodedKeySpec(Base64.getDecoder().decode(publicKeyContent));
' RSAPrivateKey key = (RSAPrivateKey) kf.generatePrivate(keySpecPKCS8);
' RSAPublicKey pubKey = (RSAPublicKey) kf.generatePublic(keySpecX509);
'TODO CHECK META
Dim KF As JavaObject
KF = KeyFactory.RunMethod("getInstance",Array("RSA"))
Dim su As StringUtils
Dim keySpecPKCS8 As JavaObject
keySpecPKCS8.InitializeNewInstance("java.security.spec.PKCS8EncodedKeySpec", Array(su.DecodeBase64(privateKeyStr)))
Dim keySpecX509 As JavaObject
keySpecX509.InitializeNewInstance("java.security.spec.X509EncodedKeySpec", Array(su.DecodeBase64(publicKeyStr)))
'============================================================
'THE PROBLEM IS HERE (I may also have done something wrong also in the KF initialization
'============================================================
Dim RSAPrivateKey As JavaObject
'I tried both with those two options but no luck
'RSAPrivateKey.InitializeNewInstance("java.security.interfaces.RSAPrivateKey", Array(KF.RunMethod("generatePrivate", Array(keySpecPKCS8))))
RSAPrivateKey = KF.RunMethod("generatePrivate", Array(keySpecPKCS8))
Dim RSAPublicKey As JavaObject
'RSAPublicKey.InitializeNewInstance("java.security.interfaces.RSAPublicKey", Array(KF.RunMethod("generatePublic", Array(keySpecX509))))
RSAPublicKey = KF.RunMethod("generatePublic", Array(keySpecX509))
Private AO As JavaObject
AO.InitializeStatic("com.auth0.jwt.algorithms.Algorithm")
' Algorithm Algorithm = Algorithm.RSA256(publicKey, privateKey);
' String token = JWT.create()
' .withIssuer("auth0")
' .sign(algorithm);
ALG = AO.RunMethod("RSA256", Array (RSAPublicKey, RSAPrivateKey))
JWT.InitializeStatic("com.auth0.jwt.JWT")
builder = JWT.RunMethodJO("create", Null)
verifier = JWT.RunMethodJO("require", Array(ALG)).RunMethodJO("build", Null)
m_Initialized = True
End Sub