예제 #1
0
        public static int PaddingSizeForMethod(UASecurity.PaddingAlgorithm paddingMethod)
        {
            switch (paddingMethod)
            {
            case UASecurity.PaddingAlgorithm.None:
                return(0);

            case UASecurity.PaddingAlgorithm.PKCS1:
                return(11);

            case UASecurity.PaddingAlgorithm.PKCS1_OAEP:
                return(42);

            default:
                throw new Exception();
            }
        }
예제 #2
0
        public static int CalculateEncryptedSize(
            X509Certificate2 cert,
            int messageSize,
            UASecurity.PaddingAlgorithm paddingAlgorithm)
        {
            if (!(cert.PublicKey.Key is RSA))
            {
                throw new Exception("Could not create RSA");
            }

            int num1 = UASecurity.PaddingSizeForMethod(paddingAlgorithm);
            int num2 = UASecurity.CalculatePublicKeyLength(cert) / 8;

            if (num2 < num1)
            {
                throw new Exception();
            }

            int num3 = num2 - num1;

            return((messageSize + num3 - 1) / num3 * num2);
        }