Example #1
0
        internal static byte[] ExportEncryptedPkcs8PrivateKey(
            AsymmetricAlgorithm key,
            ReadOnlySpan <byte> passwordBytes,
            PbeParameters pbeParameters)
        {
            if (pbeParameters == null)
            {
                throw new ArgumentNullException(nameof(pbeParameters));
            }

            PasswordBasedEncryption.ValidatePbeParameters(
                pbeParameters,
                ReadOnlySpan <char> .Empty,
                passwordBytes);

            if (passwordBytes.Length == 0)
            {
                // Switch to character-based, since that's the native input format.
                return(key.ExportEncryptedPkcs8PrivateKey(ReadOnlySpan <char> .Empty, pbeParameters));
            }

            using (AsnWriter writer = RewriteEncryptedPkcs8PrivateKey(key, passwordBytes, pbeParameters))
            {
                return(writer.Encode());
            }
        }