Skip to content

Commit

Permalink
CORE-20767: Close input streams for RuntimeGradlePlugin (#6256)
Browse files Browse the repository at this point in the history
* CORE-20767: Close input streams for RuntimeGradlePlugin

* CORE-20767: Found other examples of inputstream
  • Loading branch information
tlawson3 authored Jul 4, 2024
1 parent 493319a commit c73b7c3
Show file tree
Hide file tree
Showing 3 changed files with 45 additions and 33 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -85,15 +85,18 @@ class KeyStoreHelper {
certificateAlias: String,
certificateFactoryType: String = "X.509"
) {
val keyStore = KeyStore.getInstance(KEYSTORE_INSTANCE_TYPE)
keyStore.load(keyStoreFile.inputStream(), keyStorePassword.toCharArray())
keyStore.setCertificateEntry(
certificateAlias,
CertificateFactory.getInstance(certificateFactoryType)
.generateCertificate(certificateInputStream),
)
keyStoreFile.outputStream().use {
keyStore.store(it, keyStorePassword.toCharArray())
keyStoreFile.inputStream().use { inputStream ->
val keyStore = KeyStore.getInstance(KEYSTORE_INSTANCE_TYPE)
keyStore.load(inputStream, keyStorePassword.toCharArray())
keyStore.setCertificateEntry(
certificateAlias,
CertificateFactory.getInstance(certificateFactoryType)
.generateCertificate(certificateInputStream),
)

keyStoreFile.outputStream().use { outputStream ->
keyStore.store(outputStream, keyStorePassword.toCharArray())
}
}
}

Expand All @@ -110,15 +113,18 @@ class KeyStoreHelper {
certificateAlias: String,
exportedCertFile: File
) {
val keyStore = KeyStore.getInstance(KEYSTORE_INSTANCE_TYPE)
keyStore.load(keyStoreFile.inputStream(), keyStorePassword.toCharArray())
val cert = keyStore.getCertificate(certificateAlias)
val writer = StringWriter()
PemWriter(writer).use { pw ->
val gen: PemObjectGenerator = JcaMiscPEMGenerator(cert)
pw.writeObject(gen)
keyStoreFile.inputStream().use {
val keyStore = KeyStore.getInstance(KEYSTORE_INSTANCE_TYPE)
keyStore.load(it, keyStorePassword.toCharArray())
val cert = keyStore.getCertificate(certificateAlias)
StringWriter().use { sw ->
PemWriter(sw).use { pw ->
val gen: PemObjectGenerator = JcaMiscPEMGenerator(cert)
pw.writeObject(gen)
}
exportedCertFile.writeText(sw.toString())
}
}
exportedCertFile.writeText(writer.toString())
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,9 @@ class NetworkConfig(val configFilePath: String) {
init {
val mapper = ObjectMapper()
vNodes = try {
val fis = FileInputStream(configFilePath)
mapper.readValue(fis, object : TypeReference<List<VNode>>() {})
FileInputStream(configFilePath).use {
mapper.readValue(it, object : TypeReference<List<VNode>>() {})
}
} catch (e: Exception) {
throw CordaRuntimeGradlePluginException("Failed to read network configuration file, with exception: $e")
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,10 +51,11 @@ class CordappTasksImpl(var pc: ProjectContext) {
private fun validateGroupPolicy() {
val groupPolicyFile = File(pc.groupPolicyFilePath)
val groupPolicy = try {
val fis = FileInputStream(groupPolicyFile)
val mapper = ObjectMapper()
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false)
mapper.readValue(fis, GroupPolicyDTO::class.java)
FileInputStream(groupPolicyFile).use { fis ->
mapper.readValue(fis, GroupPolicyDTO::class.java)
}
} catch (e: Exception) {
throw CordaRuntimeGradlePluginException("Failed to read GroupPolicy from group policy file with exception: $e.", e)
}
Expand Down Expand Up @@ -93,19 +94,23 @@ class CordappTasksImpl(var pc: ProjectContext) {
password = pc.keystorePassword
)
pc.logger.quiet("Importing default gradle certificate")
KeyStoreHelper().importCertificateIntoKeyStore(
keyStoreFile = keystoreFile,
keyStorePassword = pc.keystorePassword,
certificateInputStream = File(pc.gradleDefaultCertFilePath).inputStream(),
certificateAlias = pc.gradleDefaultCertAlias
)
File(pc.gradleDefaultCertFilePath).inputStream().use {
KeyStoreHelper().importCertificateIntoKeyStore(
keyStoreFile = keystoreFile,
keyStorePassword = pc.keystorePassword,
certificateInputStream = it,
certificateAlias = pc.gradleDefaultCertAlias
)
}
pc.logger.quiet("Importing R3 signing certificate")
KeyStoreHelper().importCertificateIntoKeyStore(
keyStoreFile = keystoreFile,
keyStorePassword = pc.keystorePassword,
certificateInputStream = File(pc.r3RootCertFile).inputStream(),
certificateAlias = pc.r3RootCertKeyAlias
)
File(pc.r3RootCertFile).inputStream().use {
KeyStoreHelper().importCertificateIntoKeyStore(
keyStoreFile = keystoreFile,
keyStorePassword = pc.keystorePassword,
certificateInputStream = it,
certificateAlias = pc.r3RootCertKeyAlias
)
}

KeyStoreHelper().exportCertificateFromKeyStore(
keyStoreFile = keystoreFile,
Expand Down

0 comments on commit c73b7c3

Please sign in to comment.