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
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