Aplicaciones de Windows
Contraer la tabla de contenido
Expandir la tabla de contenido

Controlador para inscripción de certificados (aplicaciones de la Tienda Windows)

Muestra el código que implementa un controlador System.Web.Mvc para suministrar certificados.

Servicio web de aplicación de banca para la inscripción de certificados

La aplicación de la Tienda Windows para banca requiere un servicio web que proporcione un certificado de una autoridad de confianza.

El siguiente ejemplo de código muestra cómo implementar un controlador System.Web.Mvc que suministra un certificado de intercambio de información personal (PFX).



using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using CERTCLILib;

namespace BankServer.Controllers
{
    public class EnrollmentController : Controller
    {
        internal abstract class Constants
        {
            // Constants for property IDs
            public const int CR_PROP_CAXCHGCERT = 15;
            //const int ants for data types and indexed status
            public const int PROPTYPE_BINARY = 0x3;
            //Constants for binary flags
            public const int CV_OUT_BASE64 = 0x1;
            public const int CR_DISP_ERROR = 0x1;
            public const int CR_DISP_DENIED = 0x2;
            public const int CR_DISP_ISSUED = 0x3;
            public const int CR_DISP_UNDER_SUBMISSION = 0x5;
            public const int CR_IN_BASE64HEADER = 0;
            public const int CR_IN_BASE64 = 0x1;
            public const int CR_IN_BINARY = 0x2;
            public const int CR_IN_ENCODEANY = 0xff;
            public const int CR_IN_FORMATANY = 0x00;
            public const int CR_IN_ROBO = 0x00200000;
            public const int CR_IN_PKCS10 = 0x100;
            public const int CR_IN_PKCS7 = 0x300;
            public const int CR_IN_CMC = 0x400;
            public const int CR_IN_FORMATMASK = 0xff00;

            public const int CR_IN_CLIENTIDNONE = 0x00400000;
            public const int CR_IN_CONNECTONLY = 0x00800000;

            public const int CR_OUT_BASE64HEADER = 0x0;
            public const int CR_OUT_BASE64 = 0x1;
            public const int FR_PROP_FULLRESPONSE = 1;  // Binary
        }

        [HttpPost]
        public JsonResult Submit(string username, string password, string request)
        {
            const string CAConfig = "Devt-StandAloneCA.enrolldev.nttest.microsoft.com\\enrolldev-Devt-StandAlone-CA";

            ICertRequest CertRequest = new CCertRequest();

            CertRequest.Submit(Constants.CR_IN_ENCODEANY,
                               request,
                               "",
                               CAConfig);

            string certificate = 
	      CertRequest.GetCertificate(Constants.CR_OUT_BASE64);

            var result = new JsonResult();
            result.Data = new { certificate = certificate };
            return result;
        }

