dlech.SshAgentLib.ISshKeyExt.FormatSignature C# (CSharp) Метод

FormatSignature() публичный статический Метод

public static FormatSignature ( this key, byte signature ) : byte[]
key this
signature byte
Результат byte[]
        public static byte[] FormatSignature(this ISshKey key, byte[] signature)
        {
            AsymmetricKeyParameter publicKey = key.GetPublicKeyParameters();
              if (publicKey is DsaPublicKeyParameters ||
            publicKey is ECPublicKeyParameters) {
            Asn1Sequence seq = (Asn1Sequence)Asn1Object.FromByteArray(signature);
            BigInteger r = ((DerInteger)seq[0]).PositiveValue;
            BigInteger s = ((DerInteger)seq[1]).PositiveValue;
            BlobBuilder formatedSignature = new BlobBuilder();
            if (publicKey is ECPublicKeyParameters) {
              var bytes = r.ToByteArray().ToList ();
              while (bytes.Count < 20)
            bytes.Insert(0, 0);
              formatedSignature.AddBlob(bytes.ToArray());
              bytes = s.ToByteArray().ToList();
              while (bytes.Count < 20)
            bytes.Insert(0, 0);
              formatedSignature.AddBlob(bytes.ToArray());
            } else {
              var bytes = r.ToByteArrayUnsigned().ToList();
              while (bytes.Count < 20)
            bytes.Insert(0, 0);
              formatedSignature.AddBytes(bytes.ToArray());
              bytes = s.ToByteArrayUnsigned().ToList();
              while (bytes.Count < 20)
            bytes.Insert(0, 0);
              formatedSignature.AddBytes(bytes.ToArray());
            }
            return formatedSignature.GetBlob();
              } else if (publicKey is RsaKeyParameters || publicKey is Ed25519PublicKeyParameter) {
            return signature;
              }
              throw new Exception("Unsupported algorithm");
        }