101 KeyPairGenerator keyGen = null;
103 if (signatureAlgorithm == null) {
104 throw new RuntimeException(
"The signature algorithm parameter cannot be null");
105 }
else if (SignatureAlgorithmFamily.RSA.equals(signatureAlgorithm.getFamily())) {
106 keyGen = KeyPairGenerator.getInstance(signatureAlgorithm.getFamily().toString(),
"BC");
107 keyGen.initialize(2048,
new SecureRandom());
108 }
else if (SignatureAlgorithmFamily.EC.equals(signatureAlgorithm.getFamily())) {
109 ECGenParameterSpec eccgen =
new ECGenParameterSpec(signatureAlgorithm.getCurve().getAlias());
110 keyGen = KeyPairGenerator.getInstance(signatureAlgorithm.getFamily().toString(),
"BC");
111 keyGen.initialize(eccgen,
new SecureRandom());
113 throw new RuntimeException(
"The provided signature algorithm parameter is not supported");
117 KeyPair keyPair = keyGen.generateKeyPair();
118 java.security.PrivateKey pk = keyPair.getPrivate();
122 X509Certificate[] chain =
new X509Certificate[1];
125 String alias = UUID.randomUUID().toString();
128 FileOutputStream stream =
new FileOutputStream(
keyStoreFile);
131 PublicKey publicKey = keyPair.getPublic();
133 JSONObject jsonObject =
new JSONObject();
134 jsonObject.put(KEY_TYPE, signatureAlgorithm.getFamily());
135 jsonObject.put(KEY_ID, alias);
136 jsonObject.put(KEY_USE, Use.SIGNATURE);
137 jsonObject.put(ALGORITHM, signatureAlgorithm.getName());
138 jsonObject.put(EXPIRATION_TIME, expirationTime);
139 if (publicKey instanceof RSAPublicKey) {
140 RSAPublicKey rsaPublicKey = (RSAPublicKey) publicKey;
141 jsonObject.put(MODULUS, Base64Util.base64urlencodeUnsignedBigInt(rsaPublicKey.getModulus()));
142 jsonObject.put(EXPONENT, Base64Util.base64urlencodeUnsignedBigInt(rsaPublicKey.getPublicExponent()));
143 }
else if (publicKey instanceof ECPublicKey) {
144 ECPublicKey ecPublicKey = (ECPublicKey) publicKey;
145 jsonObject.put(CURVE, signatureAlgorithm.getCurve());
146 jsonObject.put(X, Base64Util.base64urlencodeUnsignedBigInt(ecPublicKey.getW().getAffineX()));
147 jsonObject.put(Y, Base64Util.base64urlencodeUnsignedBigInt(ecPublicKey.getW().getAffineY()));
149 JSONArray x5c =
new JSONArray();
150 x5c.put(Base64.encodeBase64String(cert.getEncoded()));
151 jsonObject.put(CERTIFICATE_CHAIN, x5c);
String keyStoreFile
Definition: OxAuthCryptoProvider.java:67
String dnName
Definition: OxAuthCryptoProvider.java:69
String keyStoreSecret
Definition: OxAuthCryptoProvider.java:68
X509Certificate generateV3Certificate(KeyPair keyPair, String issuer, String signatureAlgorithm, Long expirationTime)
Definition: OxAuthCryptoProvider.java:281
KeyStore keyStore
Definition: OxAuthCryptoProvider.java:66