• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 package org.bouncycastle.jce.provider;
2 
3 import javax.crypto.interfaces.PBEKey;
4 import javax.crypto.spec.PBEKeySpec;
5 
6 import org.bouncycastle.asn1.DERObjectIdentifier;
7 import org.bouncycastle.crypto.CipherParameters;
8 import org.bouncycastle.crypto.PBEParametersGenerator;
9 import org.bouncycastle.crypto.params.KeyParameter;
10 import org.bouncycastle.crypto.params.ParametersWithIV;
11 
12 public class JCEPBEKey
13     implements PBEKey
14 {
15     String              algorithm;
16     DERObjectIdentifier oid;
17     int                 type;
18     int                 digest;
19     int                 keySize;
20     int                 ivSize;
21     CipherParameters    param;
22     PBEKeySpec          pbeKeySpec;
23     boolean             tryWrong = false;
24 
25     /**
26      * @param param
27      */
JCEPBEKey( String algorithm, DERObjectIdentifier oid, int type, int digest, int keySize, int ivSize, PBEKeySpec pbeKeySpec, CipherParameters param)28     public JCEPBEKey(
29         String              algorithm,
30         DERObjectIdentifier oid,
31         int                 type,
32         int                 digest,
33         int                 keySize,
34         int                 ivSize,
35         PBEKeySpec          pbeKeySpec,
36         CipherParameters    param)
37     {
38         this.algorithm = algorithm;
39         this.oid = oid;
40         this.type = type;
41         this.digest = digest;
42         this.keySize = keySize;
43         this.ivSize = ivSize;
44         this.pbeKeySpec = pbeKeySpec;
45         this.param = param;
46     }
47 
getAlgorithm()48     public String getAlgorithm()
49     {
50         return algorithm;
51     }
52 
getFormat()53     public String getFormat()
54     {
55         return "RAW";
56     }
57 
getEncoded()58     public byte[] getEncoded()
59     {
60         if (param != null)
61         {
62             KeyParameter    kParam;
63 
64             if (param instanceof ParametersWithIV)
65             {
66                 kParam = (KeyParameter)((ParametersWithIV)param).getParameters();
67             }
68             else
69             {
70                 kParam = (KeyParameter)param;
71             }
72 
73             return kParam.getKey();
74         }
75         else
76         {
77             if (type == PBE.PKCS12)
78             {
79                 return PBEParametersGenerator.PKCS12PasswordToBytes(pbeKeySpec.getPassword());
80             }
81             else
82             {
83                 return PBEParametersGenerator.PKCS5PasswordToBytes(pbeKeySpec.getPassword());
84             }
85         }
86     }
87 
getType()88     int getType()
89     {
90         return type;
91     }
92 
getDigest()93     int getDigest()
94     {
95         return digest;
96     }
97 
getKeySize()98     int getKeySize()
99     {
100         return keySize;
101     }
102 
getIvSize()103     int getIvSize()
104     {
105         return ivSize;
106     }
107 
getParam()108     CipherParameters getParam()
109     {
110         return param;
111     }
112 
113     /* (non-Javadoc)
114      * @see javax.crypto.interfaces.PBEKey#getPassword()
115      */
getPassword()116     public char[] getPassword()
117     {
118         return pbeKeySpec.getPassword();
119     }
120 
121     /* (non-Javadoc)
122      * @see javax.crypto.interfaces.PBEKey#getSalt()
123      */
getSalt()124     public byte[] getSalt()
125     {
126         return pbeKeySpec.getSalt();
127     }
128 
129     /* (non-Javadoc)
130      * @see javax.crypto.interfaces.PBEKey#getIterationCount()
131      */
getIterationCount()132     public int getIterationCount()
133     {
134         return pbeKeySpec.getIterationCount();
135     }
136 
getOID()137     public DERObjectIdentifier getOID()
138     {
139         return oid;
140     }
141 
setTryWrongPKCS12Zero(boolean tryWrong)142     void setTryWrongPKCS12Zero(boolean tryWrong)
143     {
144         this.tryWrong = tryWrong;
145     }
146 
shouldTryWrongPKCS12()147     boolean shouldTryWrongPKCS12()
148     {
149         return tryWrong;
150     }
151 }
152