Skip to content

Commit e701a4f

Browse files
committed
reset signed-request -> sub-sequent req.verify will work correctly
1 parent 77639f1 commit e701a4f

File tree

1 file changed

+14
-0
lines changed

1 file changed

+14
-0
lines changed

src/main/java/org/jruby/ext/openssl/impl/PKCS10Request.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,9 @@
4747

4848
import org.bouncycastle.asn1.ASN1Sequence;
4949
import org.bouncycastle.asn1.ASN1Set;
50+
import org.bouncycastle.asn1.DERBitString;
5051
import org.bouncycastle.asn1.DLSequence;
52+
import org.bouncycastle.asn1.pkcs.CertificationRequestInfo;
5153
import org.bouncycastle.asn1.x500.X500Name;
5254
import org.bouncycastle.pkcs.PKCS10CertificationRequest;
5355
import org.bouncycastle.pkcs.PKCS10CertificationRequestBuilder;
@@ -110,6 +112,16 @@ public PKCS10Request(ASN1Sequence sequence) {
110112
this(CertificationRequest.getInstance(sequence));
111113
}
112114

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+
113125
// sign
114126

115127
public PKCS10CertificationRequest sign(final PrivateKey privateKey,
@@ -178,6 +190,7 @@ public ASN1Sequence toASN1Structure() {
178190

179191
public void setSubject(final X500Name subject) {
180192
this.subject = subject;
193+
resetSignedRequest();
181194
}
182195

183196
public X500Name getSubject() {
@@ -190,6 +203,7 @@ public void setPublicKey(final PublicKey publicKey) {
190203
this.publicKeyInfo = makePublicKeyInfo(publicKey);
191204
//if ( publicKey == null ) publicKeyAlgorithm = null;
192205
//else publicKeyAlgorithm = publicKey.getAlgorithm();
206+
resetSignedRequest();
193207
}
194208

195209
private String getPublicKeyAlgorithm() {

0 commit comments

Comments
 (0)