Exemplo n.º 1
0
        // internal AND protected
        internal override GpgInterfaceResult ProcessLine(String line)
        {
            String[] parts = line.Split(':');

            switch (parts[0])
            {
                case "sec":
                {
                    Key key = new Key
                    {
                        Trust = GpgConvert.ToTrust(parts[1]),
                        Size = Convert.ToUInt32(parts[2], CultureInfo.InvariantCulture),
                        Algorithm = GpgConvert.ToKeyAlgorithm(parts[3]),
                        Id = new KeyId(parts[4]),
                        CreationDate = GpgConvert.ToDate(parts[5]),
                        ExpirationDate = new GpgDateTime(parts[6]),
                        Type = KeyType.Secret
                    };

                    Keys.Add(key);
                    _last = key;
                    break;
                }

                case "fpr":
                {
                    _last.FingerPrint = new FingerPrint(parts[9]);
                    break;
                }

                case "uid":
                {
                    _last.UserInfos.Add(new KeyUserInfo(Utils.UnescapeGpgString(parts[9])));
                    break;
                }
            }

            return GpgInterfaceResult.Success;
        }
Exemplo n.º 2
0
        // internal AND protected
        internal override GpgInterfaceResult ProcessLine(String line)
        {
            String[] parts = line.Split(':');

            switch (parts[0])
            {
                case "pub":
                {
                    Key key = new Key
                    {
                        Trust = GpgConvert.ToTrust(parts[1]),
                        Size = Convert.ToUInt32(parts[2], CultureInfo.InvariantCulture),
                        Algorithm = GpgConvert.ToKeyAlgorithm(parts[3]),
                        Id = new KeyId(parts[4]),
                        CreationDate = GpgConvert.ToDate(parts[5]),
                        ExpirationDate = new GpgDateTime(parts[6]),
                        OwnerTrust = GpgConvert.ToOwnerTrust(parts[8]),
                        Type = KeyType.Public
                    };

                    if (parts.Length > 11)
                    {
                        String p = parts[11];
                        key.IsDisabled = p.Contains("D");
                    }

                    Keys.Add(key);
                    _lastKey = key;
                    _index = 1;
                    break;
                }

                case "fpr":
                {
                    _lastKey.FingerPrint = new FingerPrint(parts[9]);
                    break;
                }

                case "sub":
                {
                    KeySub sub = new KeySub
                    {
                        Trust = GpgConvert.ToTrust(parts[1]),
                        Size = Convert.ToUInt32(parts[2], CultureInfo.InvariantCulture),
                        Algorithm = GpgConvert.ToKeyAlgorithm(parts[3]),
                        Id = new KeyId(parts[4]),
                        CreationDate = GpgConvert.ToDate(parts[5]),
                        ExpirationDate = new GpgDateTime(parts[6])
                    };

                    if (parts.Length > 11)
                    {
                        String p = parts[11];
                        sub.IsDisabled = p.Contains("D");
                    }

                    _lastKey.SubKeys.Add(sub);
                    _lastKeyNode = sub;
                    break;
                }

                case "uat":
                {
                    if (parts.Length >= 6)
                    {
                        KeyPhoto photo = new KeyPhoto
                        {
                            Index = _index++
                        };

                        _lastKey.Photos.Add(photo);
                        _lastKeyNode = photo;
                    }
                    break;
                }

                case "uid":
                {
                    KeyUserInfo userid = new KeyUserInfo(Utils.UnescapeGpgString(parts[9]))
                    {
                        Index = _index++
                    };

                    _lastKey.UserInfos.Add(userid);
                    _lastKeyNode = userid;
                    break;
                }

                case "sig":
                case "rev":
                {
                    if (_lastKeyNode != null)
                        _lastKeyNode.Signatures.Add(new KeySignature(parts[4], GpgConvert.ToDate(parts[5]), String.Equals(parts[0], "rev", StringComparison.Ordinal)));
                    break;
                }
            }

            return GpgInterfaceResult.Success;
        }