Advertisement
Guest User

13

a guest
Jan 24th, 2020
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.59 KB | None | 0 0
  1. public static string GetCertRequestTemplate(string context)
  2. {
  3. var binaryData = CertificateHelper.GetBinaryDataFromStringContext(context);
  4.  
  5. var certRequest = new Pkcs10CertificationRequest(binaryData);
  6.  
  7. var certRequestInfo = certRequest.GetCertificationRequestInfo();
  8.  
  9. IEnumerable<DerSequence> extensionSequence = certRequestInfo.Attributes.OfType<DerSequence>().Where(o => o.OfType<DerObjectIdentifier>().Any());
  10.  
  11. foreach (var seq in extensionSequence)
  12. {
  13. DerSet extensionSet = seq.OfType<DerSet>().FirstOrDefault();
  14.  
  15. if (extensionSet.OfType<DerSequence>().Any())
  16. {
  17. DerOctetString str = GetAsn1ObjectRecursive<DerOctetString>(extensionSet.OfType<DerSequence>().First(), "1.3.6.1.4.1.311.21.7");
  18.  
  19. if (str != null) return str.Parser.ToString();
  20. }
  21. }
  22.  
  23. return "";
  24. }
  25.  
  26. static T GetAsn1ObjectRecursive<T>(DerSequence sequence, String id) where T : Asn1Object
  27. {
  28. if (sequence.OfType<DerObjectIdentifier>().Any(o => o.Id == id))
  29. {
  30. return sequence.OfType<T>().First();
  31. }
  32.  
  33. foreach (DerSequence subSequence in sequence.OfType<DerSequence>())
  34. {
  35. T value = GetAsn1ObjectRecursive<T>(subSequence, id);
  36. if (value != default(T))
  37. {
  38. return value;
  39. }
  40. }
  41.  
  42. return default(T);
  43. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement