Changeset 0e8e368 for core


Ignore:
Timestamp:
Mar 31, 2019 12:23:19 PM (14 months ago)
Author:
zzz <zzz@…>
Branches:
master
Children:
567bccb
Parents:
d3170de
Message:

Data: Implement Destroyable for private keys (ticket #2462)

Location:
core/java/src/net/i2p/data
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • core/java/src/net/i2p/data/PrivateKey.java

    rd3170de r0e8e368  
    1111
    1212import java.util.Arrays;
     13import javax.security.auth.Destroyable;
    1314
    1415import net.i2p.crypto.EncType;
    1516import net.i2p.crypto.KeyGenerator;
     17import net.i2p.util.SimpleByteCache;
    1618
    1719/**
     
    2527 * @author jrandom
    2628 */
    27 public class PrivateKey extends SimpleDataStructure {
     29public class PrivateKey extends SimpleDataStructure implements Destroyable {
    2830    private static final EncType DEF_TYPE = EncType.ELGAMAL_2048;
    2931    public final static int KEYSIZE_BYTES = DEF_TYPE.getPrivkeyLen();
     
    9193
    9294    /**
     95     *  javax.security.auth.Destroyable interface
     96     *
     97     *  @since 0.9.40
     98     */
     99    public void destroy() {
     100        byte[] data = _data;
     101        if (data != null) {
     102            _data = null;
     103            Arrays.fill(data, (byte) 0);
     104            SimpleByteCache.release(data);
     105        }
     106    }
     107
     108    /**
     109     *  javax.security.auth.Destroyable interface
     110     *
     111     *  @since 0.9.40
     112     */
     113    public boolean isDestroyed() {
     114        return _data == null;
     115    }
     116
     117    /**
    93118     *  @since 0.9.38
    94119     */
     
    96121    public String toString() {
    97122        StringBuilder buf = new StringBuilder(64);
    98         buf.append("[PrivateKey ").append(_type).append(": ");
     123        buf.append("[PrivateKey ").append(_type).append(' ');
    99124        int length = length();
    100125        if (_data == null) {
  • core/java/src/net/i2p/data/SigningPrivateKey.java

    rd3170de r0e8e368  
    1111
    1212import java.util.Arrays;
     13import javax.security.auth.Destroyable;
    1314
    1415import net.i2p.crypto.Blinding;
    1516import net.i2p.crypto.KeyGenerator;
    1617import net.i2p.crypto.SigType;
     18import net.i2p.util.SimpleByteCache;
    1719
    1820/**
     
    2729 * @author jrandom
    2830 */
    29 public class SigningPrivateKey extends SimpleDataStructure {
     31public class SigningPrivateKey extends SimpleDataStructure implements Destroyable {
    3032    private static final SigType DEF_TYPE = SigType.DSA_SHA1;
    3133    public final static int KEYSIZE_BYTES = DEF_TYPE.getPrivkeyLen();
     
    117119
    118120    /**
     121     *  javax.security.auth.Destroyable interface
     122     *
     123     *  @since 0.9.40
     124     */
     125    public void destroy() {
     126        byte[] data = _data;
     127        if (data != null) {
     128            _data = null;
     129            Arrays.fill(data, (byte) 0);
     130            SimpleByteCache.release(data);
     131        }
     132    }
     133
     134    /**
     135     *  javax.security.auth.Destroyable interface
     136     *
     137     *  @since 0.9.40
     138     */
     139    public boolean isDestroyed() {
     140        return _data == null;
     141    }
     142
     143    /**
    119144     *  @since 0.9.8
    120145     */
     
    122147    public String toString() {
    123148        StringBuilder buf = new StringBuilder(64);
    124         buf.append("[SigningPrivateKey ").append(_type).append(": ");
     149        buf.append("[SigningPrivateKey ").append(_type).append(' ');
    125150        int length = length();
    126151        if (_data == null) {
Note: See TracChangeset for help on using the changeset viewer.