2 * To change this template, choose Tools | Templates
3 * and open the template in the editor.
6 package org.apidesign.api.security;
8 import java.nio.ByteBuffer;
9 import org.apidesign.spi.security.Digestor;
13 * @author Jaroslav Tulach <jaroslav.tulach@apidesign.org>
15 // BEGIN: day.end.bridges.DigestImpl
16 final class DigestImpl<Data> {
17 private static final DigestorAccessorImpl ACCESSOR;
19 ACCESSOR = new DigestorAccessorImpl();
22 private final Digestor<Data> digestor;
23 private final String algorithm;
26 private DigestImpl(Digestor<Data> digestor, String algorithm, Data d) {
27 this.digestor = digestor;
28 this.algorithm = algorithm;
32 static <Data> DigestImpl create(
33 Digestor<Data> digestor, String algorithm
35 // indirectly calls digestor.create(algorithm)
36 Data d = ACCESSOR.create(digestor, algorithm);
40 return new DigestImpl(digestor, algorithm, d);
44 byte[] digest(ByteBuffer bb) {
45 // indirectly calls digestor.update(data, bb)
46 ACCESSOR.update(digestor, data, bb);
47 // indirectly calls digestor.digest(data)
48 return ACCESSOR.digest(digestor, data);
51 // END: day.end.bridges.DigestImpl