package freenet.store; import freenet.crypt.DSAPublicKey; public interface GetPubkey { /** * Get a public key by hash. * @param hash The hash of the public key. Normally from an SSK. * @param canReadClientCache If this is a local request, we can read the client-cache. * @param canWriteDatastore If this is a request with high HTL, we can't promote it. * @return A public key, or null. */ public abstract DSAPublicKey getKey(byte[] hash, boolean canReadClientCache, boolean forULPR, BlockMetadata meta); /** * Cache a public key. * @param hash The hash of the public key. * @param key The key to store. * @param deep If true, we can store to the datastore rather than the cache. * @param canWriteClientCache If true, we can write to the client-cache. Only set if the * request originated locally, and the client-cache option hasn't been turned off. * @param canWriteDatastore If false, we cannot *write to* the store or the cache. This * happens for high initial HTL on both local requests and requests started relatively * nearby. * @param forULPR */ public abstract void cacheKey(byte[] hash, DSAPublicKey key, boolean deep, boolean canWriteClientCache, boolean canWriteDatastore, boolean forULPR, boolean writeLocalToDatastore); }