Esempio n. 1
0
 public GetEncryptionKeyOperation(string publicKeyExponent, string publicKeyModulus)
 {
     RequestBody = new PublicKeyData
     {
         exponent = publicKeyExponent,
         modulus  = publicKeyModulus
     };
 }
Esempio n. 2
0
 private static byte[] EncryptWithPublicKey(PublicKeyData info, byte[] data)
 {
     using (RSACryptoServiceProvider encryptionProvider = new RSACryptoServiceProvider(info.KeySize))
     {
         encryptionProvider.ImportParameters(info.GetParameters());
         return(encryptionProvider.Encrypt(data, true));
     }
 }
Esempio n. 3
0
        internal static byte[] CreateNewPublicKey(RSAParameters parameters, int keySize)
        {
            PublicKeyData resultData   = new PublicKeyData(parameters, keySize);
            MemoryStream  resultStream = new MemoryStream();
            var           resultWriter = new BinaryWriter(resultStream);

            resultData.Write(resultWriter);
            return(resultStream.ToArray());
        }
Esempio n. 4
0
        public async Task EvaluateEmptyPublicKeyProducesCorrectMessage()
        {
            PublicKeyData publicKeyData = new PublicKeyData("");
            PublicKeyType publicKeyType = new PublicKeyType("", KeyType.Rsa);

            DkimRecord dkimRecord = new DkimRecord(null, new List <Tag> {
                publicKeyData, publicKeyType
            });

            List <EvaluationError> result = await _selectorShouldBeWellConfigured.Evaluate(dkimRecord);

            Assert.AreEqual(1, result.Count);
            Assert.AreEqual(Guid.Parse("7150fec3-0464-4cd5-b774-d1d7bcff7ec5"), result[0].Id);
        }
Esempio n. 5
0
        public EvaluationResult <Tag> Parse(string value)
        {
            //first remove all legal folding white space
            string trimmedValues = _fwsRegex.Replace(value ?? string.Empty, string.Empty);

            //then check if the result if a valid base 64 string
            PublicKeyData publicKeyData = new PublicKeyData(value);

            if (!_base64Regex.IsMatch(trimmedValues))
            {
                EvaluationError error = new EvaluationError(Id, EvaluationErrorType.Error,
                                                            string.Format(DKimEvaluatorParsersResources.InvalidPublicKeyErrorMessage, value ?? "null"),
                                                            string.Format(DKimEvaluatorParsersMarkdownResources.InvalidPublicKeyErrorMessage, value ?? "null"));

                return(new EvaluationResult <Tag>(publicKeyData, error));
            }

            return(new EvaluationResult <Tag>(publicKeyData));
        }
Esempio n. 6
0
 internal static IStrongNameKeyInfo LoadStrongNameKeyData(Stream targetStream, bool @private = true)
 {
     if (@private)
     {
         PrivateKeyData targetData = new PrivateKeyData();
         using (var targetReader = new BinaryReader(targetStream))
             targetData.Read(targetReader);
         var data = targetData.GetData();
         StrongNamePrivateKeyInfo result = new StrongNamePrivateKeyInfo(data.Item3, data.Item2, data.Item1, (int)targetData.header.BitLength);
         return(result);
     }
     else
     {
         PublicKeyData targetData = new PublicKeyData();
         using (var targetReader = new BinaryReader(targetStream))
             targetData.Read(targetReader);
         return(targetData);
     }
 }
