Advertisement
Guest User

Untitled

a guest
Feb 9th, 2017
1,106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 20.77 KB | None | 0 0
  1. using Org.BouncyCastle.Bcpg;
  2. using Org.BouncyCastle.Bcpg.OpenPgp;
  3. using Org.BouncyCastle.Crypto;
  4. using Org.BouncyCastle.Security;
  5. using Portal.Models;
  6. using System;
  7. using System.Collections.Generic;
  8. using System.IO;
  9. using System.Linq;
  10. using System.Text;
  11. using System.Web;
  12. using System.Web.Mvc;
  13.  
  14. namespace Portal.Controllers
  15. {
  16. //[Authorize]
  17. public class PagoController : Controller
  18. {
  19. // GET: Pago
  20. public ActionResult Index(string year = "")
  21. {
  22.  
  23.  
  24. //String acquirerID = "144";
  25. //String idCommerce = "8022";
  26. String acquirerID = "29";
  27. String idCommerce = "7154";
  28.  
  29. //Parametros de configuracion para VPOS
  30. String purchaseAmount = System.Web.HttpUtility.UrlEncode(Encrypt("5000")).Replace("%5cn", "%0A");
  31. String purchaseCurrencyCode = System.Web.HttpUtility.UrlEncode(Encrypt("604")).Replace("%5cn", "%0A"); //Codigo para nuevos soles
  32. String operationNumber = System.Web.HttpUtility.UrlEncode(Encrypt("999964")).Replace("%5cn", "%0A"); // numero de operacion debe ser unico x transacc
  33.  
  34. //Parametros de configuracion para Wallet
  35.  
  36. //String commerce = "262";
  37. String commerce = "262";
  38. String cardHolderCommerce = EncryptWallet("48126179");
  39. String names = EncryptWallet("Gerardo");
  40. String lastnames = EncryptWallet("Davila Garcia");
  41. String mail = EncryptWallet("a20101616@pucp.pe");
  42.  
  43. //Inicialización del Servicio Web y de parámetros de envío
  44. ServiceReference2.WalletCommerceClient walletCommerce = new ServiceReference2.WalletCommerceClient();
  45. String ansDescription = "";
  46. String codAsoCardHolderWallet = "";
  47. String registerVerification = "";
  48. String date = "";
  49. String hour = "";
  50.  
  51. //Consumo del método RegisterCardHolder y recepción del resultado encriptado
  52. String result1 = walletCommerce.RegisterCardHolder(commerce, cardHolderCommerce, mail, names, lastnames, mail, mail, mail, registerVerification, out ansDescription, out codAsoCardHolderWallet, out date, out hour);
  53. String txtMensajeEncriptado = result1;
  54.  
  55. ViewBag.txtMensajeEncriptado = txtMensajeEncriptado;
  56. ViewBag.cardHolderCommerce = cardHolderCommerce;
  57.  
  58.  
  59. //Llave Publica de ALIGNET para Wallet
  60. String publicKey = "-----BEGIN PGP PUBLIC KEY BLOCK-----" + "\n" +
  61. "Version: BCPG v1.43" + "\n" + "\n" +
  62.  
  63. "mQENBFiBPNIBCACiss1r+qQlc6+hn9gGEvp0/ba1XoVYJP30cOoQSgXwE21NmHNt" + "\n" +
  64. "sjFmGqdZUs/9+Q+BKwt3BjZQZU2Fv3jWWbME40AWgN2cL+K/NWFF7uYp/ljBepT0" + "\n" +
  65. "UkQm2dUV0mKrgBb8H3E59HXM4rofOLmxNGf+f7vzv7mmitSBLoOB36nLNk6z91lU" + "\n" +
  66. "MWNjivRC6UJExQbtm2MI7RvXYnG7hocagZYpoITlW52pP9rv/Ce0OFdFiDgPnE9E" + "\n" +
  67. "qyIdyVwwyQQM7Qfj0S9fqmcxwyE/ww9jQJMbhxi7NPOBc3dlPGnVw+VLFiKtN9kD" + "\n" +
  68. "drJVH9mSOTrWmfETwqlhOpzOlmn0QYuefz/tABEBAAG0IEFnalJEVE5FZ3JtdVVG" + "\n" +
  69. "TnN4V0YtNTY0MzMzNzQzNjgyiQEcBBABAgAGBQJYgTzSAAoJEI2j3PozlD+vmPUI" + "\n" +
  70. "AJ/YIM7QMzPOfoA1eeciQE+oi9n+bc4/BBggSFfxhEbh4QKeyUI+ZLjnNO35I/3r" + "\n" +
  71. "+2EQ8TMwx23aHqUpEUYs/MCn4C4F3+n4lcBeEFFWdN05VrTkXnDcO+8pbu2+ep68" + "\n" +
  72. "J7CGR8KcxWrqeQC9kIu5iO5Voxm7hCRc0lDgSzTtBbw9Llyj3McPoSFuSU8FobEQ" + "\n" +
  73. "NJowKih7zln6JxT1fy1fRL7ZV4bChQre56B08fCcb3qTLSvnWDEEXH3ppuqf18dK" + "\n" +
  74. "uhMi5JDV1fepCS9GzueFTWjnt67wXnOmORG41VI6jzYzoknBYfHEGEA0zTfHsGgW" + "\n" +
  75. "OdDTX4IUe5yu/G6SSjk00HU=" + "\n" +
  76. "=gi3I" + "\n" +
  77. "-----END PGP PUBLIC KEY BLOCK-----";
  78.  
  79. String txtLlavePublica = publicKey;
  80.  
  81. //Llave Privada del Comercio para Wallet
  82. String privateKey = "-----BEGIN PGP PRIVATE KEY BLOCK-----" + "\n" +
  83. "Version: BCPG v1.43" + "\n" + "\n" +
  84.  
  85. "lQPGBFiBPNIBCACyVUq/WwrDEENbvX7s+swBTlwJ486/g+k3q+qiY+gdH22VDTsg" + "\n" +
  86. "8KDPET37O+IlFIQUAx+Z/2sZxjNQyUFr3kUxZTx/4w+v3r31YApXzV64qUe4Nzcq" + "\n" +
  87. "0MznWNGekzuAhMAxPVZESQYO1x2VD07+GCOMPQxy1tQK4dsv2/wJsajKll55hoGC" + "\n" +
  88. "s0uCGqHzOrKra3hMTl+2DDwm0AH65wCy1qSeZ3QVZXF0W6sC/hj9rmrBwRPGRkSE" + "\n" +
  89. "1uooA0c8/OzUD0/cKGUgQj+SYyLtsO8ukUhpmo/1O6quN3y3prunadt3/dUguzH4" + "\n" +
  90. "iqkID1BAynh3BiaPbcZ+O+jFoP696WlfCqk3ABEBAAH+CQMCO4Rw76nnC4dgMz2c" + "\n" +
  91. "eDXLXgdjzHFKW6wbrvwTG8yudqeSltu45lWC2tZGKNhrMjmnOV7jX6d6vCHw4r0o" + "\n" +
  92. "bXl48i3dC6hu1Zs+B5H8t0xwP2ihaQpIITVwN/Mmq5qjqrIjPgsFZc9o1r5CD2rY" + "\n" +
  93. "Z400SX05YkKfoLsEdEPEzBT0KsS+RLSneIfRs2fGa6DAg9akrZIVDRuRaZzYGjVn" + "\n" +
  94. "JSuDJ6dQ8NGLyJha3pc80YuA1MrjW+aEaO62Hppf7w5y+uocs8u9cfGLyaLwBO1A" + "\n" +
  95. "SX2D+XkktozzmcjqrdpHWWXqxRq7q9dZSraJW61qFLWoFdNCx5UX6XO5t/WWCP1D" + "\n" +
  96. "5myLNoNlLjDXo1IMlgWuECKVhW6MiGscwf3YmZEgIrsCz73oYCcZzN8D/4J90B5H" + "\n" +
  97. "FZ1jBJtIpACPWJiNFQfOrfNwdfe8M3xNHhipWj+NvL1Ap21UpSpuDoKm0B1koqqw" + "\n" +
  98. "oDd87Ze7RaVgyQh0KtQSDM9KiTqSAdkEW9GDaR0i88DB3vT8vmFTyIKGERd3A3Oa" + "\n" +
  99. "NS6Qoou+/4c/XYCw8Do8waYMBpFRZKvmFwggF7/6x/8rj01LuhuYLrCXTJW9WaK5" + "\n" +
  100. "mgnJNkV69/AlPDDUrFHqQxJz81px7vdYzBXm8E6qaDl0RFhrdrrMCLUjoj1k3Hmi" + "\n" +
  101. "JkbRDgeYepWi1ryDSzbB3S4HsGUHIgQnvIiIstmtir8G6uW6HDfqQPH91fdqByHE" + "\n" +
  102. "aUVNHGEysmjNre7m4EOTVBaq4gAH4b9xMyKdNNW/tkx/KytPSXMEmyYXxbZa/0je" + "\n" +
  103. "/ciTrMc2kQQc/7L14eOlv5ChbyNTmKS83rieu76upr1GemFY/ZM/kEhv7X+rZZEY" + "\n" +
  104. "RpqO1NheHfbFL9F+Su5aGpWVYlYEMnV2NDfGMb0v7Qvtet8x7iLS2hy4Ps6u6yDo" + "\n" +
  105. "P9WKExH8S4u7tAhBZWx1MTIzNIkBHAQQAQIABgUCWIE80gAKCRBQQMoWQOtcmYJe" + "\n" +
  106. "B/96nsXKhigZLbBZ7iLHwp905FaQvE5d/GHaYU+F4G4HiVuEcfX6IPGwIrTM7c6W" + "\n" +
  107. "/XMnnsOB6lgLj/V0KyNRF8AMy+RD2N0Z0vOCIS9LwT6yhcfjXwUR4iPdPw8q3SKV" + "\n" +
  108. "RywukWveXjjMQZeLGiQfR2ij8hvC4KFizr+ImzUtBqLeHeG8DdRqDqPCPmFQWVW5" + "\n" +
  109. "KvHpyMnjWBVVwkLNXFzyJpAb+/Pb7MD9p/ymGVJZxGlvq1tV1F2AxXN5x1xsSEaO" + "\n" +
  110. "lAU4rJvYC6a/CATqWqx+4KyRYZfFHefb5RLuDGiWRWVqHkaYAbvy0EBGHx2T8v64" + "\n" +
  111. "DwY1TrBTSEJkCryNb+DYVcRg" + "\n" +
  112. "=Jcqf" + "\n" +
  113. "-----END PGP PRIVATE KEY BLOCK-----";
  114.  
  115. String txtLlavePrivada = privateKey;
  116.  
  117. //Clave Wallet (Verificar)
  118.  
  119. //String password = "RPBtNrgQKruEBwEcNd*36689974424";
  120.  
  121. String password = "Aelu1234";
  122.  
  123. //Recepción, desencriptación e interpretación de los parámetros de respuesta
  124.  
  125. Stream messageCryptoStream;
  126. Byte[] messageCryptoByteArray = Encoding.UTF8.GetBytes(result1);
  127. messageCryptoStream = new MemoryStream(messageCryptoByteArray);
  128. Stream privateKeyStream;
  129. Byte[] privateKeyByteArray = Encoding.UTF8.GetBytes(privateKey);
  130. privateKeyStream = new MemoryStream(privateKeyByteArray);
  131. String result = Decrypt(messageCryptoStream, password, privateKeyStream);
  132. String txtMensajeDesencriptado = result;
  133.  
  134. ViewBag.txtMensajeDesencriptado = txtMensajeDesencriptado;
  135.  
  136. //Asignacion a la pagina principal
  137.  
  138. ViewBag.acquirerID = acquirerID;
  139. ViewBag.idCommerce = idCommerce;
  140. ViewBag.purchaseAmount = purchaseAmount;
  141. ViewBag.purchaseCurrencyCode = purchaseCurrencyCode;
  142.  
  143. ViewBag.operationNumber = operationNumber;
  144.  
  145. #region pago item
  146. decimal montoMensualSocio = 200;
  147.  
  148. List<PagoItem> pagosGrabados = new List<PagoItem>();
  149.  
  150. pagosGrabados.Add(new PagoItem
  151. {
  152. mesAPagar = "201701",
  153. mesAPagarShow = "01/2017",
  154. montoMensual = 180,
  155. estadoPago = 1
  156. });
  157.  
  158. year = string.IsNullOrEmpty(year) ? DateTime.Now.Year.ToString() : year;
  159.  
  160.  
  161. Pago pago = new Pago();
  162.  
  163. List<PagoItem> pagos = new List<PagoItem>();
  164.  
  165. PagoItem item;
  166. for (var i = 1; i <= 12; i++)
  167. {
  168. string dia = i.ToString();
  169.  
  170. if (i < 10)
  171. {
  172. dia = string.Format("0{0}", dia);
  173. }
  174. string mesApagar = string.Format("{0}{1}", year, dia);
  175.  
  176. var grabado = pagosGrabados.Where(n => n.mesAPagar == mesApagar).ToList();
  177.  
  178. if (grabado.Count > 0)
  179. {
  180. var pagado = grabado.FirstOrDefault();
  181. item = new PagoItem();
  182. item.mesAPagar = pagado.mesAPagar;
  183. item.montoMensual = pagado.montoMensual;
  184. item.estadoPago = 1;
  185. }
  186. else
  187. {
  188. item = new PagoItem();
  189. item.mesAPagar = string.Format("{0}{1}", year, dia);
  190. item.montoMensual = montoMensualSocio;
  191. item.estadoPago = 0;
  192. }
  193. pagos.Add(item);
  194. }
  195. #endregion
  196. pago.items = pagos;
  197.  
  198.  
  199.  
  200. return View(pago);
  201.  
  202. }
  203.  
  204. [HttpPost]
  205. public ActionResult CreateCart(List<PagoItem> pagos)
  206. {
  207. try
  208. {
  209. SessionItem cart = new SessionItem();
  210. cart.UserName = User.Identity.Name;
  211. cart.UserSID = Guid.NewGuid();
  212. cart.items = pagos;
  213.  
  214. HttpContext.Session["cart"] = cart;
  215.  
  216. // TODO: Add insert logic here
  217. //var directorLN = new DirectorLN();
  218. //directorLN.Insertar(director);
  219. return RedirectToAction("DetallePago");
  220. }
  221. catch (Exception ex)
  222. {
  223. return View("Error");
  224. }
  225. }
  226.  
  227. // GET: Director/Details/5
  228. public ActionResult DetallePago()
  229. {
  230. try
  231. {
  232. return View();
  233. }
  234. catch (Exception ex)
  235. {
  236. return View("Error");
  237. }
  238. }
  239.  
  240. #region Funciones
  241. private String EncryptWallet(string input)
  242. {
  243.  
  244. String publicKeyFile;
  245. PgpPublicKey pubkey;
  246. Stream keyIn;
  247. Byte[] encrypted;
  248. Byte[] original;
  249.  
  250. //Llave Publica de ALIGNET para Wallet
  251. //Llave Publica de ALIGNET para Wallet
  252. String publicKey = "-----BEGIN PGP PUBLIC KEY BLOCK-----" + "\n" +
  253. "Version: BCPG v1.43" + "\n" + "\n" +
  254.  
  255. "mQENBFiBPNIBCACiss1r+qQlc6+hn9gGEvp0/ba1XoVYJP30cOoQSgXwE21NmHNt" + "\n" +
  256. "sjFmGqdZUs/9+Q+BKwt3BjZQZU2Fv3jWWbME40AWgN2cL+K/NWFF7uYp/ljBepT0" + "\n" +
  257. "UkQm2dUV0mKrgBb8H3E59HXM4rofOLmxNGf+f7vzv7mmitSBLoOB36nLNk6z91lU" + "\n" +
  258. "MWNjivRC6UJExQbtm2MI7RvXYnG7hocagZYpoITlW52pP9rv/Ce0OFdFiDgPnE9E" + "\n" +
  259. "qyIdyVwwyQQM7Qfj0S9fqmcxwyE/ww9jQJMbhxi7NPOBc3dlPGnVw+VLFiKtN9kD" + "\n" +
  260. "drJVH9mSOTrWmfETwqlhOpzOlmn0QYuefz/tABEBAAG0IEFnalJEVE5FZ3JtdVVG" + "\n" +
  261. "TnN4V0YtNTY0MzMzNzQzNjgyiQEcBBABAgAGBQJYgTzSAAoJEI2j3PozlD+vmPUI" + "\n" +
  262. "AJ/YIM7QMzPOfoA1eeciQE+oi9n+bc4/BBggSFfxhEbh4QKeyUI+ZLjnNO35I/3r" + "\n" +
  263. "+2EQ8TMwx23aHqUpEUYs/MCn4C4F3+n4lcBeEFFWdN05VrTkXnDcO+8pbu2+ep68" + "\n" +
  264. "J7CGR8KcxWrqeQC9kIu5iO5Voxm7hCRc0lDgSzTtBbw9Llyj3McPoSFuSU8FobEQ" + "\n" +
  265. "NJowKih7zln6JxT1fy1fRL7ZV4bChQre56B08fCcb3qTLSvnWDEEXH3ppuqf18dK" + "\n" +
  266. "uhMi5JDV1fepCS9GzueFTWjnt67wXnOmORG41VI6jzYzoknBYfHEGEA0zTfHsGgW" + "\n" +
  267. "OdDTX4IUe5yu/G6SSjk00HU=" + "\n" +
  268. "=gi3I" + "\n" +
  269. "-----END PGP PUBLIC KEY BLOCK-----";
  270.  
  271. Byte[] byteArray = Encoding.UTF8.GetBytes(publicKey);
  272. keyIn = new MemoryStream(byteArray);
  273. pubkey = ReadPublicKey(keyIn);
  274. original = Encoding.ASCII.GetBytes(input);
  275. encrypted = Encrypt(original, pubkey);
  276. return Encoding.ASCII.GetString(encrypted);
  277. }
  278.  
  279. public String Decrypt(Stream input, String password, Stream privateKeyPath)
  280. {
  281.  
  282. input = PgpUtilities.GetDecoderStream(input);
  283.  
  284.  
  285. PgpObjectFactory pgpObjF = new PgpObjectFactory(input);
  286. PgpEncryptedDataList enc;
  287. PgpObject obj = pgpObjF.NextPgpObject();
  288. if (obj is PgpEncryptedDataList)
  289. enc = (PgpEncryptedDataList)obj;
  290. else
  291. enc = (PgpEncryptedDataList)pgpObjF.NextPgpObject();
  292.  
  293. //AsymmetricKeyParameter akp = new AsymmetricKeyParameter(true);
  294.  
  295. PgpPrivateKey privKey = GetPrivateKey(privateKeyPath, password); // esto esta bien
  296. PgpPublicKeyEncryptedData pbe = enc.GetEncryptedDataObjects().Cast<PgpPublicKeyEncryptedData>().First();
  297. Stream clear;
  298.  
  299. clear = pbe.GetDataStream(privKey);
  300. PgpObjectFactory plainFact = new PgpObjectFactory(clear);
  301. PgpObject message = plainFact.NextPgpObject();
  302. if ((message is PgpCompressedData))
  303. {
  304. PgpCompressedData cData = (PgpCompressedData)message;
  305. Stream compDataIn = cData.GetDataStream();
  306. PgpObjectFactory o = new PgpObjectFactory(compDataIn);
  307. message = o.NextPgpObject();
  308. if ((message is PgpOnePassSignatureList))
  309. {
  310. message = o.NextPgpObject();
  311. PgpLiteralData Ld = null;
  312. Ld = (PgpLiteralData)message;
  313. Stream unc = Ld.GetInputStream();
  314. StreamReader reader = new StreamReader(unc);
  315. return reader.ReadToEnd();
  316. }
  317. else
  318. {
  319. PgpLiteralData Ld = null;
  320. Ld = (PgpLiteralData)message;
  321. Stream unc = Ld.GetInputStream();
  322. StreamReader reader = new StreamReader(unc);
  323. return reader.ReadToEnd();
  324. }
  325. }
  326.  
  327.  
  328.  
  329.  
  330. return null;
  331.  
  332. }
  333.  
  334. //Función para obtener la llave privada del comercio
  335.  
  336.  
  337. private static PgpPrivateKey GetPrivateKey(Stream privateKeyPath, String password)
  338. {
  339. using (Stream inputStream = PgpUtilities.GetDecoderStream(privateKeyPath))
  340. {
  341. PgpSecretKeyRingBundle secretKeyRingBundle = new PgpSecretKeyRingBundle(inputStream);
  342. foreach (PgpSecretKeyRing kRing in secretKeyRingBundle.GetKeyRings())
  343. {
  344. foreach (PgpSecretKey secretKey in kRing.GetSecretKeys())
  345. {
  346. PgpPrivateKey privKey = secretKey.ExtractPrivateKey(password.ToCharArray());
  347. if (object.ReferenceEquals(privKey.Key.GetType(), typeof(Org.BouncyCastle.Crypto.Parameters.RsaPrivateCrtKeyParameters)))
  348. {
  349. return privKey;
  350. }
  351. }
  352. }
  353. }
  354. return null;
  355. }
  356.  
  357.  
  358.  
  359.  
  360.  
  361. private String Encrypt(string input)
  362. {
  363.  
  364. String publicKeyFile;
  365. PgpPublicKey pubKey;
  366. Stream keyIn;
  367. Byte[] encrypted;
  368. Byte[] original;
  369.  
  370. //llave publica alignet pasarela
  371.  
  372. String publicKey = "-----BEGIN PGP PUBLIC KEY BLOCK-----" + "\n" +
  373. "Version: BCPG v1.43" + "\n" + "\n" +
  374.  
  375. "mQENBFiBPNIBCACrfI9WOFybUhQt7SmXT/XzeP16Lhat1nMCw1zS4g4vuYUKQLPg" + "\n" +
  376. "bv/DngXDa0+PD3RKpqs5Dv/8bIBMSrqQcpAC2BomD0/S1HrVWEwsZ5gpXhwfXUAF" + "\n" +
  377. "M8vHx7m7YZpnmIPKZ9DHrniZFabXHuc6GUsUL6MY1+0W41C5XtC4gViFDKTSM2Xb" + "\n" +
  378. "ewnsFqy7l7we+r3ikhGWhdVoO6sRrn7ULa/BPx37DThAQ5y6gL66kcoRJGIbKgtg" + "\n" +
  379. "moUXhTWACYMT45aonnk4/SRkMNgODByd9x8dCbe0nuprs27/dI+FcAg1LM0h20Cv" + "\n" +
  380. "e9ClNhDn1lTKN1sJlwTzlMtL79/sv4LhCYrvABEBAAG0GG1kRmJ0amNqWmNyRUdz" + "\n" +
  381. "eUA1OTQ1NTQ4NYkBHAQQAQIABgUCWIE80gAKCRBwMNEclo7Y0zfPCACi9KFg2wf3" + "\n" +
  382. "TgH2rrkHyJD4Bz6wTH4Ybm624yOf/A0lEiaApqvE98+Dlb7MTjTPVZQKZ2KrK4Xu" + "\n" +
  383. "u0s6TGipDEvA5PNtnZl1rsol+0Ayt6G5tvT6x7PEJmb8GKEZhmsu/XO1qlqlF2S3" + "\n" +
  384. "/TJJ4Lvv0eMaBZFAs4mjDm6FWaStWCrH9i+fRY0QEqVn1dt48apcMuFyAMgn+DVW" + "\n" +
  385. "nmkYPNa9+EWfBR9rfQXN8uMI56zBUVZd7POLCzdJ25Y1mHucqBx7TapfqGyexHHa" + "\n" +
  386. "06khpupLNehw5QsRdM+p61Xn6BCxk2R7cosXl65+yqOfNJHr0Be5kHnQDgaAoZO2" + "\n" +
  387. "7RF9uzzE6onL" + "\n" +
  388. "=SzQd" + "\n" +
  389. "-----END PGP PUBLIC KEY BLOCK-----";
  390.  
  391. // System.Diagnostics.Debug.WriteLine(publicKey);
  392.  
  393.  
  394. Byte[] byteArray = Encoding.UTF8.GetBytes(publicKey);
  395. keyIn = new MemoryStream(byteArray);
  396. pubKey = ReadPublicKey(keyIn);
  397. System.Diagnostics.Debug.WriteLine("BABY COMEBAAAAAAAAAACK");
  398. if (pubKey == null) System.Diagnostics.Debug.WriteLine("NUULL CARAJOO");
  399. else System.Diagnostics.Debug.WriteLine("NO SOY NULL NO SOY NULL ZI");
  400.  
  401.  
  402.  
  403. original = Encoding.ASCII.GetBytes(input);
  404. encrypted = Encrypt(original, pubKey);
  405. return Encoding.ASCII.GetString(encrypted);
  406.  
  407.  
  408. }
  409.  
  410. private byte[] Encrypt(byte[] clearData, PgpPublicKey encKey)
  411. {
  412.  
  413. Boolean armor = true;
  414. String filename = PgpLiteralData.Console;
  415. MemoryStream bOut = new MemoryStream();
  416. Byte[] bytes; //= new byte[16 * 1024];// mi variable
  417.  
  418. PgpCompressedDataGenerator comData = new PgpCompressedDataGenerator(Org.BouncyCastle.Bcpg.CompressionAlgorithmTag.Zip);
  419. Stream cos = comData.Open(bOut);
  420. PgpLiteralDataGenerator lData = new PgpLiteralDataGenerator();
  421. Stream pOut = lData.Open(cos, PgpLiteralData.Binary, filename, clearData.Length, DateTime.UtcNow);
  422.  
  423. pOut.Write(clearData, 0, clearData.Length);
  424. lData.Close();
  425. comData.Close();
  426.  
  427. PgpEncryptedDataGenerator cPk = new PgpEncryptedDataGenerator(SymmetricKeyAlgorithmTag.Cast5, new SecureRandom());
  428. cPk.AddMethod(encKey);
  429. bytes = bOut.ToArray();
  430. MemoryStream encOut = new MemoryStream();
  431. Stream os = encOut;
  432.  
  433. if (armor)
  434. {
  435. os = new ArmoredOutputStream(os);
  436. }
  437.  
  438. Stream cOut = cPk.Open(os, bytes.Length);
  439. cOut.Write(bytes, 0, bytes.Length);
  440. cOut.Close();
  441.  
  442. if (armor)
  443. {
  444. os.Close();
  445. }
  446. encOut.Close();
  447. return encOut.ToArray();
  448. }
  449.  
  450. private PgpPublicKey ReadPublicKey(Stream inputStream)
  451. {
  452. inputStream = PgpUtilities.GetDecoderStream(inputStream);
  453. PgpPublicKeyRingBundle pgpPub = new PgpPublicKeyRingBundle(inputStream);
  454.  
  455. foreach (PgpPublicKeyRing kRing in pgpPub.GetKeyRings())
  456. {
  457. foreach (PgpPublicKey k in kRing.GetPublicKeys())
  458. {
  459. if (k.IsEncryptionKey) return k;
  460. }
  461. }
  462.  
  463. //return null;
  464. throw new ArgumentException("No se puede encontrar la llave encriptada en key ring amix");
  465.  
  466. }
  467.  
  468.  
  469. #endregion Funciones
  470.  
  471. }
  472. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement