aboutsummaryrefslogtreecommitdiffstats
path: root/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/PgpKeyOperation.java
diff options
context:
space:
mode:
authorVincent Breitmoser <valodim@mugenguild.com>2015-05-20 12:47:02 +0200
committerVincent Breitmoser <valodim@mugenguild.com>2015-05-20 12:47:23 +0200
commitf30900d085f38034708f62f94e46a38f222d4cb7 (patch)
tree0fe97797c1a612d18dddd812ab88eb589de92f9e /OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/PgpKeyOperation.java
parent46cc7f8174d1bedabaafbab05e9461c1cfe72891 (diff)
downloadopen-keychain-f30900d085f38034708f62f94e46a38f222d4cb7.tar.gz
open-keychain-f30900d085f38034708f62f94e46a38f222d4cb7.tar.bz2
open-keychain-f30900d085f38034708f62f94e46a38f222d4cb7.zip
add user id flags to UserAttribute self signatures
Diffstat (limited to 'OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/PgpKeyOperation.java')
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/PgpKeyOperation.java33
1 files changed, 20 insertions, 13 deletions
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/PgpKeyOperation.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/PgpKeyOperation.java
index 89db378a9..2f771d8f2 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/PgpKeyOperation.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/PgpKeyOperation.java
@@ -553,7 +553,8 @@ public class PgpKeyOperation {
PGPSignature cert = generateUserAttributeSignature(
getSignatureGenerator(masterSecretKey, cryptoInput),
cryptoInput.getSignatureTime(),
- masterPrivateKey, masterPublicKey, vector);
+ masterPrivateKey, masterPublicKey, vector,
+ masterKeyFlags, masterKeyExpiry);
modifiedPublicKey = PGPPublicKey.addCertification(modifiedPublicKey, vector, cert);
} catch (NfcInteractionNeeded e) {
nfcSignOps.addHash(e.hashToSign, e.hashAlgo);
@@ -1319,11 +1320,9 @@ public class PgpKeyOperation {
}
- private PGPSignature generateUserIdSignature(
- PGPSignatureGenerator sGen, Date creationTime,
- PGPPrivateKey masterPrivateKey, PGPPublicKey pKey, String userId, boolean primary,
- int flags, long expiry)
- throws IOException, PGPException, SignatureException {
+ private static PGPSignatureSubpacketGenerator generateHashedSelfSigSubpackets(
+ Date creationTime, PGPPublicKey pKey, boolean primary, int flags, long expiry
+ ) {
PGPSignatureSubpacketGenerator hashedPacketsGen = new PGPSignatureSubpacketGenerator();
{
@@ -1357,6 +1356,17 @@ public class PgpKeyOperation {
}
}
+ return hashedPacketsGen;
+ }
+
+ private static PGPSignature generateUserIdSignature(
+ PGPSignatureGenerator sGen, Date creationTime,
+ PGPPrivateKey masterPrivateKey, PGPPublicKey pKey, String userId, boolean primary,
+ int flags, long expiry)
+ throws IOException, PGPException, SignatureException {
+
+ PGPSignatureSubpacketGenerator hashedPacketsGen =
+ generateHashedSelfSigSubpackets(creationTime, pKey, primary, flags, expiry);
sGen.setHashedSubpackets(hashedPacketsGen.generate());
sGen.init(PGPSignature.POSITIVE_CERTIFICATION, masterPrivateKey);
return sGen.generateCertification(userId, pKey);
@@ -1365,15 +1375,12 @@ public class PgpKeyOperation {
private static PGPSignature generateUserAttributeSignature(
PGPSignatureGenerator sGen, Date creationTime,
PGPPrivateKey masterPrivateKey, PGPPublicKey pKey,
- PGPUserAttributeSubpacketVector vector)
+ PGPUserAttributeSubpacketVector vector,
+ int flags, long expiry)
throws IOException, PGPException, SignatureException {
- PGPSignatureSubpacketGenerator hashedPacketsGen = new PGPSignatureSubpacketGenerator();
- {
- /* critical subpackets: we consider those important for a modern pgp implementation */
- hashedPacketsGen.setSignatureCreationTime(true, creationTime);
- }
-
+ PGPSignatureSubpacketGenerator hashedPacketsGen =
+ generateHashedSelfSigSubpackets(creationTime, pKey, false, flags, expiry);
sGen.setHashedSubpackets(hashedPacketsGen.generate());
sGen.init(PGPSignature.POSITIVE_CERTIFICATION, masterPrivateKey);
return sGen.generateCertification(vector, pKey);