47
47
48
48
import org .bouncycastle .asn1 .ASN1Sequence ;
49
49
import org .bouncycastle .asn1 .ASN1Set ;
50
+ import org .bouncycastle .asn1 .DERBitString ;
50
51
import org .bouncycastle .asn1 .DLSequence ;
52
+ import org .bouncycastle .asn1 .pkcs .CertificationRequestInfo ;
51
53
import org .bouncycastle .asn1 .x500 .X500Name ;
52
54
import org .bouncycastle .pkcs .PKCS10CertificationRequest ;
53
55
import org .bouncycastle .pkcs .PKCS10CertificationRequestBuilder ;
@@ -110,6 +112,16 @@ public PKCS10Request(ASN1Sequence sequence) {
110
112
this (CertificationRequest .getInstance (sequence ));
111
113
}
112
114
115
+ private void resetSignedRequest () {
116
+ if ( signedRequest == null ) return ;
117
+
118
+ CertificationRequest req = signedRequest .toASN1Structure ();
119
+ CertificationRequestInfo reqInfo = new CertificationRequestInfo (subject , publicKeyInfo , req .getCertificationRequestInfo ().getAttributes ());
120
+ ASN1Sequence seq = (ASN1Sequence ) req .toASN1Primitive ();
121
+ req = new CertificationRequest (reqInfo , (AlgorithmIdentifier ) seq .getObjectAt (1 ), (DERBitString ) seq .getObjectAt (2 ));
122
+ signedRequest = new PKCS10CertificationRequest (req ); // valid = true;
123
+ }
124
+
113
125
// sign
114
126
115
127
public PKCS10CertificationRequest sign (final PrivateKey privateKey ,
@@ -178,6 +190,7 @@ public ASN1Sequence toASN1Structure() {
178
190
179
191
public void setSubject (final X500Name subject ) {
180
192
this .subject = subject ;
193
+ resetSignedRequest ();
181
194
}
182
195
183
196
public X500Name getSubject () {
@@ -190,6 +203,7 @@ public void setPublicKey(final PublicKey publicKey) {
190
203
this .publicKeyInfo = makePublicKeyInfo (publicKey );
191
204
//if ( publicKey == null ) publicKeyAlgorithm = null;
192
205
//else publicKeyAlgorithm = publicKey.getAlgorithm();
206
+ resetSignedRequest ();
193
207
}
194
208
195
209
private String getPublicKeyAlgorithm () {
0 commit comments