jtulach@46: package org.apidesign.impl.security.extension; jtulach@46: jtulach@46: import java.nio.ByteBuffer; jtulach@46: import java.security.MessageDigest; jtulach@46: import java.security.NoSuchAlgorithmException; jtulach@46: import java.util.logging.Level; jtulach@46: import java.util.logging.Logger; jtulach@47: import org.apidesign.spi.security.Digestor; jtulach@46: jtulach@46: /** jtulach@46: * jtulach@46: * @author Jaroslav Tulach jtulach@46: */ jtulach@46: // BEGIN: day.end.bridges.BridgeToNew jtulach@47: public class BridgeToNew extends Digestor { jtulach@132: /** initializes the other bridge, and allow us to eliminate stack jtulach@132: * overflow */ jtulach@48: private static final BridgeToOld oldBridge = new BridgeToOld(); jtulach@48: jtulach@47: @Override jtulach@47: protected MessageDigest create(String algorithm) { jtulach@49: // BEGIN: day.end.bridges.cyclecheck jtulach@48: if (oldBridge.isSearching()) { jtulach@49: // if the call is initiated from the other bridge, do not do jtulach@49: // any delegation jtulach@48: return null; jtulach@48: } jtulach@49: // END: day.end.bridges.cyclecheck jtulach@48: jtulach@46: try { jtulach@47: return MessageDigest.getInstance(algorithm); jtulach@46: } catch (NoSuchAlgorithmException ex) { jtulach@132: Logger.getLogger(BridgeToNew.class.getName()).log( jtulach@132: Level.FINE, "Cannot find " + algorithm, ex jtulach@132: ); jtulach@46: return null; jtulach@46: } jtulach@46: } jtulach@47: jtulach@47: @Override jtulach@47: protected byte[] digest(MessageDigest data) { jtulach@47: return data.digest(); jtulach@47: } jtulach@47: jtulach@47: @Override jtulach@47: protected void update(MessageDigest data, ByteBuffer input) { jtulach@47: data.update(input); jtulach@47: } jtulach@48: jtulach@48: static { jtulach@48: new BridgeToOld(); jtulach@48: } jtulach@46: } jtulach@46: // END: day.end.bridges.BridgeToNew