EMMA Coverage Report (generated Wed Oct 26 13:47:17 EDT 2011)
[all classes][org.jclouds.encryption.internal]

COVERAGE SUMMARY FOR SOURCE FILE [JCECrypto.java]

nameclass, %method, %block, %line, %
JCECrypto.java100% (1/1)69%  (9/13)51%  (77/150)49%  (16.8/34)

COVERAGE BREAKDOWN BY CLASS AND METHOD

nameclass, %method, %block, %line, %
     
class JCECrypto100% (1/1)69%  (9/13)51%  (77/150)49%  (16.8/34)
certFactory (): CertificateFactory 0%   (0/1)0%   (0/3)0%   (0/1)
hmacSHA256 (byte []): Mac 0%   (0/1)0%   (0/12)0%   (0/3)
rsaKeyFactory (): KeyFactory 0%   (0/1)0%   (0/3)0%   (0/1)
rsaKeyPairGenerator (): KeyPairGenerator 0%   (0/1)0%   (0/3)0%   (0/1)
md5 (): MessageDigest 100% (1/1)36%  (4/11)33%  (1/3)
sha1 (): MessageDigest 100% (1/1)36%  (4/11)33%  (1/3)
sha256 (): MessageDigest 100% (1/1)36%  (4/11)33%  (1/3)
sha512 (): MessageDigest 100% (1/1)36%  (4/11)33%  (1/3)
hmacSHA1 (byte []): Mac 100% (1/1)42%  (5/12)33%  (1/3)
digest (String): MessageDigest 100% (1/1)64%  (7/11)63%  (0.6/1)
JCECrypto (Provider): void 100% (1/1)75%  (27/36)90%  (5.4/6)
hmac (String, byte []): Mac 100% (1/1)82%  (18/22)95%  (3.8/4)
JCECrypto (): void 100% (1/1)100% (4/4)100% (2/2)

1/**
2 * Licensed to jclouds, Inc. (jclouds) under one or more
3 * contributor license agreements.  See the NOTICE file
4 * distributed with this work for additional information
5 * regarding copyright ownership.  jclouds licenses this file
6 * to you under the Apache License, Version 2.0 (the
7 * "License"); you may not use this file except in compliance
8 * with the License.  You may obtain a copy of the License at
9 *
10 *   http://www.apache.org/licenses/LICENSE-2.0
11 *
12 * Unless required by applicable law or agreed to in writing,
13 * software distributed under the License is distributed on an
14 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15 * KIND, either express or implied.  See the License for the
16 * specific language governing permissions and limitations
17 * under the License.
18 */
19package org.jclouds.encryption.internal;
20 
21import java.security.InvalidKeyException;
22import java.security.KeyFactory;
23import java.security.KeyPairGenerator;
24import java.security.MessageDigest;
25import java.security.NoSuchAlgorithmException;
26import java.security.Provider;
27import java.security.cert.CertificateException;
28import java.security.cert.CertificateFactory;
29 
30import org.jclouds.javax.annotation.Nullable;
31import javax.crypto.Mac;
32import javax.crypto.spec.SecretKeySpec;
33import javax.inject.Inject;
34import javax.inject.Singleton;
35 
36import org.jclouds.crypto.Crypto;
37 
38/**
39 * 
40 * @author Adrian Cole
41 */
42@Singleton
43public class JCECrypto implements Crypto {
44 
45   private final KeyPairGenerator rsaKeyPairGenerator;
46   private final KeyFactory rsaKeyFactory;
47   private final CertificateFactory certFactory;
48   private final Provider provider;
49 
50   @Inject
51   public JCECrypto() throws NoSuchAlgorithmException, CertificateException {
52      this(null);
53   }
54 
55   public JCECrypto(@Nullable Provider provider) throws NoSuchAlgorithmException, CertificateException {
56      this.rsaKeyPairGenerator = provider == null ? KeyPairGenerator.getInstance("RSA") : KeyPairGenerator.getInstance(
57            "RSA", provider);
58      this.rsaKeyFactory = provider == null ? KeyFactory.getInstance("RSA") : KeyFactory.getInstance("RSA", provider);
59      this.certFactory = provider == null ? CertificateFactory.getInstance("X.509") : CertificateFactory.getInstance(
60            "X.509", provider);
61      this.provider = provider;
62   }
63 
64   @Override
65   public Mac hmac(String algorithm, byte[] key) throws NoSuchAlgorithmException, InvalidKeyException {
66      Mac mac = provider == null ? Mac.getInstance(algorithm) : Mac.getInstance(algorithm, provider);
67      SecretKeySpec signingKey = new SecretKeySpec(key, algorithm);
68      mac.init(signingKey);
69      return mac;
70 
71   }
72 
73   @Override
74   public MessageDigest digest(String algorithm) throws NoSuchAlgorithmException {
75      return provider == null ? MessageDigest.getInstance(algorithm) : MessageDigest.getInstance(algorithm, provider);
76   }
77 
78   public final static String MD5 = "MD5";
79   public final static String SHA1 = "SHA1";
80   public final static String SHA256 = "SHA-256";
81   public final static String SHA512 = "SHA-512";
82 
83   @Override
84   public MessageDigest md5() {
85      try {
86         return digest(MD5);
87      } catch (NoSuchAlgorithmException e) {
88         throw new IllegalStateException("MD5 must be supported", e);
89      }
90   }
91 
92   @Override
93   public MessageDigest sha1() {
94      try {
95         return digest(SHA1);
96      } catch (NoSuchAlgorithmException e) {
97         throw new IllegalStateException("MD5 must be supported", e);
98      }
99   }
100 
101   @Override
102   public MessageDigest sha256() {
103      try {
104         return digest(SHA256);
105      } catch (NoSuchAlgorithmException e) {
106         throw new IllegalStateException(SHA256 + " must be supported", e);
107      }
108   }
109 
110   @Override
111   public MessageDigest sha512() {
112      try {
113         return digest(SHA512);
114      } catch (NoSuchAlgorithmException e) {
115         throw new IllegalStateException(SHA512 + " must be supported", e);
116      }
117   }
118 
119   public final static String HmacSHA256 = "HmacSHA256";
120   public final static String HmacSHA1 = "HmacSHA1";
121 
122   @Override
123   public Mac hmacSHA1(byte[] key) throws InvalidKeyException {
124      try {
125         return hmac(HmacSHA1, key);
126      } catch (NoSuchAlgorithmException e) {
127         throw new IllegalStateException("HmacSHA1 must be supported", e);
128      }
129   }
130 
131   @Override
132   public Mac hmacSHA256(byte[] key) throws InvalidKeyException {
133      try {
134         return hmac(HmacSHA256, key);
135      } catch (NoSuchAlgorithmException e) {
136         throw new IllegalStateException("HmacSHA256 must be supported", e);
137      }
138   }
139 
140   @Override
141   public CertificateFactory certFactory() {
142      return certFactory;
143   }
144 
145   @Override
146   public KeyFactory rsaKeyFactory() {
147      return rsaKeyFactory;
148   }
149 
150   @Override
151   public KeyPairGenerator rsaKeyPairGenerator() {
152      return rsaKeyPairGenerator;
153   }
154}

[all classes][org.jclouds.encryption.internal]
EMMA 2.0.5312 (C) Vladimir Roubtsov