create new keys without lots of extra certification
This commit is contained in:
@@ -103,6 +103,15 @@ public class PGPObjectFactory
|
||||
{
|
||||
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:
|
||||
return new PGPPublicKeyRing(in, fingerPrintCalculator);
|
||||
case PacketTags.PUBLIC_SUBKEY:
|
||||
|
||||
@@ -64,7 +64,7 @@ public class PGPSecretKey
|
||||
this(privKey, pubKey, checksumCalculator, false, keyEncryptor);
|
||||
}
|
||||
|
||||
PGPSecretKey(
|
||||
public PGPSecretKey(
|
||||
PGPPrivateKey privKey,
|
||||
PGPPublicKey pubKey,
|
||||
PGPDigestCalculator checksumCalculator,
|
||||
|
||||
@@ -477,4 +477,23 @@ public class PGPSecretKeyRing
|
||||
|
||||
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));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user