Revision 37857 branches/v2_0_0_prep/extensions/org.gvsig.installer/org.gvsig.installer.lib/org.gvsig.installer.lib.impl/src/main/java/org/gvsig/installer/lib/impl/DefaultPackageInfo.java

View differences:

DefaultPackageInfo.java
35 35
import java.util.List;
36 36

  
37 37
import org.gvsig.installer.lib.api.Dependencies;
38
import org.gvsig.installer.lib.api.PackageInfo;
39
import org.gvsig.installer.lib.api.Version;
38
import org.gvsig.installer.lib.api.InstallerLocator;
40 39
import org.gvsig.installer.lib.api.InstallerManager.ARCH;
41 40
import org.gvsig.installer.lib.api.InstallerManager.JVM;
42 41
import org.gvsig.installer.lib.api.InstallerManager.OS;
43 42
import org.gvsig.installer.lib.api.InstallerManager.STATE;
43
import org.gvsig.installer.lib.api.PackageInfo;
44
import org.gvsig.installer.lib.api.Version;
44 45
import org.gvsig.installer.lib.api.execution.InstallPackageServiceException;
45 46
import org.gvsig.installer.lib.impl.info.InstallerInfoTags;
46 47
import org.gvsig.installer.lib.impl.utils.DeleteFile;
47 48
import org.gvsig.installer.lib.impl.utils.Download;
49
import org.gvsig.installer.lib.impl.utils.SignUtil;
48 50
import org.gvsig.tools.task.SimpleTaskStatus;
49 51

  
50 52
/**
......
61 63
	private String antScript = null;
62 64
	private String type = "unknow";
63 65
	private Boolean signed = false;
66
	private Boolean broken = false;
64 67

  
65 68
	private String state = STATE.DEVEL;
66 69
	private String operatingSystem = OS.ALL;
......
537 540
	}
538 541

  
539 542
	public void checkSignature(byte[] pkgdata) {
540
		// TODO Auto-generated method stub
541

  
543
		this.signed = false;
544
		SignUtil signutil = null;
545
		List<byte[]> keys = InstallerLocator.getInstallerManager()
546
				.getPublicKeys();
547
		if( keys.size()<1 ) {
548
			// No hay claves publicas, asi que no comprobamos ninguna firma
549
			// y decirmos a todos que no estan firmados.
550
			this.signed = false;
551
			return;
552
		}
553
		for (byte[] rawkey : keys) {
554
			signutil = new SignUtil(rawkey);
555
			if (signutil.canVerify()) {
556
				int status = signutil.verify(pkgdata);
557
				switch (status) {
558
				case SignUtil.SIGN_OK:
559
					// El paquete tiene una firma correcta,lo marcamos
560
					// como firmado y salimos.
561
					this.signed = true;
562
					return;
563
				case SignUtil.NOT_SIGNED:
564
					// El paquete no va firmado, lo marcamos como no
565
					// firmado y salimos.
566
					this.signed = false;
567
					return;
568
				case SignUtil.SIGN_FAIL:
569
				default:
570
					// La firma del paquete no es correcta para esta clave,
571
					// lo intentamos con el resto de claves.
572
					break;
573
				}
574
			}
575
		}
576
		// Si habiendo claves publicas la comprobacion de la firma con todas ellas
577
		// falla marcamos el paquete como roto.
578
		this.broken = true;
542 579
	}
543 580

  
544 581
	public boolean isBroken() {
545
		// TODO
546

  
547
		// if (this.isOfficial() && !this.isSigned()) {
548
		// return true;
549
		// } else {
550
		// return false;
551
		// }
552
		// else
582
		if( this.broken ) {
583
			return true;
584
		}
585
		if( this.isOfficial() && !this.isSigned() ) {
586
			return true;
587
		}
553 588
		return false;
554 589
	}
555 590

  
556 591
	public boolean isSigned() {
557
		// return this.signed;
558
		return true;
592
		return signed;
559 593
	}
560 594

  
561 595
}

Also available in: Unified diff