diff options
author | Mickael Istria | 2021-12-17 14:35:06 +0000 |
---|---|---|
committer | Mickael Istria | 2021-12-20 18:25:21 +0000 |
commit | 9973476a28c6b1717e0102ef836e04d512388dbf (patch) | |
tree | 0ddca21818c1e1bc52779526f1823948849af570 | |
parent | 8120cb3dc5c685a56163fa432448dae3dc140fe6 (diff) | |
download | rt.equinox.p2-9973476a28c6b1717e0102ef836e04d512388dbf.tar.gz rt.equinox.p2-9973476a28c6b1717e0102ef836e04d512388dbf.tar.xz rt.equinox.p2-9973476a28c6b1717e0102ef836e04d512388dbf.zip |
Bug 577863 - Allow director app to install PGP-signed artifactY20220107-0600Y20220106-0600Y20220105-0600Y20220104-0600Y20220103-0600Y20220102-0600Y20220101-0600Y20211231-0600Y20211230-0600Y20211229-0600Y20211228-0600Y20211227-0600Y20211224-0600Y20211223-0600Y20211222-1030Y20211222-0840Y20211222-0830Y20211222-0600Y20211221-0600S4_23_0_M1I20220107-1800I20220106-0000I20220105-1800I20220105-0600I20220104-1800I20220104-0940I20220104-0600I20220103-1800I20220103-0600I20220102-1800I20220102-0600I20220101-1800I20220101-1140I20220101-0600I20211231-1800I20211230-1800I20211229-1800I20211228-1800I20211227-1800I20211226-1800I20211225-1800I20211224-1800I20211223-1800I20211222-1800I20211221-1800I20211221-0620I20211220-1820
Override prompt action for PGP keys as well.
Change-Id: Iad5ec56724fc8eff6c64a2952ad79d5202306f53
Reviewed-on: https://git.eclipse.org/r/c/equinox/rt.equinox.p2/+/188954
Tested-by: Equinox Bot <equinox-bot@eclipse.org>
Reviewed-by: Mickael Istria <mistria@redhat.com>
6 files changed, 44 insertions, 7 deletions
diff --git a/bundles/org.eclipse.equinox.p2.core/META-INF/MANIFEST.MF b/bundles/org.eclipse.equinox.p2.core/META-INF/MANIFEST.MF index fdd4ec76f..4f7488195 100644 --- a/bundles/org.eclipse.equinox.p2.core/META-INF/MANIFEST.MF +++ b/bundles/org.eclipse.equinox.p2.core/META-INF/MANIFEST.MF @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: %pluginName Bundle-SymbolicName: org.eclipse.equinox.p2.core;singleton:=true -Bundle-Version: 2.8.100.qualifier +Bundle-Version: 2.8.200.qualifier Bundle-ClassPath: . Bundle-Activator: org.eclipse.equinox.internal.p2.core.Activator Bundle-Vendor: %providerName @@ -64,7 +64,7 @@ Export-Package: org.eclipse.equinox.internal.p2.core;x-friends:="org.eclipse.equ org.eclipse.equinox.p2.updatesite, org.eclipse.equinox.p2.director.app, org.eclipse.equinox.p2.transport.ecf", - org.eclipse.equinox.p2.core;version="2.7.0", + org.eclipse.equinox.p2.core;version="2.8.0", org.eclipse.equinox.p2.core.spi;version="2.1.0" Require-Bundle: org.eclipse.equinox.common;bundle-version="[3.5.0,4.0.0)" Bundle-RequiredExecutionEnvironment: JavaSE-11 diff --git a/bundles/org.eclipse.equinox.p2.core/pom.xml b/bundles/org.eclipse.equinox.p2.core/pom.xml index 4126209ae..f41904dca 100644 --- a/bundles/org.eclipse.equinox.p2.core/pom.xml +++ b/bundles/org.eclipse.equinox.p2.core/pom.xml @@ -9,6 +9,6 @@ </parent> <groupId>org.eclipse.equinox</groupId> <artifactId>org.eclipse.equinox.p2.core</artifactId> - <version>2.8.100-SNAPSHOT</version> + <version>2.8.200-SNAPSHOT</version> <packaging>eclipse-plugin</packaging> </project> diff --git a/bundles/org.eclipse.equinox.p2.director.app/META-INF/MANIFEST.MF b/bundles/org.eclipse.equinox.p2.director.app/META-INF/MANIFEST.MF index 04b4a7068..7cbc86f19 100644 --- a/bundles/org.eclipse.equinox.p2.director.app/META-INF/MANIFEST.MF +++ b/bundles/org.eclipse.equinox.p2.director.app/META-INF/MANIFEST.MF @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: %pluginName Bundle-SymbolicName: org.eclipse.equinox.p2.director.app;singleton:=true -Bundle-Version: 1.2.0.qualifier +Bundle-Version: 1.2.100.qualifier Bundle-Activator: org.eclipse.equinox.internal.p2.director.app.Activator Bundle-Vendor: %providerName Bundle-Localization: plugin @@ -10,14 +10,15 @@ Export-Package: org.eclipse.equinox.internal.p2.director.app;x-internal:=true Require-Bundle: org.eclipse.equinox.common;bundle-version="[3.5.0,4.0.0)" Bundle-RequiredExecutionEnvironment: JavaSE-11 Bundle-ActivationPolicy: lazy -Import-Package: org.eclipse.equinox.app, +Import-Package: org.bouncycastle.openpgp, + org.eclipse.equinox.app, org.eclipse.equinox.internal.p2.core.helpers, org.eclipse.equinox.internal.p2.director, org.eclipse.equinox.internal.p2.engine, org.eclipse.equinox.internal.provisional.p2.core.eventbus, org.eclipse.equinox.internal.provisional.p2.director, org.eclipse.equinox.internal.provisional.p2.repository, - org.eclipse.equinox.p2.core;version="[2.0.0,3.0.0)", + org.eclipse.equinox.p2.core;version="[2.8.0,3.0.0)", org.eclipse.equinox.p2.core.spi;version="[2.1.0,3.0.0)", org.eclipse.equinox.p2.engine;version="[2.0.0,3.0.0)", org.eclipse.equinox.p2.engine.query;version="[2.0.0,3.0.0)", diff --git a/bundles/org.eclipse.equinox.p2.director.app/pom.xml b/bundles/org.eclipse.equinox.p2.director.app/pom.xml index 0ee657185..2934027d5 100644 --- a/bundles/org.eclipse.equinox.p2.director.app/pom.xml +++ b/bundles/org.eclipse.equinox.p2.director.app/pom.xml @@ -9,6 +9,6 @@ </parent> <groupId>org.eclipse.equinox</groupId> <artifactId>org.eclipse.equinox.p2.director.app</artifactId> - <version>1.2.0-SNAPSHOT</version> + <version>1.2.100-SNAPSHOT</version> <packaging>eclipse-plugin</packaging> </project> diff --git a/bundles/org.eclipse.equinox.p2.director.app/src/org/eclipse/equinox/internal/p2/director/app/DirectorApplication.java b/bundles/org.eclipse.equinox.p2.director.app/src/org/eclipse/equinox/internal/p2/director/app/DirectorApplication.java index d163af047..4710d4cc1 100644 --- a/bundles/org.eclipse.equinox.p2.director.app/src/org/eclipse/equinox/internal/p2/director/app/DirectorApplication.java +++ b/bundles/org.eclipse.equinox.p2.director.app/src/org/eclipse/equinox/internal/p2/director/app/DirectorApplication.java @@ -32,6 +32,7 @@ import java.util.*; import java.util.Map.Entry; import java.util.stream.Collectors; import java.util.stream.IntStream; +import org.bouncycastle.openpgp.PGPPublicKey; import org.eclipse.core.runtime.*; import org.eclipse.equinox.app.IApplication; import org.eclipse.equinox.app.IApplicationContext; @@ -85,6 +86,21 @@ public class DirectorApplication implements IApplication, ProvisioningListener { } return new TrustInfo(trusted, false, true); } + + @Override + public TrustInfo getTrustInfo(Certificate[][] untrustedChains, Collection<PGPPublicKey> untrustedPGPKeys, + String[] unsignedDetail) { + final Collection<Certificate> trusted; + if (untrustedChains == null) { + trusted = List.of(); + } else { + trusted = new ArrayList<>(untrustedChains.length); + for (Certificate[] untrustedChain : untrustedChains) { + trusted.add(untrustedChain[0]); + } + } + return new TrustInfo(trusted, untrustedPGPKeys, false, true); + } } class LocationQueryable implements IQueryable<IInstallableUnit> { diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/director/DirectorApplicationTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/director/DirectorApplicationTest.java index 973a234ff..9ac6d4b8a 100644 --- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/director/DirectorApplicationTest.java +++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/director/DirectorApplicationTest.java @@ -838,4 +838,24 @@ public class DirectorApplicationTest extends AbstractProvisioningTest { return avoidTrustPromptService.getTrustInfo(untrustedChain, null); } + public void testPGPSignedArtifact() throws Exception { + File srcRepo = getTestData(null, "/testData/pgp/repoPGPOK"); + + IArtifactRepositoryManager artifactManager = getAgent().getService(IArtifactRepositoryManager.class); + IMetadataRepositoryManager metadataManager = getAgent().getService(IMetadataRepositoryManager.class); + assertNotNull(artifactManager); + assertNotNull(metadataManager); + + File destinationRepo = new File(getTempFolder(), "DirectorApp Destination"); + String[] args = getSingleRepoArgs(null, srcRepo, srcRepo, destinationRepo, "blah"); + + destinationRepo.mkdirs(); + + StringBuffer buffer = runDirectorApp(null, args); + assertFalse(buffer.toString(), buffer.toString().contains("failed")); + + artifactManager.removeRepository(srcRepo.toURI()); + metadataManager.removeRepository(srcRepo.toURI()); + delete(destinationRepo); + } } |