Skip to content

Commit

Permalink
fix: the md5-only profile now also needs to configure the payload digest
Browse files Browse the repository at this point in the history
  • Loading branch information
ctron committed Aug 19, 2022
1 parent 2d1ae0c commit 389a4a6
Show file tree
Hide file tree
Showing 4 changed files with 42 additions and 16 deletions.
37 changes: 25 additions & 12 deletions src/main/java/de/dentrassi/rpm/builder/RpmMojo.java
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,7 @@
import org.eclipse.packager.rpm.RpmTag;
import org.eclipse.packager.rpm.RpmVersion;
import org.eclipse.packager.rpm.build.BuilderContext;
import org.eclipse.packager.rpm.build.BuilderOptions;
import org.eclipse.packager.rpm.build.RpmBuilder;
import org.eclipse.packager.rpm.build.RpmBuilder.PackageInformation;
import org.eclipse.packager.rpm.build.RpmBuilder.Version;
Expand Down Expand Up @@ -765,7 +766,25 @@ public void execute() throws MojoExecutionException, MojoFailureException {

testLeadFlags();

try (final RpmBuilder builder = new RpmBuilder(packageName, version, this.architecture, targetFile)) {
final BuilderOptions options = new BuilderOptions();

// setup basic signature processors

final SignatureConfiguration provider;
if (this.signatureConfiguration != null) {
this.logger.info("Initialize with custom signature configuration: %s (%s)", this.signatureConfiguration, this.signatureConfiguration.getClass());
provider = this.signatureConfigurationProviders.get(this.signatureConfiguration);
if (provider == null) {
throw new MojoExecutionException(String.format("Unable to find requested signature configuration provider '%s', have: %s", this.signatureConfiguration, this.signatureConfigurationProviders.keySet()));
}
provider.applyOptions(options);
} else {
provider = null;
}

// start writing the RPM

try (final RpmBuilder builder = new RpmBuilder(packageName, version, this.architecture, targetFile, options)) {
this.logger.info("Writing target file: %s", builder.getTargetFile());

if (this.leadOverrideArchitecture != null) {
Expand All @@ -783,22 +802,16 @@ public void execute() throws MojoExecutionException, MojoFailureException {
fillPayload(builder);
customizeHeader(builder);

// setup basic signature processors

if (this.signatureConfiguration != null) {
this.logger.info("Initialize with custom signature configuration: %s (%s)", this.signatureConfiguration, this.signatureConfiguration.getClass());
final SignatureConfiguration provider = this.signatureConfigurationProviders.get(this.signatureConfiguration);
if (provider == null) {
throw new MojoExecutionException(String.format("Unable to find requested signature configuration provider '%s', have: %s", this.signatureConfiguration, this.signatureConfigurationProviders.keySet()));
}
provider.apply(builder);
// apply signature configuration, if we have one
if (provider != null) {
provider.applyBuilder(builder);
}

if (!this.skipSigning && this.signature != null) {
final SignatureProcessor[] signers = makeRsaSigners(this.signature);
if (signers != null) {
for (SignatureProcessor signer : signers ) {
builder.addSignatureProcessor(signer);
for (SignatureProcessor signer : signers) {
builder.addSignatureProcessor(signer);
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,13 +11,18 @@
package de.dentrassi.rpm.builder.signatures;

import org.codehaus.plexus.component.annotations.Component;
import org.eclipse.packager.rpm.build.BuilderOptions;
import org.eclipse.packager.rpm.build.RpmBuilder;

@Component(role = SignatureConfiguration.class, hint = "default")
public class DefaultSignatureConfiguration implements SignatureConfiguration {

@Override
public void apply(final RpmBuilder builder) {
public void applyOptions(final BuilderOptions options) {
}

@Override
public void applyBuilder(final RpmBuilder builder) {
builder.removeAllSignatureProcessors();
builder.addDefaultSignatureProcessors();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,14 +11,20 @@
package de.dentrassi.rpm.builder.signatures;

import org.codehaus.plexus.component.annotations.Component;
import org.eclipse.packager.rpm.build.BuilderOptions;
import org.eclipse.packager.rpm.build.RpmBuilder;
import org.eclipse.packager.rpm.signature.SignatureProcessors;

@Component(role = SignatureConfiguration.class, hint = "md5-only")
public class Md5OnlySignatureConfiguration implements SignatureConfiguration {

@Override
public void apply(final RpmBuilder builder) {
public void applyOptions(final BuilderOptions options) {
options.clearPayloadProcessors();
}

@Override
public void applyBuilder(final RpmBuilder builder) {
builder.removeAllSignatureProcessors();
builder.addSignatureProcessor(SignatureProcessors.size());
builder.addSignatureProcessor(SignatureProcessors.md5());
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*******************************************************************************
* Copyright (c) 2019 Red Hat Inc and others.
* Copyright (c) 2019, 2022 Red Hat Inc and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
Expand All @@ -10,8 +10,10 @@
*******************************************************************************/
package de.dentrassi.rpm.builder.signatures;

import org.eclipse.packager.rpm.build.BuilderOptions;
import org.eclipse.packager.rpm.build.RpmBuilder;

public interface SignatureConfiguration {
void apply(RpmBuilder builder);
void applyOptions(BuilderOptions options);
void applyBuilder(RpmBuilder builder);
}

0 comments on commit 389a4a6

Please sign in to comment.