/** * Set a key entry in a key store */ private static void setKeyEntry(KeyStore keyStore, String alias, String clientKey, String clientCert) { X509Certificate[] clientCertificates = CertificateUtil.createCertificateChain(clientCert); PrivateKey key = CertificateUtil.createKeyPair(clientKey).getPrivate(); try { keyStore.setKeyEntry(alias, key, EMPTY, clientCertificates); } catch (KeyStoreException e) { throw new RuntimeException("Failed to set key entry", e); } }
private Operation createClientCredentials(String caCert, String caKey) { X509Certificate caCertificate = CertificateUtil.createCertificate(caCert); KeyPair caKeyPair = CertificateUtil.createKeyPair(caKey); AuthCredentialsServiceState authCredentials = new AuthCredentialsServiceState(); authCredentials.documentSelfLink = ManagementUriParts.AUTH_CREDENTIALS_CLIENT_LINK; authCredentials.type = AuthCredentialsType.PublicKey.name(); authCredentials.userEmail = "core"; CertChainKeyPair signedForClient = CertificateUtil.generateSignedForClient("computeClient", caCertificate, caKeyPair.getPrivate()); authCredentials.publicKey = CertificateUtilExtended.toPEMformat( signedForClient.getCertificate(), getHost()); authCredentials.privateKey = CertificateUtilExtended.toPEMFormat( signedForClient.getPrivateKey(), getHost()); return Operation.createPost(this, AuthCredentialsService.FACTORY_LINK) .addPragmaDirective(Operation.PRAGMA_DIRECTIVE_FORCE_INDEX_UPDATE) .setBody(authCredentials); }