使用c#中的bouncy castle API查找PGP密钥的到期日期

时间:2017-08-29 12:11:38

标签: c# encryption bouncycastle pgp

我使用以下网址

在线创建了PGP私钥和公钥

https://pgpkeygen.com/

姓名:测试

电子邮件:test@domain.com

算法:RSA

密钥大小:1024

过期:2年

密码:测试

公钥

-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: Keybase OpenPGP v1.0.0
Comment: https://keybase.io/crypto

xo0EWaVVewEEALOBxiFQ5Y9f8QHouZKrxZPe6RuaLWUNl0maY/iQn/cBZ5WjNxQn
yN0Nzki/+0l8eqfvAbB7jStmOQEthhlnSqSkq8HfSJxQMr3kGjVS5ijXmYFmR2/y
5+IUizjMhLLPIFD0z607yVbDUTwXAjJP0EB75rABErV2CkM062KxE4pzABEBAAHN
FnRlc3QgPHRlc3RAZG9tYWluLmNvbT7CrQQTAQoAFwUCWaVVewIbLwMLCQcDFQoI
Ah4BAheAAAoJEOM5TJlGW7I5KAID/jkPUnbuOOD5UtK3jnLPwaQSpUY/3E4+xoMU
NykQr+nNqEti2FcX1Hj0C1TVh1ZnMzSQiLAe1hNOVsL8le6fUOHqhA+iURmtLG/4
dNLyZHqhV7jgxT+c752Io7Nq7vtSxFowZFnx5Vq3NZLKt6AXrOpCL1NvcStAIU7S
2E+ed6y0zo0EWaVVewEEAKZGk4tVAXmN12xFAwJ50tLNWXy2Yt5S/6b26pwNN6UI
vruCGOjOLBm+mzOxCn65AvUC6LmtY/FUe1bvEkX2BzcwzSBEeLOhWKVlC/HM17bt
CTTzYHT79EfQ4LFF0IEXlb/zcV/GrrZAWMWm/coJDW614xnJvBKEDDpY608YmHmr
ABEBAAHCwIMEGAEKAA8FAlmlVXsFCQ8JnAACGy4AqAkQ4zlMmUZbsjmdIAQZAQoA
BgUCWaVVewAKCRABpbX1cvywdWW5A/4rKjnOGhJmUPrgsJpcub0sWGwrKInlnm9C
GJ5YfjZmXslsi04+2vq7/fy7QbWjW5Opi/oXKmJpGombPpxgat8OaDyRtszkxkOw
H8h9TXd61EatIMca1aZUVIhgrW7QNcylamnCuDDxMmEIgDMLLBanxV1oW+VOvNXw
AGDu5Ao7D6xLA/0UbFYDwBkQJPoiqLAkUSTsyaPh4DRBvBbPbE/WhtzfD5c/mnI4
d3z15LfKrTNHlAuT5QGh6EGpEN0nsR612ITgwKdewtDiZdGz+eRllmgZqaxHE2lO
m3gZT1Y2uawndgbwCkhXQBrCr49X4j0oq0BYKAuaIfACr4Qz0A3hGEHQAc6NBFml
VXsBBAC7mn7VScFf65+7eaMD46lGZnbi09ZADPO/JgE3waZpBXqAKt6KbVxM0dZ6
TxsvQIOPhw+RnBSbTtwowg8tv9sxIRRc8XDNfV+wCbad7KfrH3qP1uTSwkxuGoJh
ElBc+X6oiUFMXWfRUew99iw8/N8SEVN7BVpFJxJT6eyXnV7a7QARAQABwsCDBBgB
CgAPBQJZpVV7BQkPCZwAAhsuAKgJEOM5TJlGW7I5nSAEGQEKAAYFAlmlVXsACgkQ
eedXyOefITNXuQP9E2/sk7M+bscCakQNb0AuGqbiAlTRYEhIGaIfDQmYHPQAjT6E
QuWjmDqvqBxKNUv8yOy7OFC3G5Uh9mOQyMANI7c7EEwryUZKBgWTmbAuoCyJ49SG
19/toWqPbhT28XyAXGm+kiy62dgply1Pa4jgVkhqeTdmvkgK6TiggI7psfvGFwP+
JVJrJRpecmkhC68zJtYD3XyFR9r3BRDDVVad3B3zh3TmJHjSygDDAV74gi5KUaAD
aoJrnopTu14i4wnYPn7Z03NeobLxdYBZ8Tlp2kdtdEBLlzU4rx8syA9EPKakwDHC
3JaAq/P2sDtODzz1SY5lMksJF9PaPqyNEQjEAU7UBcA=
=8zi3
-----END PGP PUBLIC KEY BLOCK-----

私钥

-----BEGIN PGP PRIVATE KEY BLOCK-----
Version: Keybase OpenPGP v1.0.0
Comment: https://keybase.io/crypto

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
F9PaPqyNEQjEAU7UBcA=
=HuWA
-----END PGP PRIVATE KEY BLOCK-----

我试图在C#中使用Bouncy Castle API找出密钥的到期日期。 以下是代码

 private PgpPublicKey ReadPublicKey(string publicKeyPath)
        {
            using (Stream keyIn = File.OpenRead(publicKeyPath))
            using (var inputStream = PgpUtilities.GetDecoderStream(keyIn))
            {
                var publicKeyRingBundle = new PgpPublicKeyRingBundle(inputStream);
                var foundKey = GetFirstPublicKey(publicKeyRingBundle);
                if (foundKey != null)
                    return foundKey;
            }
            throw new ArgumentException("No encryption key found in public key ring.");
        }



private PgpPublicKey GetFirstPublicKey(PgpPublicKeyRingBundle publicKeyRingBundle)
    {
        foreach (PgpPublicKeyRing kRing in publicKeyRingBundle.GetKeyRings())
        {
            var key = kRing.GetPublicKeys()
                .Cast<PgpPublicKey>()
                .Where(k => k.IsEncryptionKey)
                .FirstOrDefault();

            if (key != null)
                return key;
        }
        return null;
    }

该函数被称为

PgpPublicKey key = ReadPublicKey(pathToPublicKey)

并尝试找出有效日期

key.ValidDays

但它总是返回0.即没有过期。

我能够访问其他属性,如密钥大小,名称和电子邮件等

我在这里想念的是什么?或者还有什么需要做的吗?

0 个答案:

没有答案