Skip to content

Commit

Permalink
Refactor on IssuerKeyID, bcpg.sig.Utils. Add comments to PGPKeyEncryp…
Browse files Browse the repository at this point in the history
…tionMethodGenerator, make iv in SecretKeyPacket is copied when processing. Refactor on SExpression.
  • Loading branch information
gefeili committed Apr 18, 2024
1 parent e6b4ba8 commit 8385a2c
Show file tree
Hide file tree
Showing 5 changed files with 20 additions and 29 deletions.
5 changes: 3 additions & 2 deletions pg/src/main/java/org/bouncycastle/bcpg/SecretKeyPacket.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import java.io.ByteArrayOutputStream;
import java.io.IOException;

import org.bouncycastle.util.Arrays;
import org.bouncycastle.util.io.Streams;

/**
Expand Down Expand Up @@ -208,7 +209,7 @@ public SecretKeyPacket(
this.aeadAlgorithm = aeadAlgorithm;
this.s2kUsage = s2kUsage;
this.s2k = s2k;
this.iv = iv;
this.iv = Arrays.clone(iv);
this.secKeyData = secKeyData;

if (s2k != null && s2k.getType() == S2K.ARGON_2 && s2kUsage != USAGE_AEAD)
Expand Down Expand Up @@ -242,7 +243,7 @@ public int getS2KUsage()

public byte[] getIV()
{
return iv;
return Arrays.clone(iv);
}

public S2K getS2K()
Expand Down
19 changes: 3 additions & 16 deletions pg/src/main/java/org/bouncycastle/bcpg/sig/IssuerKeyID.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import org.bouncycastle.bcpg.SignatureSubpacket;
import org.bouncycastle.bcpg.SignatureSubpacketTags;
import org.bouncycastle.util.Pack;

/**
* packet giving the issuer key ID.
Expand All @@ -12,18 +13,7 @@ public class IssuerKeyID
protected static byte[] keyIDToBytes(
long keyId)
{
byte[] data = new byte[8];

data[0] = (byte)(keyId >> 56);
data[1] = (byte)(keyId >> 48);
data[2] = (byte)(keyId >> 40);
data[3] = (byte)(keyId >> 32);
data[4] = (byte)(keyId >> 24);
data[5] = (byte)(keyId >> 16);
data[6] = (byte)(keyId >> 8);
data[7] = (byte)keyId;

return data;
return Pack.longToBigEndian(keyId);
}

public IssuerKeyID(
Expand All @@ -43,9 +33,6 @@ public IssuerKeyID(

public long getKeyID()
{
long keyID = ((long)(data[0] & 0xff) << 56) | ((long)(data[1] & 0xff) << 48) | ((long)(data[2] & 0xff) << 40) | ((long)(data[3] & 0xff) << 32)
| ((long)(data[4] & 0xff) << 24) | ((data[5] & 0xff) << 16) | ((data[6] & 0xff) << 8) | (data[7] & 0xff);

return keyID;
return Pack.bigEndianToLong(data, 0);
}
}
14 changes: 4 additions & 10 deletions pg/src/main/java/org/bouncycastle/bcpg/sig/Utils.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package org.bouncycastle.bcpg.sig;

import org.bouncycastle.util.Pack;

class Utils
{
/**
Expand Down Expand Up @@ -55,19 +57,11 @@ static long timeFromBytes(byte[] bytes)
throw new IllegalStateException("Byte array has unexpected length. Expected length 4, got " + bytes.length);
}

return ((long)(bytes[0] & 0xff) << 24)
| ((bytes[1] & 0xff) << 16)
| ((bytes[2] & 0xff) << 8)
| (bytes[3] & 0xff);
return Pack.bigEndianToInt(bytes, 0);
}

static byte[] timeToBytes(long t)
{
byte[] data = new byte[4];
data[0] = (byte)(t >> 24);
data[1] = (byte)(t >> 16);
data[2] = (byte)(t >> 8);
data[3] = (byte)t;
return data;
return Pack.intToBigEndian((int)t);
}
}
2 changes: 1 addition & 1 deletion pg/src/main/java/org/bouncycastle/gpg/SExpression.java
Original file line number Diff line number Diff line change
Expand Up @@ -165,7 +165,7 @@ private static SExpression parseExpression(InputStream src, SExpression expr, By
else if (c == '#')
{
consumeUntilSkipWhiteSpace(src, accumulator, '#');
expr.addValue(Hex.decode(Strings.fromByteArray(accumulator.toByteArray())));
expr.addValue(Hex.decode(accumulator.toByteArray()));
}
else if (c == '"')
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package org.bouncycastle.openpgp.operator;

import org.bouncycastle.bcpg.ContainedPacket;
import org.bouncycastle.bcpg.SymmetricKeyAlgorithmTags;
import org.bouncycastle.openpgp.PGPEncryptedDataGenerator;
import org.bouncycastle.openpgp.PGPException;

Expand All @@ -9,6 +10,14 @@
*/
public abstract class PGPKeyEncryptionMethodGenerator
{
/**
* Generates a packet encoding the details of this encryption method.
*
* @param encAlgorithm the {@link SymmetricKeyAlgorithmTags encryption algorithm} being used
* @param sessionInfo session data generated by the encrypted data generator.
* @return a packet encoding the provided information and the configuration of this instance.
* @throws PGPException if an error occurs constructing the packet.
*/
public abstract ContainedPacket generate(int encAlgorithm, byte[] sessionInfo)
throws PGPException;

Expand Down

0 comments on commit 8385a2c

Please sign in to comment.