samples/messagedigest/src-new-api/org/apidesign/api/security/DigestImplementation.java
Simplified to does not contain the friend API, instead the SPI is directly define by the API
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 final class DigestImplementation<Data> {
16 private static final DigestorAccessorImpl ACCESSOR = new DigestorAccessorImpl();
18 private final Digestor<Data> digestor;
19 private final String algorithm;
22 private DigestImplementation(Digestor<Data> digestor, String algorithm, Data d) {
23 this.digestor = digestor;
24 this.algorithm = algorithm;
28 static <Data> DigestImplementation create(Digestor<Data> digestor, String algorithm) {
29 Data d = ACCESSOR.create(digestor, algorithm);
33 return new DigestImplementation(digestor, algorithm, d);
37 byte[] digest(ByteBuffer bb) {
38 ACCESSOR.update(digestor, data, bb);
39 return ACCESSOR.digest(digestor, data);