Changeset 79fe799


Ignore:
Timestamp:
Aug 7, 2014 6:45:04 PM (6 years ago)
Author:
zzz <zzz@…>
Branches:
master
Children:
35bb8c5
Parents:
2878a648
Message:

Plugins: Stub out SU3 support

Files:
2 edited

Legend:

Unmodified
Added
Removed
  • apps/routerconsole/java/src/net/i2p/router/update/PluginUpdateRunner.java

    r2878a648 r79fe799  
    22
    33import java.io.File;
     4import java.io.FileInputStream;
    45import java.io.IOException;
    56import java.lang.IllegalArgumentException;
     
    1011
    1112import net.i2p.CoreVersion;
     13import net.i2p.crypto.SU3File;
    1214import net.i2p.crypto.TrustedUpdate;
    1315import net.i2p.data.DataHelper;
     
    119121        @Override
    120122        public void transferComplete(long alreadyTransferred, long bytesTransferred, long bytesRemaining, String url, String outputFile, boolean notModified) {
    121             boolean update = false;
    122123            updateStatus("<b>" + _("Plugin downloaded") + "</b>");
    123124            File f = new File(_updateFile);
     
    128129                return;
    129130            }
    130 
     131            boolean isSU3;
     132            try {
     133                isSU3 = isSU3File(f);
     134            } catch (IOException ioe) {
     135                f.delete();
     136                statusDone("<b>" + ioe + "</b>");
     137                return;
     138            }
     139            if (isSU3)
     140                processSU3(f, appDir, url);
     141            else
     142                processSUD(f, appDir, url);
     143        }
     144
     145        /**
     146         *  @since 0.9.15
     147         *  @return if SU3
     148         */
     149        private static boolean isSU3File(File f) throws IOException {
     150            FileInputStream fis = null;
     151            try {
     152                fis = new FileInputStream(f);
     153                for (int i = 0; i < SU3File.MAGIC.length(); i++) {
     154                    if (fis.read() != SU3File.MAGIC.charAt(i))
     155                        return false;
     156                }
     157                return true;
     158            } finally {
     159                if (fis != null) try { fis.close(); } catch (IOException ioe) {}
     160            }
     161        }
     162
     163        /**
     164         *  @since 0.9.15
     165         *  @return success
     166         */
     167        private void processSUD(File f, File appDir, String url) {
    131168            TrustedUpdate up = new TrustedUpdate(_context);
    132169            File to = new File(_context.getTempDir(), "tmp" + _context.random().nextInt() + ZIP);
     
    223260            String sudVersion = TrustedUpdate.getVersionString(f);
    224261            f.delete();
    225 
     262            processFinal(to, appDir, tempDir, url, props, sudVersion, pubkey, signer);
     263        }
     264
     265        /**
     266         *  @since 0.9.15
     267         */
     268        private void processSU3(File f, File appDir, String url) {
     269            // TODO
     270        }
     271
     272        /**
     273         *  @since 0.9.15
     274         */
     275        private void processFinal(File to, File appDir, File tempDir, String url, Properties props, String sudVersion, String pubkey, String signer) {
     276            boolean update = false;
    226277            String appName = props.getProperty("name");
    227278            String version = props.getProperty("version");
  • core/java/src/net/i2p/crypto/SU3File.java

    r2878a648 r79fe799  
    5757    private SigType _sigType;
    5858
    59     private static final byte[] MAGIC = DataHelper.getUTF8("I2Psu3");
     59    public static final String MAGIC = "I2Psu3";
     60    private static final byte[] MAGIC_BYTES = DataHelper.getASCII(MAGIC);
    6061    private static final int FILE_VERSION = 0;
    6162    private static final int MIN_VERSION_BYTES = 16;
     
    190191     */
    191192    private void verifyHeader(InputStream in) throws IOException, DataFormatException {
    192         byte[] magic = new byte[MAGIC.length];
     193        byte[] magic = new byte[MAGIC_BYTES.length];
    193194        DataHelper.read(in, magic);
    194         if (!DataHelper.eq(magic, MAGIC))
     195        if (!DataHelper.eq(magic, MAGIC_BYTES))
    195196            throw new IOException("Not an su3 file");
    196197        skip(in, 1);
     
    301302            in.mark(10);
    302303            // following is a dup of that in verifyHeader()
    303             byte[] magic = new byte[MAGIC.length];
     304            byte[] magic = new byte[MAGIC_BYTES.length];
    304305            DataHelper.read(in, magic);
    305             if (!DataHelper.eq(magic, MAGIC))
     306            if (!DataHelper.eq(magic, MAGIC_BYTES))
    306307                throw new IOException("Not an su3 file");
    307308            skip(in, 1);
     
    380381            MessageDigest md = sigType.getDigestInstance();
    381382            out = new DigestOutputStream(new BufferedOutputStream(new FileOutputStream(_file)), md);
    382             out.write(MAGIC);
     383            out.write(MAGIC_BYTES);
    383384            out.write((byte) 0);
    384385            out.write((byte) FILE_VERSION);
Note: See TracChangeset for help on using the changeset viewer.