samples/messagedigest/src-bridge/org/apidesign/impl/security/extension/BridgeToOld.java
2 * To change this template, choose Tools | Templates
3 * and open the template in the editor.
6 package org.apidesign.impl.security.extension;
8 import org.apidesign.api.security.Digest;
9 import java.nio.ByteBuffer;
10 import java.security.MessageDigest;
11 import java.security.NoSuchAlgorithmException;
12 import java.security.Provider;
13 import java.security.Security;
14 import java.util.Collections;
15 import java.util.List;
20 * @author Jaroslav Tulach <jaroslav.tulach@apidesign.org>
22 public class BridgeToOld extends Provider {
24 public BridgeToOld() {
25 super("spi.Digestor", 1.0, "");
26 Security.addProvider(this);
30 public synchronized Service getService(String type, String algorithm) {
31 if ("MessageDigest".equals(type)) {
32 Digest dig = Digest.getInstance(algorithm);
34 return new ServiceImpl(dig, this, type, algorithm, "", Collections.<String>emptyList(), Collections.<String,String>emptyMap());
40 private static class ServiceImpl<Data> extends Service {
43 public ServiceImpl(Digest dig, Provider provider, String type, String algorithm, String className, List<String> aliases, Map<String, String> attributes) {
44 super(provider, type, algorithm, className, aliases, attributes);
49 public Object newInstance(Object constructorParameter) throws NoSuchAlgorithmException {
50 return new MessageDigest(getAlgorithm()) {
54 protected void engineUpdate(byte input) {
55 ByteBuffer bb = ByteBuffer.wrap(new byte[] { input });
60 protected void engineUpdate(byte[] input, int offset, int len) {
61 ByteBuffer bb = ByteBuffer.wrap(input);
63 bb.limit(offset + len);
68 protected byte[] engineDigest() {
73 protected void engineReset() {
74 dig = Digest.getInstance(getAlgorithm());