Esempio n. 7
0
 internal static IStrongNameKeyInfo LoadStrongNameKeyData(byte[] data, bool @private = true)
 {
     if (@private)
     {
         using (MemoryStream targetStream = new MemoryStream(data))
         {
             PrivateKeyData targetData = new PrivateKeyData();
             using (var targetReader = new BinaryReader(targetStream))
                 targetData.Read(targetReader);
             var resultData = targetData.GetData();
             StrongNamePrivateKeyInfo result = new StrongNamePrivateKeyInfo(resultData.Item3, resultData.Item2, resultData.Item1, (int)targetData.header.BitLength);
             return(result);
         }
     }
     else
     {
         if (data.SequenceEqual(StandardPublicKey))
         {
             return(StandardPublicKeyStream.StandardPublicKey);
         }
         else if (PublicKeyData.IsDataProperLength(data))
         {
             using (MemoryStream targetStream = new MemoryStream(data))
             {
                 PublicKeyData targetData = new PublicKeyData();
                 using (var targetReader = new BinaryReader(targetStream))
                     targetData.Read(targetReader);
                 return(targetData);
             }
         }
         else
         {
             throw new ArgumentException("publicKey");
         }
     }
 }
Esempio n. 8
0
        public Task <List <EvaluationError> > Evaluate(DkimRecord record)
        {
            PublicKeyData publicKeyData = record.Tags.OfType <PublicKeyData>().FirstOrDefault();
            PublicKeyType publicKeyType = record.Tags.OfType <PublicKeyType>().FirstOrDefault();

            List <EvaluationError> errors = new List <EvaluationError>();

            if (publicKeyData != null && publicKeyType != null && !string.IsNullOrEmpty(publicKeyData.Value))
            {
                if (publicKeyType.KeyType != KeyType.Unknown)
                {
                    switch (publicKeyType.KeyType)
                    {
                    case KeyType.Ed25519:
                        break;

                    case KeyType.Rsa:
                        string key = publicKeyData.Value.TrimEnd(';');


                        if (!_publicKeyEvaluator.TryGetKeyLengthSize(key, out int keyLength))
                        {
                            Guid Error3Id = Guid.Parse("21B09D43-685C-4CAE-989E-7194CA093863");

                            errors.Add(new EvaluationError(Error3Id, EvaluationErrorType.Error,
                                                           DKimEvaluatorRulesResources.CorruptPublicKeyErrorMessage,
                                                           DKimEvaluatorRulesMarkdownResources.CorruptPublicKeyErrorMessage));
                        }
                        else if (keyLength < 2048)
                        {
                            if (keyLength < 1024)
                            {
                                Guid Error1Id = Guid.Parse("C740A1B0-394B-4397-A4E6-178C3137A84D");

                                errors.Add(new EvaluationError(Error1Id, EvaluationErrorType.Error,
                                                               string.Format(DKimEvaluatorRulesResources.PublicKeyIsToShortErrorMessage,
                                                                             keyLength),
                                                               string.Empty));
                            }
                            else if (keyLength >= 1024 && keyLength < 2048)
                            {
                                Guid Error2Id = Guid.Parse("D16BE8D5-8ED6-4DD0-A8AA-C8F1380A8D3C");

                                errors.Add(new EvaluationError(Error2Id, EvaluationErrorType.Warning,
                                                               string.Format(
                                                                   DKimEvaluatorRulesResources.PublicKeyIsToShortUseLongerErrorMessage,
                                                                   keyLength),
                                                               string.Empty));
                            }
                        }
                        break;
                    }
                }
                else
                {
                    Guid Error3Id = Guid.Parse("FF2380B4-8DE6-4B97-B69A-F3382EBF3DE2");

                    errors.Add(new EvaluationError(Error3Id, EvaluationErrorType.Error,
                                                   DKimEvaluatorRulesResources.IncorrectPublicKeyConfigured,
                                                   DKimEvaluatorRulesMarkdownResources.IncorrectPublicKeyConfigured));
                }
            }
            else
            {
                Guid Error3Id = Guid.Parse("7150FEC3-0464-4CD5-B774-D1D7BCFF7EC5");

                errors.Add(new EvaluationError(Error3Id, EvaluationErrorType.Info,
                                               DKimEvaluatorRulesResources.NullPublicKeyConfigured,
                                               DKimEvaluatorRulesMarkdownResources.NullPublicKeyConfigured));
            }

            return(Task.FromResult(errors));
        }