more probable changes for spongycastle2

This commit is contained in:
Ashley Hughes 2014-01-31 15:19:07 +00:00
parent f7afa0c820
commit 7897c6fadd
2 changed files with 28 additions and 0 deletions

View File

@ -103,6 +103,15 @@ public class PGPObjectFactory
{ {
throw new IOException("can't create secret key object: " + e); throw new IOException("can't create secret key object: " + e);
} }
case PacketTags.SECRET_SUBKEY:
try
{
return PGPSecretKeyRing.readSubkey(in, fingerPrintCalculator);
}
catch (PGPException e)
{
throw new IOException("processing error: " + e.getMessage());
}
case PacketTags.PUBLIC_KEY: case PacketTags.PUBLIC_KEY:
return new PGPPublicKeyRing(in, fingerPrintCalculator); return new PGPPublicKeyRing(in, fingerPrintCalculator);
case PacketTags.PUBLIC_SUBKEY: case PacketTags.PUBLIC_SUBKEY:

View File

@ -477,4 +477,23 @@ public class PGPSecretKeyRing
return new PGPSecretKeyRing(keys, secRing.extraPubKeys); return new PGPSecretKeyRing(keys, secRing.extraPubKeys);
} }
static PGPSecretKey readSubkey(BCPGInputStream in, KeyFingerPrintCalculator fingerPrintCalculator)
throws IOException, PGPException
{
SecretSubkeyPacket sub = (SecretSubkeyPacket)in.readPacket();
//
// ignore GPG comment packets if found.
//
while (in.nextPacketTag() == PacketTags.EXPERIMENTAL_2)
{
in.readPacket();
}
TrustPacket subTrust = readOptionalTrustPacket(in);
List sigList = readSignaturesAndTrust(in);
return new PGPSecretKey(sub, new PGPPublicKey(sub.getPublicKeyPacket(), subTrust, sigList, fingerPrintCalculator));
}
} }