1
package org.bouncycastle.asn1.pkcs;
3
import org.bouncycastle.asn1.ASN1Encodable;
4
import org.bouncycastle.asn1.ASN1EncodableVector;
5
import org.bouncycastle.asn1.ASN1Sequence;
6
import org.bouncycastle.asn1.ASN1TaggedObject;
7
import org.bouncycastle.asn1.DERNull;
8
import org.bouncycastle.asn1.DERObject;
9
import org.bouncycastle.asn1.DEROctetString;
10
import org.bouncycastle.asn1.DERSequence;
11
import org.bouncycastle.asn1.DERTaggedObject;
12
import org.bouncycastle.asn1.oiw.OIWObjectIdentifiers;
13
import org.bouncycastle.asn1.x509.AlgorithmIdentifier;
15
public class RSAESOAEPparams
18
private AlgorithmIdentifier hashAlgorithm;
19
private AlgorithmIdentifier maskGenAlgorithm;
20
private AlgorithmIdentifier pSourceAlgorithm;
22
public final static AlgorithmIdentifier DEFAULT_HASH_ALGORITHM = new AlgorithmIdentifier(OIWObjectIdentifiers.idSHA1, new DERNull());
23
public final static AlgorithmIdentifier DEFAULT_MASK_GEN_FUNCTION = new AlgorithmIdentifier(PKCSObjectIdentifiers.id_mgf1, DEFAULT_HASH_ALGORITHM);
24
public final static AlgorithmIdentifier DEFAULT_P_SOURCE_ALGORITHM = new AlgorithmIdentifier(PKCSObjectIdentifiers.id_pSpecified, new DEROctetString(new byte[0]));
26
public static RSAESOAEPparams getInstance(
29
if (obj instanceof RSAESOAEPparams)
31
return (RSAESOAEPparams)obj;
33
else if (obj instanceof ASN1Sequence)
35
return new RSAESOAEPparams((ASN1Sequence)obj);
38
throw new IllegalArgumentException("unknown object in factory: " + obj.getClass().getName());
44
public RSAESOAEPparams()
46
hashAlgorithm = DEFAULT_HASH_ALGORITHM;
47
maskGenAlgorithm = DEFAULT_MASK_GEN_FUNCTION;
48
pSourceAlgorithm = DEFAULT_P_SOURCE_ALGORITHM;
51
public RSAESOAEPparams(
52
AlgorithmIdentifier hashAlgorithm,
53
AlgorithmIdentifier maskGenAlgorithm,
54
AlgorithmIdentifier pSourceAlgorithm)
56
this.hashAlgorithm = hashAlgorithm;
57
this.maskGenAlgorithm = maskGenAlgorithm;
58
this.pSourceAlgorithm = pSourceAlgorithm;
61
public RSAESOAEPparams(
64
hashAlgorithm = DEFAULT_HASH_ALGORITHM;
65
maskGenAlgorithm = DEFAULT_MASK_GEN_FUNCTION;
66
pSourceAlgorithm = DEFAULT_P_SOURCE_ALGORITHM;
68
for (int i = 0; i != seq.size(); i++)
70
ASN1TaggedObject o = (ASN1TaggedObject)seq.getObjectAt(i);
75
hashAlgorithm = AlgorithmIdentifier.getInstance(o, true);
78
maskGenAlgorithm = AlgorithmIdentifier.getInstance(o, true);
81
pSourceAlgorithm = AlgorithmIdentifier.getInstance(o, true);
84
throw new IllegalArgumentException("unknown tag");
89
public AlgorithmIdentifier getHashAlgorithm()
94
public AlgorithmIdentifier getMaskGenAlgorithm()
96
return maskGenAlgorithm;
99
public AlgorithmIdentifier getPSourceAlgorithm()
101
return pSourceAlgorithm;
106
* RSAES-OAEP-params ::= SEQUENCE {
107
* hashAlgorithm [0] OAEP-PSSDigestAlgorithms DEFAULT sha1,
108
* maskGenAlgorithm [1] PKCS1MGFAlgorithms DEFAULT mgf1SHA1,
109
* pSourceAlgorithm [2] PKCS1PSourceAlgorithms DEFAULT pSpecifiedEmpty
112
* OAEP-PSSDigestAlgorithms ALGORITHM-IDENTIFIER ::= {
113
* { OID id-sha1 PARAMETERS NULL }|
114
* { OID id-sha256 PARAMETERS NULL }|
115
* { OID id-sha384 PARAMETERS NULL }|
116
* { OID id-sha512 PARAMETERS NULL },
117
* ... -- Allows for future expansion --
119
* PKCS1MGFAlgorithms ALGORITHM-IDENTIFIER ::= {
120
* { OID id-mgf1 PARAMETERS OAEP-PSSDigestAlgorithms },
121
* ... -- Allows for future expansion --
123
* PKCS1PSourceAlgorithms ALGORITHM-IDENTIFIER ::= {
124
* { OID id-pSpecified PARAMETERS OCTET STRING },
125
* ... -- Allows for future expansion --
128
* @return the asn1 primitive representing the parameters.
130
public DERObject toASN1Object()
132
ASN1EncodableVector v = new ASN1EncodableVector();
134
if (!hashAlgorithm.equals(DEFAULT_HASH_ALGORITHM))
136
v.add(new DERTaggedObject(true, 0, hashAlgorithm));
139
if (!maskGenAlgorithm.equals(DEFAULT_MASK_GEN_FUNCTION))
141
v.add(new DERTaggedObject(true, 1, maskGenAlgorithm));
144
if (!pSourceAlgorithm.equals(DEFAULT_P_SOURCE_ALGORITHM))
146
v.add(new DERTaggedObject(true, 2, pSourceAlgorithm));
149
return new DERSequence(v);