BaseCipherSuitePlugin.SignatureAlgorithmDSA.DEREncodeSignature C# (CSharp) Метод

DEREncodeSignature() приватный статический Метод

private static DEREncodeSignature ( byte signature ) : byte[]
signature byte
Результат byte[]
        private static byte[] DEREncodeSignature(byte[] signature)
        {
            // This is the largest we can encode, adds 8 more bytes
            if (signature.Length > 65526 || (signature.Length%2) != 0) {
                throw new Exception("Invalid signature length");
            }

            int vectorLength = (signature.Length/2 < 128) ? 2+(signature.Length/2) :
                               (signature.Length/2 < 256) ? 3+(signature.Length/2) :
                               4+(signature.Length/2);

            byte[] encoded = new byte[2*vectorLength];
            encoded[0] = 0x02;
            DEREncodeVector(signature, 0, signature.Length/2, encoded, 1);
            encoded[vectorLength] = 0x02;
            DEREncodeVector(signature, signature.Length/2, signature.Length/2, encoded, vectorLength+1);

            int retLength = (encoded.Length < 128) ? 2+encoded.Length :
                            (encoded.Length < 256) ? 3+encoded.Length :
                            4+encoded.Length;

            byte[] ret = new byte[retLength];
            ret[0] = 0x30;
            DEREncodeVector(encoded, 0, encoded.Length, ret, 1);
            return ret;
        }