1package org.bouncycastle.jcajce.provider.asymmetric.dsa; 2 3import java.security.InvalidKeyException; 4import java.security.PrivateKey; 5import java.security.PublicKey; 6import java.security.interfaces.DSAPrivateKey; 7import java.security.interfaces.DSAPublicKey; 8 9import org.bouncycastle.asn1.ASN1ObjectIdentifier; 10import org.bouncycastle.asn1.oiw.OIWObjectIdentifiers; 11import org.bouncycastle.asn1.x9.X9ObjectIdentifiers; 12import org.bouncycastle.crypto.params.AsymmetricKeyParameter; 13import org.bouncycastle.crypto.params.DSAParameters; 14import org.bouncycastle.crypto.params.DSAPrivateKeyParameters; 15import org.bouncycastle.crypto.params.DSAPublicKeyParameters; 16 17/** 18 * utility class for converting jce/jca DSA objects 19 * objects into their org.bouncycastle.crypto counterparts. 20 */ 21public class DSAUtil 22{ 23 public static final ASN1ObjectIdentifier[] dsaOids = 24 { 25 X9ObjectIdentifiers.id_dsa, 26 OIWObjectIdentifiers.dsaWithSHA1 27 }; 28 29 public static boolean isDsaOid( 30 ASN1ObjectIdentifier algOid) 31 { 32 for (int i = 0; i != dsaOids.length; i++) 33 { 34 if (algOid.equals(dsaOids[i])) 35 { 36 return true; 37 } 38 } 39 40 return false; 41 } 42 43 static public AsymmetricKeyParameter generatePublicKeyParameter( 44 PublicKey key) 45 throws InvalidKeyException 46 { 47 if (key instanceof DSAPublicKey) 48 { 49 DSAPublicKey k = (DSAPublicKey)key; 50 51 return new DSAPublicKeyParameters(k.getY(), 52 new DSAParameters(k.getParams().getP(), k.getParams().getQ(), k.getParams().getG())); 53 } 54 55 throw new InvalidKeyException("can't identify DSA public key: " + key.getClass().getName()); 56 } 57 58 static public AsymmetricKeyParameter generatePrivateKeyParameter( 59 PrivateKey key) 60 throws InvalidKeyException 61 { 62 if (key instanceof DSAPrivateKey) 63 { 64 DSAPrivateKey k = (DSAPrivateKey)key; 65 66 return new DSAPrivateKeyParameters(k.getX(), 67 new DSAParameters(k.getParams().getP(), k.getParams().getQ(), k.getParams().getG())); 68 } 69 70 throw new InvalidKeyException("can't identify DSA private key."); 71 } 72} 73