	[HttpPost]
	public JsonResult GetPFX(string username)
        {
            // IX509Enrollment EnrollObj = new CX509Enrollment();
            // EnrollObj.InitializeFromTemplateName(X509CertificateEnrollmentContext.ContextUser, "User");
            // EnrollObj.Enroll();
            // string pfx = EnrollObj.CreatePFX("1111", 0, EncodingType.XCN_CRYPT_STRING_BASE64HEADER);  
	  string password = "1111";
	  string friendlyName = "My WoodGrove Bank Certificate";
	  string pfx = "-----BEGIN CERTIFICATE-----" +
"MIIOvwIBAzCCDnsGCSqGSIb3DQEHAaCCDmwEgg5oMIIOZDCCAd0GCSqGSIb3DQEH"+
"AaCCAc4EggHKMIIBxjCCAcIGCyqGSIb3DQEMCgECoIHMMIHJMBwGCiqGSIb3DQEM"+
"AQMwDgQIJ+Nwezsdl8sCAgfQBIGoaMEnoOeeyN09o99ySQDkqkf9xYIJMjINMWMQ"+
"FN4GywQMF7vULdpPMyia91gu0yfrRZqTgZyNkmitqhZC1J3GkeNp1t+ZS14in2Ga"+
"G8BD95U6W73CmQuSOME4V58b97KhmMcss6HTxnM1EPNIrJcVao7n7XGzXVTJ1xC4"+
"N2U9WJuVLd90tsy72dNSLEIU/XWKe5ZAtU1k0GC/W9gTu0DatRtUPk+M4SRvMYHj"+
"MBMGCSqGSIb3DQEJFTEGBAQBAAAAMF0GCSsGAQQBgjcRATFQHk4ATQBpAGMAcgBv"+
"AHMAbwBmAHQAIABTAG8AZgB0AHcAYQByAGUAIABLAGUAeQAgAFMAdABvAHIAYQBn"+
"AGUAIABQAHIAbwB2AGkAZABlAHIwbQYJKoZIhvcNAQkUMWAeXgBsAGUALQB1AHMA"+
"ZQByAF8AdgAzAC0AYgA3AGQAYgAwADkAOQBmAC0AYwA3ADAAMQAtADQAZABmADIA"+
"LQA5AGQANwA1AC0AYwBkADcAMAA1ADUAYwAyAGYAMgBmADgwggx/BgkqhkiG9w0B"+
"BwagggxwMIIMbAIBADCCDGUGCSqGSIb3DQEHATAcBgoqhkiG9w0BDAEGMA4ECERM"+
"AeQ4kPTeAgIH0ICCDDhlM+J/2aOsG15J3JYx9/XyzpaHZ831/7+t8FNoQMwMceS7"+
"enQKhdl9bpFOc0vIH2MXLlckleUFAuTnZ3WDAX+Co4ojhz3SiFNop6Zbj9tfY37R"+
"EBnTdhOgBsoZtI7gEWV6wT0tkaVnGo4Ya3jp9JRGSogCqaS2BeOqws7hYN7bxlXi"+
"DArm8K35qI882kOE8UlwB3STwJ66cA/BvMvpakTaP/5FShodnxoVjZr+fyDdqsIL"+
"rCGFh+rafjYw5PMMnHFfpoZyY9QWamY/gQTEo8DWHUusElRHGOusiUED+8mrE8qs"+
"TvarLyopuY+59V05GXFp+vBJFLMZwnIohpG33jnyIQr2KP8usLPlQQb+mQBojBPU"+
"YyCySGQoX6M5o2wiRLTsMMnO7IwhLllUdSv5ZN0Y6nNv7efjgcBg71FNvPb8MGtc"+
"coEpjKo3up/L6ZrOoe/lyxNHWdLS4KyPSzW0bVMZIjEZCzFQqVxTNaRKBj44mxaV"+
"+p/A+ewqkUwlM11DdaizPhjjnxYCqVuERQhVMPhxUP2zeYKqBuUI47CfD1xcN5pI"+
"Ogd8JNliU+ThWHLy3Zc4JR/ar2RILywCK3dHVQiZAUjFLsb3rRXVz0ks8cEoBPed"+
"WaoWHjLR7jR+jUU8sVNGB3w8ec1+g9eMBB91aec2ZmST5U7a/dm2P+fqFIVW4yD6"+
"+p/mHPV5/u9K0R9v3RasncHDkHUwIMFvC819WHPD1N7hiOr8t3aC2ev4R5GtzQnB"+
"TXEbnYgQwtKZP9x3sHMfLR93PwiTTXJP3jV+UPlN77NZYBjRuOL8NLHfn/49GgBC"+
"cNGJILgCRDz4AB2sEk3gEC9waGQ+9hr2xUruBe4qFZXZ4pgbFl+oIFx8TrPOZhgi"+
"FfdCmrdLNZ7/hYzb8XXS8IQFpNZ497Jcgced0dCJ1Ji1hrpsgtWU6MhmEY8UDHGs"+
"6g9LPuzGQlwdG8swMVdNu0gBiDJ6YoUDaHeA0INiCo24U+LeNssIxkmCirmLM4lQ"+
"pSdca0LNHg7+mYyDY3ULddU1uBJvICHl/gAQwMmJ9LwJrQER1POViO5TuJlLh/df"+
"1JBk3xUPRth7iksREUwfSu1t1lD7EFuCgxY7GOyU+rSKWoGITblelkeJxKquVZ9+"+
"M1PcJMWRppKCTi6hrGqacW1AhMlJSFAE0nZFqsq2vjrytLjSzOKmCelgKJ/N7xBR"+
"cUsPaxqkdad5vadqDNCxx7Yl7zmLJdj9wumvrWy7LMGL6esxyW233PxKYocP7niQ"+
"D9lgXoGd8cxeQxmL3isdpFixMjDPngp0Xl1YicC82u4Bx/vjRCvu2fx6Rcg6xuiC"+
"3jueGTPfR2knTsF3tLenAw9kntl7gJCWlVs6fQWLXNA7S58zjHR8FOueUjnlIJ+s"+
"V6spTSHE5iwWyiheWczV6AN1Pqs3naaGW1yDhcH938UsND/uaB9JLWVyYyrKeiBF"+
"qjmwI2p+eVl+7OVM10JmQti/VbpwIXfb5MAV2xEktDqbH3yRUQl22nM6CaDDV2v1"+
"dXXoXibrbTr30f/e09GGxKcpCpEGvCz4O/KCpl0SnTMnAZ6Tezfl2HPF0Lhmg80G"+
"H4RJG05LM5nKtcAUXpNlLDrlQUni+kkXbBrSLGHRyvx8jt1hTV6MwacwnpfKZu7E"+
"POOd4FcSZc2kR6MHJkb7mWPRq9Lf3cbjh2cwO5J06HLc1PeNBmKAu9si5vbPwFNP"+
"X64vNbeu57Kbht56PqIHBdtW9rksqoa9p7gquU3pNVQ2BLfpfK78cJWVfuibiBJ9"+
"NA2pvn91oghXTYaN2nOJqMOcJjiYiRZR36QU/xmTo5U8Uhcpxs4fncrm8HS2yfLN"+
"Ls+OQltBOajnqC5jRVZkY/A/2/A1LUQJQKazryKKqY5YsKEm+1sFJWn5Y4k3myvL"+
"x+pwvEn/Y1P3USGSBKsVW62Gf2pjG8+EfteOt9KfS9S7QzB+j0qvqrxa0EtRfh51"+
"3scqsI7CJKK8ddHwVLIV5qV1hhPS0Thm8fnlbuvaabdE1viRUiz2O3P2lrzTla8t"+
"ck/Fpnjnz56QDuR8vS+xI6ubMGJwc27FlMB9Io6n0msXYRybSsnrJHdhy+lcFCNF"+
"9tnoftYz2ANaB2FRnnrrfdLEtnAHDAYYt4owi0/OzgLWdAq73AXJKyIeLSPx0CHF"+
"9tZ7TJPizN3qQZuK1XKjsWXOFK09x/2cTTE5faawLoUFPUhe235CwcizP+z8zKHF"+
"+4iv9DSkiCQoNdLBzzvY98BEms5vlxHHEpBbk4DJKKfJMiK8pQPwyTKMNgZro2qF"+
"JqanJHykPO+mZzZ/cbXTUY+n19F+2rRC7SjHeIViZcT9qLUQMC7GEvLsQnpuVGtu"+
"pj6gfmOBJRQ6vrVaTxZJqOGvlkqekW9AAJqCe0QZ149K5NYEqRquQOSkIMdF1MzU"+
"cKX/oI96seaaUkfwMsWDfys8sMN9dvD+yF3NQUhBk5uxaw6BQq3IYYoqH886V7s9"+
"OPcDRTBNaWRSoVKkLX4IHdO5fui+KaoULMykrLMJ6oQb+6YyLuI+fWheoCbn+Z9R"+
"XiiKauhB9dC2tbvIa94agMiVQ8xv6CQLXPFY1VThFK+G9xzrkBggPByDteH8KRi6"+
"E32ADe3qe5bBgAmVzFWTpA2RkObwAwHbh/RNe1p4GT5LHjwRseXhEAFsjZMKAmXf"+
"4srnn35HwDCZVnGwHw152umefgvlUphvfbbRXXweUyt1YiRDoXFpaSx+N4ff6mvR"+
"mxO2SLyD7n/0FUPTj+yv9uiW9zPD+47cuOJ43UCFaWVV1SbviVIyvNEdKcFPPgI0"+
"HN6EJFQLo13iG/2Nu8lFYIyGd2D938dQA8WUz0fAgFiLYZ1BEgSEAnufgRYmKHiL"+
"E7aQxpSAAA7ql5HGybQIdxYipHlry3s1Tm6M81PvWL9vxJ+ZFEWOSd5cuQF7JYfx"+
"nZvu91M09w6Sfs4r5aUueTQpCUIfz7cGGhclQEcvCpuEnUyIgwWYs8OZ603wYSOl"+
"9KRQP7Zrv5WiRzpteTu/rBYF5GZJAhCt5C1rLhj8dnEfH/pBo29rMuuE9XBY0QI+"+
"Fml3URDuZIiEfPMs6vjrv3g/6JDV6/3qrod2uDAgvgmeYYiMw7EPMMw9gEuvPH2t"+
"2ZeUxf/U+ufTFjtfrpooZ81e4z4uebz+bZn+iLqOgbiV76SYAENz1BAG0KsUH+Pu"+
"fnngcF8z0T1dMDwt6k/NXdhA5pTTAzvF/LC01s16rjBMVYtFfEJnKHvi0RN3xY4F"+
"SwHLeZm+x8t0la9MFiUHmlOcbM2Ys/mPfNrSJ6/Jr5+u71Xfjth58dIqF+vFb0US"+
"01NK66brTFYXY4ac6xKToWWj4aPGVAcMF+dKDOkgULBko+SGqQ9tGfrpvaeY0p4I"+
"PV85H9BqapfLwRCkz+o9CDW9rQbM4U9l0slcaUfjyrklpg0cRK+X4VDWGfTfvRnI"+
"iRReHqkv11EPjlBIMzJ2jZAVhRlKLQ9i0OyDhbySOEGFJQKK8zJxqgIpnGm/R9bR"+
"yJVuHySVBDDwYvCftrE9eTImP5B5pv7rGdPJJ8+ZCP2ZAla2pBmaxvp8LS08872u"+
"jNg3kklTvRfZzrbqHGKtaBvoee3f5BSYw+U1JdbAm+u6PcOufnSHgM3HAM4s+WIK"+
"rV0IpnjjAwx6nwYrMM3I0HRphVYKLKmdvkhvSVHOFk29+BtBiuUz0qbbZnBnrvaX"+
"OJo3ZMnAAKbe5criAOdQreyDVpUCTUv1mlK6FtXAnRnqGPijl+7OnVz35ZW59+oa"+
"48PESX7fuAaM0fGGe00Sqn0Ypz21HghFru53XWBjTHgc5r0trP4h4zJi+8Fuk1tH"+
"99q8+2mYLRSSGyXGjW9afP977xTIWCMzdX3GhcNqhbhANB1kXZBLNtyi/n2CXv0K"+
"WFYIsLbgiJrZtbM8Zx4ZaUWIL34GAHZyee+9DgJgjp6FVNpfNClFTgPNLOpYYH2B"+
"o7WW/u5DWZ53uceTudJPLx7f1Bgkz0Cbe9LKtE4WReAu1wHeUQbjZm9GC6cnhXZX"+
"an3V65YbQCHsV47DmOA2YCBGSquU07+0FJ+nfoE2pS1j+oeMP5uTZUilfsuL20CQ"+
"vN+b43HjSOWGdALdXf4ZHTiOzVBBvY3R1mo8PJGxZF8cQPZyy2LgUj2ExtMdb2Z0"+
"w7dVza8oG24G/hkSsY0k7r5rsdcRHTA7MB8wBwYFKw4DAhoEFOYmJxU3rLf2U8cH"+
"QzO7kSUoTdj4BBQ/7k48RM8bkZtt5E4wi+sgeMv1AAICB9A="+
"-----END CERTIFICATE-----";

            var result = new JsonResult();
            result.Data = new { 
	      pfx = pfx, 
	      friendlyName = friendlyName, 
	      password = password
	    };
            return result;
        }
    }
}


Temas relacionados

System.Security.Cryptography.X509Certificates
System.Web.Mvc
CertificateEnrollmentManager
PasswordVault
Trabajo con certificados
Crear una aplicación de la Tienda Windows para banca
Crear una aplicación de la Tienda Windows para banca: recursos

 

 

Mostrar:
© 2018 Microsoft