jtulach@47: /* jtulach@47: * To change this template, choose Tools | Templates jtulach@47: * and open the template in the editor. jtulach@47: */ jtulach@47: jtulach@47: package org.apidesign.api.security; jtulach@47: jtulach@47: import java.nio.ByteBuffer; jtulach@47: import org.apidesign.spi.security.Digestor; jtulach@47: jtulach@47: /** jtulach@47: * jtulach@47: * @author Jaroslav Tulach jtulach@47: */ jtulach@301: // BEGIN: day.end.bridges.DigestImpl jtulach@301: final class DigestImpl { jtulach@376: private static final DigestorAccessorImpl ACCESSOR; jtulach@376: static { jtulach@376: ACCESSOR = new DigestorAccessorImpl(); jtulach@376: } jtulach@47: jtulach@47: private final Digestor digestor; jtulach@47: private final String algorithm; jtulach@47: private Data data; jtulach@47: jtulach@301: private DigestImpl(Digestor digestor, String algorithm, Data d) { jtulach@47: this.digestor = digestor; jtulach@47: this.algorithm = algorithm; jtulach@47: this.data = d; jtulach@47: } jtulach@47: jtulach@302: static DigestImpl create( jtulach@302: Digestor digestor, String algorithm jtulach@302: ) { jtulach@301: // indirectly calls digestor.create(algorithm) jtulach@47: Data d = ACCESSOR.create(digestor, algorithm); jtulach@47: if (d == null) { jtulach@47: return null; jtulach@47: } else { jtulach@301: return new DigestImpl(digestor, algorithm, d); jtulach@47: } jtulach@47: } jtulach@47: jtulach@47: byte[] digest(ByteBuffer bb) { jtulach@301: // indirectly calls digestor.update(data, bb) jtulach@47: ACCESSOR.update(digestor, data, bb); jtulach@301: // indirectly calls digestor.digest(data) jtulach@47: return ACCESSOR.digest(digestor, data); jtulach@47: } jtulach@47: } jtulach@301: // END: day.end.bridges.DigestImpl