public void TestSubsequentMessage() { RsaKeyPairGenerator rsaKeyPairGenerator = new RsaKeyPairGenerator(); rsaKeyPairGenerator.Init(new RsaKeyGenerationParameters(BigInteger.ValueOf(65537), new SecureRandom(), 2048, 100)); AsymmetricCipherKeyPair rsaKeyPair = rsaKeyPairGenerator.GenerateKeyPair(); TestCertBuilder builder = new TestCertBuilder(); builder.NotBefore = DateTime.UtcNow.AddDays(-1); builder.NotAfter = DateTime.UtcNow.AddDays(1); builder.PublicKey = rsaKeyPair.Public; builder.SignatureAlgorithm = "Sha1WithRSAEncryption"; X509Certificate cert = builder.Build(rsaKeyPair.Private); GeneralName user = new GeneralName(new X509Name("CN=Test")); CertificateRequestMessageBuilder crmBuiler = new CertificateRequestMessageBuilder(BigInteger.One) .SetPublicKey(SubjectPublicKeyInfoFactory.CreateSubjectPublicKeyInfo(rsaKeyPair.Public)) .SetProofOfPossessionSubsequentMessage(SubsequentMessage.encrCert); ISignatureFactory sigFact = new Asn1SignatureFactory("SHA256WithRSA", rsaKeyPair.Private); ProtectedPkiMessage certRequestMsg = new ProtectedPkiMessageBuilder(user, user) .SetTransactionId(new byte[] { 1, 2, 3, 4, 5 }) .SetBody(new PkiBody(PkiBody.TYPE_KEY_RECOVERY_REQ, new CertReqMessages(new CertReqMsg[] { crmBuiler.Build().ToAsn1Structure() }))) .AddCmpCertificate(cert) .Build(sigFact); ProtectedPkiMessage msg = new ProtectedPkiMessage(new GeneralPkiMessage(certRequestMsg.ToAsn1Message().GetDerEncoded())); CertReqMessages reqMsgs = CertReqMessages.GetInstance(msg.Body.Content); CertReqMsg reqMsg = reqMsgs.ToCertReqMsgArray()[0]; IsEquals(ProofOfPossession.TYPE_KEY_ENCIPHERMENT, reqMsg.Popo.Type); }
private static Asn1Encodable GetBodyForType( int type, Asn1Encodable o) { switch (type) { case TYPE_INIT_REQ: return(CertReqMessages.GetInstance(o)); case TYPE_INIT_REP: return(CertRepMessage.GetInstance(o)); case TYPE_CERT_REQ: return(CertReqMessages.GetInstance(o)); case TYPE_CERT_REP: return(CertRepMessage.GetInstance(o)); case TYPE_P10_CERT_REQ: return(CertificationRequest.GetInstance(o)); case TYPE_POPO_CHALL: return(PopoDecKeyChallContent.GetInstance(o)); case TYPE_POPO_REP: return(PopoDecKeyRespContent.GetInstance(o)); case TYPE_KEY_UPDATE_REQ: return(CertReqMessages.GetInstance(o)); case TYPE_KEY_UPDATE_REP: return(CertRepMessage.GetInstance(o)); case TYPE_KEY_RECOVERY_REQ: return(CertReqMessages.GetInstance(o)); case TYPE_KEY_RECOVERY_REP: return(KeyRecRepContent.GetInstance(o)); case TYPE_REVOCATION_REQ: return(RevReqContent.GetInstance(o)); case TYPE_REVOCATION_REP: return(RevRepContent.GetInstance(o)); case TYPE_CROSS_CERT_REQ: return(CertReqMessages.GetInstance(o)); case TYPE_CROSS_CERT_REP: return(CertRepMessage.GetInstance(o)); case TYPE_CA_KEY_UPDATE_ANN: return(CAKeyUpdAnnContent.GetInstance(o)); case TYPE_CERT_ANN: return(CmpCertificate.GetInstance(o)); case TYPE_REVOCATION_ANN: return(RevAnnContent.GetInstance(o)); case TYPE_CRL_ANN: return(CrlAnnContent.GetInstance(o)); case TYPE_CONFIRM: return(PkiConfirmContent.GetInstance(o)); case TYPE_NESTED: return(PkiMessages.GetInstance(o)); case TYPE_GEN_MSG: return(GenMsgContent.GetInstance(o)); case TYPE_GEN_REP: return(GenRepContent.GetInstance(o)); case TYPE_ERROR: return(ErrorMsgContent.GetInstance(o)); case TYPE_CERT_CONFIRM: return(CertConfirmContent.GetInstance(o)); case TYPE_POLL_REQ: return(PollReqContent.GetInstance(o)); case TYPE_POLL_REP: return(PollRepContent.GetInstance(o)); default: throw new ArgumentException("unknown tag number: " + type, "type"); } }
private static Asn1Encodable GetBodyForType(int type, Asn1Encodable o) { //IL_014b: Unknown result type (might be due to invalid IL or missing references) switch (type) { case 0: return(CertReqMessages.GetInstance(o)); case 1: return(CertRepMessage.GetInstance(o)); case 2: return(CertReqMessages.GetInstance(o)); case 3: return(CertRepMessage.GetInstance(o)); case 4: return(CertificationRequest.GetInstance(o)); case 5: return(PopoDecKeyChallContent.GetInstance(o)); case 6: return(PopoDecKeyRespContent.GetInstance(o)); case 7: return(CertReqMessages.GetInstance(o)); case 8: return(CertRepMessage.GetInstance(o)); case 9: return(CertReqMessages.GetInstance(o)); case 10: return(KeyRecRepContent.GetInstance(o)); case 11: return(RevReqContent.GetInstance(o)); case 12: return(RevRepContent.GetInstance(o)); case 13: return(CertReqMessages.GetInstance(o)); case 14: return(CertRepMessage.GetInstance(o)); case 15: return(CAKeyUpdAnnContent.GetInstance(o)); case 16: return(CmpCertificate.GetInstance(o)); case 17: return(RevAnnContent.GetInstance(o)); case 18: return(CrlAnnContent.GetInstance(o)); case 19: return(PkiConfirmContent.GetInstance(o)); case 20: return(PkiMessages.GetInstance(o)); case 21: return(GenMsgContent.GetInstance(o)); case 22: return(GenRepContent.GetInstance(o)); case 23: return(ErrorMsgContent.GetInstance(o)); case 24: return(CertConfirmContent.GetInstance(o)); case 25: return(PollReqContent.GetInstance(o)); case 26: return(PollRepContent.GetInstance(o)); default: throw new ArgumentException(string.Concat((object)"unknown tag number: ", (object)type), "type"); } }
private static Asn1Encodable GetBodyForType(int type, Asn1Encodable o) { switch (type) { case 0: return(CertReqMessages.GetInstance(o)); case 1: return(CertRepMessage.GetInstance(o)); case 2: return(CertReqMessages.GetInstance(o)); case 3: return(CertRepMessage.GetInstance(o)); case 4: return(CertificationRequest.GetInstance(o)); case 5: return(PopoDecKeyChallContent.GetInstance(o)); case 6: return(PopoDecKeyRespContent.GetInstance(o)); case 7: return(CertReqMessages.GetInstance(o)); case 8: return(CertRepMessage.GetInstance(o)); case 9: return(CertReqMessages.GetInstance(o)); case 10: return(KeyRecRepContent.GetInstance(o)); case 11: return(RevReqContent.GetInstance(o)); case 12: return(RevRepContent.GetInstance(o)); case 13: return(CertReqMessages.GetInstance(o)); case 14: return(CertRepMessage.GetInstance(o)); case 15: return(CAKeyUpdAnnContent.GetInstance(o)); case 16: return(CmpCertificate.GetInstance(o)); case 17: return(RevAnnContent.GetInstance(o)); case 18: return(CrlAnnContent.GetInstance(o)); case 19: return(PkiConfirmContent.GetInstance(o)); case 20: return(PkiMessages.GetInstance(o)); case 21: return(GenMsgContent.GetInstance(o)); case 22: return(GenRepContent.GetInstance(o)); case 23: return(ErrorMsgContent.GetInstance(o)); case 24: return(CertConfirmContent.GetInstance(o)); case 25: return(PollReqContent.GetInstance(o)); case 26: return(PollRepContent.GetInstance(o)); default: throw new ArgumentException("unknown tag number: " + type, "type"); } }