RevocationKey.cs 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. #if !BESTHTTP_DISABLE_ALTERNATE_SSL && (!UNITY_WEBGL || UNITY_EDITOR)
  2. #pragma warning disable
  3. using System;
  4. using System.Text;
  5. namespace BestHTTP.SecureProtocol.Org.BouncyCastle.Bcpg
  6. {
  7. /// <summary>
  8. /// Represents revocation key OpenPGP signature sub packet.
  9. /// </summary>
  10. public class RevocationKey
  11. : SignatureSubpacket
  12. {
  13. // 1 octet of class,
  14. // 1 octet of public-key algorithm ID,
  15. // 20 octets of fingerprint
  16. public RevocationKey(
  17. bool isCritical,
  18. bool isLongLength,
  19. byte[] data)
  20. : base(SignatureSubpacketTag.RevocationKey, isCritical, isLongLength, data)
  21. {
  22. }
  23. public RevocationKey(
  24. bool isCritical,
  25. RevocationKeyTag signatureClass,
  26. PublicKeyAlgorithmTag keyAlgorithm,
  27. byte[] fingerprint)
  28. : base(SignatureSubpacketTag.RevocationKey, isCritical, false,
  29. CreateData(signatureClass, keyAlgorithm, fingerprint))
  30. {
  31. }
  32. private static byte[] CreateData(
  33. RevocationKeyTag signatureClass,
  34. PublicKeyAlgorithmTag keyAlgorithm,
  35. byte[] fingerprint)
  36. {
  37. byte[] data = new byte[2 + fingerprint.Length];
  38. data[0] = (byte)signatureClass;
  39. data[1] = (byte)keyAlgorithm;
  40. Array.Copy(fingerprint, 0, data, 2, fingerprint.Length);
  41. return data;
  42. }
  43. public virtual RevocationKeyTag SignatureClass
  44. {
  45. get { return (RevocationKeyTag)this.GetData()[0]; }
  46. }
  47. public virtual PublicKeyAlgorithmTag Algorithm
  48. {
  49. get { return (PublicKeyAlgorithmTag)this.GetData()[1]; }
  50. }
  51. public virtual byte[] GetFingerprint()
  52. {
  53. byte[] data = this.GetData();
  54. byte[] fingerprint = new byte[data.Length - 2];
  55. Array.Copy(data, 2, fingerprint, 0, fingerprint.Length);
  56. return fingerprint;
  57. }
  58. }
  59. }
  60. #pragma warning restore
  61. #endif