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 = new DigestorAccessorImpl();
19 private final Digestor<Data> digestor;
20 private final String algorithm;
23 private DigestImpl(Digestor<Data> digestor, String algorithm, Data d) {
24 this.digestor = digestor;
25 this.algorithm = algorithm;
29 static <Data> DigestImpl create(Digestor<Data> digestor, String algorithm) {
30 // indirectly calls digestor.create(algorithm)
31 Data d = ACCESSOR.create(digestor, algorithm);
35 return new DigestImpl(digestor, algorithm, d);
39 byte[] digest(ByteBuffer bb) {
40 // indirectly calls digestor.update(data, bb)
41 ACCESSOR.update(digestor, data, bb);
42 // indirectly calls digestor.digest(data)
43 return ACCESSOR.digest(digestor, data);
46 // END: day.end.bridges.DigestImpl