示例#1
0
 public static byte[] GetPrivateKeyFromFile(string privateKeyPath)
 {
     try
     {
         string encodedPrivateKey = File.ReadAllText(privateKeyPath);
         if (encodedPrivateKey.Length != Constants.EncryptionPrivateKeyLength && encodedPrivateKey.Length != Constants.SigningPrivateKeyLength)
         {
             DisplayMessage.Error(ValidationMessages.PrivateKeyFile);
             return(null);
         }
         byte[] privateKey = Convert.FromBase64String(encodedPrivateKey);
         ValidateKeyVersion(privateKey);
         return(privateKey);
     }
     catch (Exception ex) when(ExceptionFilters.AsymmetricKeyHandling(ex))
     {
         if (ex is ArgumentOutOfRangeException)
         {
             DisplayMessage.Exception(ex.GetType().Name, ex.Message);
             return(null);
         }
         DisplayMessage.Exception(ex.GetType().Name, "Unable to retrieve private key.");
         return(null);
     }
 }
示例#2
0
 private static byte[] GetPublicKeyFromFile(string publicKeyPath)
 {
     try
     {
         string encodedPublicKey = File.ReadAllText(publicKeyPath);
         if (encodedPublicKey.Length != Constants.PublicKeyLength)
         {
             DisplayMessage.Error(ValidationMessages.PublicKeyString);
             return(null);
         }
         return(Convert.FromBase64String(encodedPublicKey));
     }
     catch (Exception ex) when(ExceptionFilters.AsymmetricKeyHandling(ex))
     {
         DisplayMessage.Exception(ex.GetType().Name, "Unable to retrieve public key.");
         return(null);
     }
 }
示例#3
0
 public static byte[] EncryptionPublicKeyString(char[] encodedPublicKey)
 {
     try
     {
         byte[] publicKey = Convert.FromBase64CharArray(encodedPublicKey, offset: 0, encodedPublicKey.Length);
         if (publicKey == null)
         {
             return(null);
         }
         byte[] keyAlgorithm = GetKeyAlgorithm(publicKey);
         ValidateEncryptionKey(keyAlgorithm);
         return(RemoveKeyAlgorithmHeader(publicKey));
     }
     catch (Exception ex) when(ExceptionFilters.AsymmetricKeyHandling(ex))
     {
         DisplayMessage.Exception(ex.GetType().Name, "Please enter a valid encryption public key.");
         return(null);
     }
 }
示例#4
0
 public static byte[] SigningPublicKeyFile(string publicKeyPath)
 {
     try
     {
         byte[] publicKey = GetPublicKeyFromFile(publicKeyPath);
         if (publicKey == null)
         {
             return(null);
         }
         byte[] keyAlgorithm = GetKeyAlgorithm(publicKey);
         ValidateSigningKey(keyAlgorithm);
         return(RemoveKeyAlgorithmHeader(publicKey));
     }
     catch (Exception ex) when(ExceptionFilters.AsymmetricKeyHandling(ex))
     {
         DisplayMessage.Exception(ex.GetType().Name, "Please specify a valid signing public key.");
         return(null);
     }
 }
示例#5
0
 public static byte[] EncryptionPrivateKeyFile(string privateKeyPath)
 {
     try
     {
         byte[] privateKey = GetPrivateKeyFromFile(privateKeyPath);
         if (privateKey == null)
         {
             return(null);
         }
         byte[] keyAlgorithm = GetKeyAlgorithm(privateKey);
         ValidateEncryptionKey(keyAlgorithm);
         return(privateKey);
     }
     catch (Exception ex) when(ExceptionFilters.AsymmetricKeyHandling(ex))
     {
         DisplayMessage.Exception(ex.GetType().Name, "Please specify a valid encryption private key.");
         return(null);
     }
 }