diff options
Diffstat (limited to 'gnu/java/security/key/dss/DSSKeyPairGenerator.java')
-rw-r--r-- | gnu/java/security/key/dss/DSSKeyPairGenerator.java | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/gnu/java/security/key/dss/DSSKeyPairGenerator.java b/gnu/java/security/key/dss/DSSKeyPairGenerator.java index 16af5e048..23dd12796 100644 --- a/gnu/java/security/key/dss/DSSKeyPairGenerator.java +++ b/gnu/java/security/key/dss/DSSKeyPairGenerator.java @@ -151,9 +151,19 @@ public class DSSKeyPairGenerator implements IKeyPairGenerator */ public static final String DSS_PARAMETERS = "gnu.crypto.dss.params"; + /** + * Property name of the preferred encoding format to use when externalizing + * generated instance of key-pairs from this generator. The property is taken + * to be an {@link Integer} that encapsulates an encoding format identifier. + */ + public static final String PREFERRED_ENCODING_FORMAT = "gnu.crypto.dss.encoding"; + /** Default value for the modulus length. */ private static final int DEFAULT_MODULUS_LENGTH = 1024; + /** Default encoding format to use when none was specified. */ + private static final int DEFAULT_ENCODING_FORMAT = Registry.RAW_ENCODING_ID; + /** Initial SHS context. */ private static final int[] T_SHS = new int[] { 0x67452301, 0xEFCDAB89, 0x98BADCFE, 0x10325476, @@ -230,6 +240,9 @@ public class DSSKeyPairGenerator implements IKeyPairGenerator /** Our default source of randomness. */ private PRNG prng = null; + /** Preferred encoding format of generated keys. */ + private int preferredFormat; + // Constructor(s) // ------------------------------------------------------------------------- @@ -325,6 +338,12 @@ public class DSSKeyPairGenerator implements IKeyPairGenerator // do we have a SecureRandom, or should we use our own? rnd = (SecureRandom) attributes.get(SOURCE_OF_RANDOMNESS); + // what is the preferred encoding format + Integer formatID = (Integer) attributes.get(PREFERRED_ENCODING_FORMAT); + preferredFormat = formatID == null + ? DEFAULT_ENCODING_FORMAT + : formatID.intValue(); + // set the seed-key byte[] kb = new byte[20]; // we need 160 bits of randomness nextRandomBytes(kb); @@ -356,8 +375,8 @@ public class DSSKeyPairGenerator implements IKeyPairGenerator BigInteger x = nextX(); BigInteger y = g.modPow(x, p); - PublicKey pubK = new DSSPublicKey(p, q, g, y); - PrivateKey secK = new DSSPrivateKey(p, q, g, x); + PublicKey pubK = new DSSPublicKey(preferredFormat, p, q, g, y); + PrivateKey secK = new DSSPrivateKey(preferredFormat, p, q, g, x); return new KeyPair(pubK, secK); } |