Changeset 284802b


Ignore:
Timestamp:
May 4, 2014 2:09:02 PM (6 years ago)
Author:
zzz <zzz@…>
Branches:
master
Children:
97c1ba2d
Parents:
48b6e06
Message:

add caching of EdDSA keys

File:
1 edited

Legend:

Unmodified
Added
Removed
  • core/java/src/net/i2p/crypto/SigUtil.java

    r48b6e06 r284802b  
    5252public class SigUtil {
    5353
    54     private static final Map<SigningPublicKey, ECPublicKey> _pubkeyCache = new LHMCache<SigningPublicKey, ECPublicKey>(64);
    55     private static final Map<SigningPrivateKey, ECPrivateKey> _privkeyCache = new LHMCache<SigningPrivateKey, ECPrivateKey>(16);
     54    private static final Map<SigningPublicKey, ECPublicKey> _ECPubkeyCache = new LHMCache<SigningPublicKey, ECPublicKey>(64);
     55    private static final Map<SigningPrivateKey, ECPrivateKey> _ECPrivkeyCache = new LHMCache<SigningPrivateKey, ECPrivateKey>(16);
     56    private static final Map<SigningPublicKey, EdDSAPublicKey> _EdPubkeyCache = new LHMCache<SigningPublicKey, EdDSAPublicKey>(64);
     57    private static final Map<SigningPrivateKey, EdDSAPrivateKey> _EdPrivkeyCache = new LHMCache<SigningPrivateKey, EdDSAPrivateKey>(16);
    5658
    5759    private SigUtil() {}
     
    139141                              throws GeneralSecurityException {
    140142        ECPublicKey rv;
    141         synchronized (_pubkeyCache) {
    142             rv = _pubkeyCache.get(pk);
     143        synchronized (_ECPubkeyCache) {
     144            rv = _ECPubkeyCache.get(pk);
    143145        }
    144146        if (rv != null)
    145147            return rv;
    146148        rv = cvtToJavaECKey(pk);
    147         synchronized (_pubkeyCache) {
    148             _pubkeyCache.put(pk, rv);
     149        synchronized (_ECPubkeyCache) {
     150            _ECPubkeyCache.put(pk, rv);
    149151        }
    150152        return rv;
     
    157159                              throws GeneralSecurityException {
    158160        ECPrivateKey rv;
    159         synchronized (_privkeyCache) {
    160             rv = _privkeyCache.get(pk);
     161        synchronized (_ECPrivkeyCache) {
     162            rv = _ECPrivkeyCache.get(pk);
    161163        }
    162164        if (rv != null)
    163165            return rv;
    164166        rv = cvtToJavaECKey(pk);
    165         synchronized (_privkeyCache) {
    166             _privkeyCache.put(pk, rv);
     167        synchronized (_ECPrivkeyCache) {
     168            _ECPrivkeyCache.put(pk, rv);
    167169        }
    168170        return rv;
     
    214216    public static EdDSAPublicKey toJavaEdDSAKey(SigningPublicKey pk)
    215217                              throws GeneralSecurityException {
     218        EdDSAPublicKey rv;
     219        synchronized (_EdPubkeyCache) {
     220            rv = _EdPubkeyCache.get(pk);
     221        }
     222        if (rv != null)
     223            return rv;
     224        rv = cvtToJavaEdDSAKey(pk);
     225        synchronized (_EdPubkeyCache) {
     226            _EdPubkeyCache.put(pk, rv);
     227        }
     228        return rv;
     229    }
     230
     231    /**
     232     *  @return JAVA EdDSA private key!
     233     */
     234    public static EdDSAPrivateKey toJavaEdDSAKey(SigningPrivateKey pk)
     235                              throws GeneralSecurityException {
     236        EdDSAPrivateKey rv;
     237        synchronized (_EdPrivkeyCache) {
     238            rv = _EdPrivkeyCache.get(pk);
     239        }
     240        if (rv != null)
     241            return rv;
     242        rv = cvtToJavaEdDSAKey(pk);
     243        synchronized (_EdPrivkeyCache) {
     244            _EdPrivkeyCache.put(pk, rv);
     245        }
     246        return rv;
     247    }
     248
     249    private static EdDSAPublicKey cvtToJavaEdDSAKey(SigningPublicKey pk)
     250                              throws GeneralSecurityException {
    216251        return new EdDSAPublicKey(new EdDSAPublicKeySpec(
    217252                pk.getData(), (EdDSAParameterSpec) pk.getType().getParams()));
    218253    }
    219254
    220     /**
    221      *  @return JAVA EdDSA private key!
    222      */
    223     public static EdDSAPrivateKey toJavaEdDSAKey(SigningPrivateKey pk)
     255    private static EdDSAPrivateKey cvtToJavaEdDSAKey(SigningPrivateKey pk)
    224256                              throws GeneralSecurityException {
    225257        return new EdDSAPrivateKey(new EdDSAPrivateKeySpec(
     
    571603
    572604    public static void clearCaches() {
    573         synchronized(_pubkeyCache) {
    574             _pubkeyCache.clear();
    575         }
    576         synchronized(_privkeyCache) {
    577             _privkeyCache.clear();
     605        synchronized(_ECPubkeyCache) {
     606            _ECPubkeyCache.clear();
     607        }
     608        synchronized(_ECPrivkeyCache) {
     609            _ECPrivkeyCache.clear();
     610        }
     611        synchronized(_EdPubkeyCache) {
     612            _EdPubkeyCache.clear();
     613        }
     614        synchronized(_EdPrivkeyCache) {
     615            _EdPrivkeyCache.clear();
    578616        }
    579617    }
Note: See TracChangeset for help on using the changeset viewer.