Hi Dave
I will post a patch when it is working for me. Now I got the recipients certificate, but I can't build the message to respond for MessageType.PKCSReq. Could you help me with this? I tried various combinations wrapping PkiMessage to ContentInfo or to another SignedData, but the response is allways invalid. I am now testing with the SimpleExample so I can see exceptions on the client side.
My current server side code for sending the message is:
final SignedDataGenerator dsdGenerator = new SignedDataGenerator();
for (final X509Certificate cert : certs) {
dsdGenerator.addCertificate(cert);
}
final SignedData dsd = dsdGenerator.generate();
final PkiMessageGenerator pmGen = new PkiMessageGenerator();
pmGen.setTransactionId(msg.getTransactionId());
pmGen.setPkiStatus(PkiStatus.SUCCESS);
pmGen.setMessageType(MessageType.CertRep);
pmGen.setMessageData(/*sd*/ dsd);
pmGen.setSenderNonce(Nonce.nextNonce());
pmGen.setRecipientNonce(msg.getSenderNonce());
pmGen.setMessageDigest("SHA-1");
pmGen.setCipherAlgorithm("DESede");
pmGen.setPrivateKey(privateKey);
pmGen.setRecipient(senderCert);
pmGen.setSigner((X509Certificate) CertUtils.getCertificate());
final PkiMessage pkiMessage = pmGen.generate();
// now the currently problematic part:
final ContentInfo contentInfo2 = new ContentInfo(PKCSObjectIdentifiers.signedData, pkiMessage);
final byte[] data = contentInfo2.getDEREncoded();
res.getOutputStream().write(data);
... but this doesn't work, on the client side I'll get:
Exception in thread "main" java.lang.ClassCastException: org.bouncycastle.asn1.DERObjectIdentifier cannot be cast to org.bouncycastle.asn1.DERInteger
at org.bouncycastle.asn1.cms.SignedData.<init>(Unknown Source)
at org.bouncycastle.asn1.cms.SignedData.getInstance(Unknown Source)
at org.jscep.pkcs7.PkiMessageParser.parse(PkiMessageParser.java:73)
at org.jscep.content.CertRepContentHandler.getContent(CertRepContentHandler.java:81)
at org.jscep.content.CertRepContentHandler.getContent(CertRepContentHandler.java:42)
at org.jscep.transport.HttpPostTransport.sendMessage(HttpPostTransport.java:83)
at org.jscep.transaction.TransactionImpl.performOperation(TransactionImpl.java:165)
at org.jscep.client.Client.enrollCertificate(Client.java:356)
at com.mwaysolutions.gofer2.ios.config.SimpleExample.main(SimpleExample.java:30)
Request is: MIAGCSqGSIb3DQEHAqCAMIACAQExDTALBglghkgBZQMEAgMwgAYJKoZIhvcNAQcBoIAkgASCAskwggLFBgkqhkiG9w0BBwOgggK2MIICsgIBADGB7zCB7AIBADBVME4xCzAJBgNVBAYTAlVTMRAwDgYDVQQKEwdFcXVpZmF4MS0wKwYDVQQLEyRFcXVpZmF4IFNlY3VyZSBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkCAxSfZTANBgkqhkiG9w0BAQEFAASBgFnRRZcRQ9JWxVEfjvPQ+qh/9CmaUR8fnWC5I0/j3nFyCc3hzh9N8tqjqIRKj8wS8lKMQxlwLsaeQ3Ct/WguqIlvYlHKs6oocJc59/dQPAIe++60B24B4TGD12f0FaCJSwPsas+LyEUg1KXRaONEp4xKkZ0G76EqVm6uJWWItoGFMIIBuQYJKoZIhvcNAQcBMBQGCCqGSIb3DQMHBAgHqCKITdnKBKCCAZQEggGQcceM9Rnv1fBzaXZtktYIBa8p29KM0h4KcbIFb5OFyKvLYKksOOE/w8UsHjPxMoqhXFMgkUEwrZFbkOdJ786EDfBxmEI0DS6N7nfe3o63hFymQVqyD2sm+n8wB7hY6Gcc9IOo2TADH4Zzijz46zSSTapmGZbee3AL+IdZA6Bsuf/h4e39gqLb+55uuHOaeM5iQGMb0Z9s74Qx5lXDb6JC3TNSYPUUtsZZ8vqy/sN7qZJZZNG967MD9bOLjeTXOArJMp49v62VFAk0cu2oN8eD2qREi//nFpNenP/6Hj4oEztA3r7svdHw7iC0GDGI+ID+BmWMyRP7qYNV+0TTKc9JieHNkuqNIg6yBdIzIE6HMZSdwvxWZOIbvO63tA+qA0xlW5zzEJMI9US4s215lkFzTlwWdkDmg33PYIsJPVhjTxhC1KLU7hh2KdRn76STw/6Y4egfdfglRN3cTRvOZ4UHUB3qsxW6Hd8SDsVo3kqaj0Z0zdLXjhHawnwo1zbvLyHQ+b6RRQ2E7ihJTIfjDrd/LwAAAAAAAKCCAeEwggHdMIIBRqADAgECAgRLmjZkMA0GCSqGSIb3DQEBBQUAMDMxCzAJBgNVBAYTAkdCMRAwDgYDVQQHEwdDYXJkaWZmMRIwEAYDVQQDEwlqc2NlcC5vcmcwHhcNMTAwMzEyMTI0MTA4WhcNMTAwNjEwMTI0MTA4WjAzMQswCQYDVQQGEwJHQjEQMA4GA1UEBxMHQ2FyZGlmZjESMBAGA1UEAxMJanNjZXAub3JnMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC1jZj8yhxOn5yfIxNE02nB6g33p2W0oZBw30EZBA6/5rv0V/HKYFffof3bZigYd9djHQS8C3jsJ3n1/8HLa9/pD45xT4D7Sr5PIKZfI4q3J7vAw+hC/sFFcdiu9lOAKcBR+rDGK4ORqGML3nvdvXn3GmsAf1qRAvnukdQXdlttFQIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAGcA20o8AiUvLB/VdIF37ijqmGg+GeBQAm1wq5wkOcPPZ4IWa9x4hGz9AUPL8S83kGxgyWICrXp2ebPTXPauxHthCv1tVCEJpdxHYUXaLZw8ARK3LmSmg/DUA1jz2ajRLw2a39ke8+kSyBBhgzAnY4NphI2X6bLcBOZoe5zCIngdMYICOTCCAjUCAQEwOzAzMRIwEAYDVQQDDAlqc2NlcC5vcmcxEDAOBgNVBAcMB0NhcmRpZmYxCzAJBgNVBAYTAkdCAgRLmjZkMAsGCWCGSAFlAwQCA6CCAVQwEgYKYIZIAYb4RQEJAjEEEwIxOTAYBgkqhkiG9w0BCQMxCwYJKoZIhvcNAQcBMBwGCSqGSIb3DQEJBTEPFw0xMDEwMTUxNDUyMDZaMCAGCmCGSAGG+EUBCQUxEgQQEFotcwsCPULy0KOUgjZvwzBPBgkqhkiG9w0BCQQxQgRAuJ/O0SItQV9U2spkDUze4PiYUKyCqMgJuQZTI6ZUo27I2ogr0/sxluar0OodgxFbBmKb0pNc0kmUlLJoFRvBETCBkgYKYIZIAYb4RQEJBzGBgxOBgDEwYjM0ZjVjNWUwOWZhYTYzYzVjMTgwOTQ2NDM1YzlmYzM1YjIzYmUxODdmZTBlZGY3NTQ1NWYzNjIwNWZjYWE0ZWM3YWY2NDcxNzJkMTA1M2Y4NzAyZTUwYjZmZjVkOWQ4NDEwMjQ0ZGMyNDVjNzI5ZDA2YjJjNTFmZWU1ZjAzMAsGCSqGSIb3DQEBAQSBgB0WwqV4OeRjKYuX4Rg9oVjwZOCiKDcqAi3FJm3RxMlB7em2DPIfrVBAWZrk15Gj2Nchd2eDiIFtLZ9oIfRZMciqf/wMKuMlR0Sob/4JQrvjMsCBGNfm9w8v8dJ24DHiHb19gaTcF0frnghTTlbz4RZfdJyujRrxQn+EsIh1uIciAAAAAAAA
(my invalid) response is:
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
I am exhausted :-S
Thanks in advance