Java 类java.security.interfaces.DSAPrivateKey 实例源码
项目:FirefoxData-android
文件:DSACryptoImplementation.java
public static SigningPrivateKey createPrivateKey(BigInteger x, BigInteger p, BigInteger q, BigInteger g) throws NoSuchAlgorithmException, InvalidKeySpecException {
if (x == null) {
throw new IllegalArgumentException("x must not be null");
}
if (p == null) {
throw new IllegalArgumentException("p must not be null");
}
if (q == null) {
throw new IllegalArgumentException("q must not be null");
}
if (g == null) {
throw new IllegalArgumentException("g must not be null");
}
KeySpec keySpec = new DSAPrivateKeySpec(x, p, q, g);
KeyFactory keyFactory = KeyFactory.getInstance("DSA");
DSAPrivateKey privateKey = (DSAPrivateKey) keyFactory.generatePrivate(keySpec);
return new DSASigningPrivateKey(privateKey);
}
项目:wycheproof
文件:DsaTest.java
/** Extract the k that was used to sign the signature. Validates the k if check == true. */
BigInteger extractK(byte[] signature, BigInteger h, DSAPrivateKey priv, boolean check)
throws Exception {
BigInteger x = priv.getX();
BigInteger q = priv.getParams().getQ();
BigInteger r = extractR(signature);
BigInteger s = extractS(signature);
BigInteger k = x.multiply(r).add(h).multiply(s.modInverse(q)).mod(q);
if (check) {
BigInteger p = priv.getParams().getP();
BigInteger g = priv.getParams().getG();
BigInteger r2 = g.modPow(k, p).mod(q);
assertEquals(r.toString(), r2.toString());
}
return k;
}
项目:javify
文件:DSSSignature.java
private BigInteger[] computeRS(final byte[] digestBytes)
{
final BigInteger p = ((DSAPrivateKey) privateKey).getParams().getP();
final BigInteger q = ((DSAPrivateKey) privateKey).getParams().getQ();
final BigInteger g = ((DSAPrivateKey) privateKey).getParams().getG();
final BigInteger x = ((DSAPrivateKey) privateKey).getX();
final BigInteger m = new BigInteger(1, digestBytes);
BigInteger k, r, s;
final byte[] kb = new byte[20]; // we'll use 159 bits only
while (true)
{
this.nextRandomBytes(kb);
k = new BigInteger(1, kb);
k.clearBit(159);
r = g.modPow(k, p).mod(q);
if (r.equals(BigInteger.ZERO))
continue;
s = m.add(x.multiply(r)).multiply(k.modInverse(q)).mod(q);
if (s.equals(BigInteger.ZERO))
continue;
break;
}
return new BigInteger[] { r, s };
}
项目:cf-env
文件:CryptoParserTest.java
@Test
public void shouldParseAPKCS1DSAPrivateKey() throws Exception {
String keyString = "" +
"-----BEGIN DSA PRIVATE KEY-----\n" +
"MIH5AgEAAkEA/8/aIwYwD4TUzee5AQvz4Bk24nAozkCJOOK/WEtLmlfdK3pWeZ7W\n" +
"ttD65kJFgFZE1hDi0D0ipuXwFIJhqzoMcQIVAORLzKnx1wfBs3Mngrh3XfyqOmUl\n" +
"AkEAvjDa+zB5mfAfIaYOgpuJzEGnLnj9VGLZEGVC/w3l5ML3PblMCLMniHzIT3UQ\n" +
"jQtTwOfiWa7RdAFrmjU7OQxJCQJBALhjbXYy4uG3yMV+h/Sd6SgxqgDr17n1dk2Q\n" +
"H2r/4sMppgtMgCLNvb/3kuvK8novAEaHDEojWUkwtsSrsgXFLacCFARPJrGexYk7\n" +
"b3cNk+Qay5BqrbF3\n" +
"-----END DSA PRIVATE KEY-----";
Key key = CryptoParser.parseKey(keyString);
assertThat(((DSAPrivateKey) key).getX(), hasToString(startsWith("2460109266")));
}
项目:keystore-explorer
文件:ExportKeyPairPrivateKeyAction.java
private byte[] getPvkEncodedPrivateKey(PrivateKey privateKey, int keyType, Password password,
boolean strongEncryption) throws CryptoException, IOException {
byte[] encoded = null;
if (password != null) {
if (privateKey instanceof RSAPrivateCrtKey) {
encoded = MsPvkUtil.getEncrypted((RSAPrivateCrtKey) privateKey, keyType, password, strongEncryption);
} else {
encoded = MsPvkUtil.getEncrypted((DSAPrivateKey) privateKey, password, strongEncryption);
}
} else {
if (privateKey instanceof RSAPrivateCrtKey) {
encoded = MsPvkUtil.get((RSAPrivateCrtKey) privateKey, keyType);
} else {
encoded = MsPvkUtil.get((DSAPrivateKey) privateKey);
}
}
return encoded;
}
项目:keystore-explorer
文件:DViewPrivateKey.java
private void populateDialog() throws CryptoException {
KeyInfo keyInfo = KeyPairUtil.getKeyInfo(privateKey);
jtfAlgorithm.setText(keyInfo.getAlgorithm());
Integer keyLength = keyInfo.getSize();
if (keyLength != null) {
jtfKeySize.setText(MessageFormat.format(res.getString("DViewPrivateKey.jtfKeySize.text"), "" + keyLength));
} else {
jtfKeySize.setText(MessageFormat.format(res.getString("DViewPrivateKey.jtfKeySize.text"), "?"));
}
jtfFormat.setText(privateKey.getFormat());
jtfEncoded.setText("0x" + new BigInteger(1, privateKey.getEncoded()).toString(16).toUpperCase());
jtfEncoded.setCaretPosition(0);
if ((privateKey instanceof RSAPrivateKey) || (privateKey instanceof DSAPrivateKey)) {
jbFields.setEnabled(true);
} else {
jbFields.setEnabled(false);
}
}
项目:keystore-explorer
文件:KeyStoreState.java
protected boolean isEntryPrivateKeyEqual(KeyStoreState targetState, String alias, Password password)
throws GeneralSecurityException {
Key currentKey = keyStore.getKey(alias, password.toCharArray());
Key targetKey = targetState.getKeyStore().getKey(alias, password.toCharArray());
// JDKDSAPrivateKey has no equals method defined
if ((currentKey instanceof JDKDSAPrivateKey) || (targetKey instanceof JDKDSAPrivateKey)) {
DSAPrivateKey currentDsaKey = (DSAPrivateKey) currentKey;
DSAPrivateKey targetDsaKey = (DSAPrivateKey) targetKey;
return currentDsaKey.getX().equals(targetDsaKey.getX())
&& currentDsaKey.getParams().getG().equals(targetDsaKey.getParams().getG())
&& currentDsaKey.getParams().getP().equals(targetDsaKey.getParams().getP())
&& currentDsaKey.getParams().getQ().equals(targetDsaKey.getParams().getQ());
} else {
return currentKey.equals(targetKey);
}
}
项目:FMTech
文件:DsaPrivateKey.java
private DsaPrivateKey initFromJson()
throws KeyczarException
{
this.publicKey.initFromJson();
BigInteger localBigInteger1 = new BigInteger(Base64Coder.decodeWebSafe(this.x));
BigInteger localBigInteger2 = new BigInteger(Base64Coder.decodeWebSafe(this.publicKey.p));
BigInteger localBigInteger3 = new BigInteger(Base64Coder.decodeWebSafe(this.publicKey.q));
BigInteger localBigInteger4 = new BigInteger(Base64Coder.decodeWebSafe(this.publicKey.g));
try
{
this.jcePrivateKey = ((DSAPrivateKey)KeyFactory.getInstance("DSA").generatePrivate(new DSAPrivateKeySpec(localBigInteger1, localBigInteger2, localBigInteger3, localBigInteger4)));
return this;
}
catch (GeneralSecurityException localGeneralSecurityException)
{
throw new KeyczarException(localGeneralSecurityException);
}
}
项目:jvm-stm
文件:DSSSignature.java
private BigInteger[] computeRS(final byte[] digestBytes)
{
final BigInteger p = ((DSAPrivateKey) privateKey).getParams().getP();
final BigInteger q = ((DSAPrivateKey) privateKey).getParams().getQ();
final BigInteger g = ((DSAPrivateKey) privateKey).getParams().getG();
final BigInteger x = ((DSAPrivateKey) privateKey).getX();
final BigInteger m = new BigInteger(1, digestBytes);
BigInteger k, r, s;
final byte[] kb = new byte[20]; // we'll use 159 bits only
while (true)
{
this.nextRandomBytes(kb);
k = new BigInteger(1, kb);
k.clearBit(159);
r = g.modPow(k, p).mod(q);
if (r.equals(BigInteger.ZERO))
continue;
s = m.add(x.multiply(r)).multiply(k.modInverse(q)).mod(q);
if (s.equals(BigInteger.ZERO))
continue;
break;
}
return new BigInteger[] { r, s };
}
项目:androidpn_enhanced_client
文件:DNSSEC.java
static void
checkAlgorithm(PrivateKey key, int alg) throws UnsupportedAlgorithmException
{
switch (alg) {
case Algorithm.RSAMD5:
case Algorithm.RSASHA1:
case Algorithm.RSA_NSEC3_SHA1:
case Algorithm.RSASHA256:
case Algorithm.RSASHA512:
if (! (key instanceof RSAPrivateKey))
throw new IncompatibleKeyException();
break;
case Algorithm.DSA:
case Algorithm.DSA_NSEC3_SHA1:
if (! (key instanceof DSAPrivateKey))
throw new IncompatibleKeyException();
break;
default:
throw new UnsupportedAlgorithmException(alg);
}
}
项目:mc_backup
文件:DSACryptoImplementation.java
public static SigningPrivateKey createPrivateKey(BigInteger x, BigInteger p, BigInteger q, BigInteger g) throws NoSuchAlgorithmException, InvalidKeySpecException {
if (x == null) {
throw new IllegalArgumentException("x must not be null");
}
if (p == null) {
throw new IllegalArgumentException("p must not be null");
}
if (q == null) {
throw new IllegalArgumentException("q must not be null");
}
if (g == null) {
throw new IllegalArgumentException("g must not be null");
}
KeySpec keySpec = new DSAPrivateKeySpec(x, p, q, g);
KeyFactory keyFactory = KeyFactory.getInstance("DSA");
DSAPrivateKey privateKey = (DSAPrivateKey) keyFactory.generatePrivate(keySpec);
return new DSASigningPrivateKey(privateKey);
}
项目:Zom-Android
文件:OtrAndroidKeyManagerImpl.java
public void regenerateLocalPublicKey(KeyFactory factory, String fullUserId, DSAPrivateKey privKey) {
String userId = Address.stripResource(fullUserId);
BigInteger x = privKey.getX();
DSAParams params = privKey.getParams();
BigInteger y = params.getG().modPow(x, params.getP());
DSAPublicKeySpec keySpec = new DSAPublicKeySpec(y, params.getP(), params.getQ(), params.getG());
PublicKey pubKey;
try {
pubKey = factory.generatePublic(keySpec);
storeLocalPublicKey(userId, pubKey);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
项目:haox
文件:PKCS8Key.java
public PublicKey getPublicKey() throws GeneralSecurityException {
if (privateKey instanceof DSAPrivateKey) {
DSAPrivateKey dsa = (DSAPrivateKey) privateKey;
DSAParams params = dsa.getParams();
BigInteger g = params.getG();
BigInteger p = params.getP();
BigInteger q = params.getQ();
BigInteger x = dsa.getX();
BigInteger y = q.modPow( x, p );
DSAPublicKeySpec dsaKeySpec = new DSAPublicKeySpec(y, p, q, g);
return KeyFactory.getInstance("DSA").generatePublic(dsaKeySpec);
} else if (privateKey instanceof RSAPrivateCrtKey) {
RSAPrivateCrtKey rsa = (RSAPrivateCrtKey) privateKey;
RSAPublicKeySpec rsaKeySpec = new RSAPublicKeySpec(
rsa.getModulus(),
rsa.getPublicExponent()
);
return KeyFactory.getInstance("RSA").generatePublic(rsaKeySpec);
} else {
throw new GeneralSecurityException("Not an RSA or DSA key");
}
}
项目:In-the-Box-Fork
文件:DSAPrivateKeyTest.java
/**
* @tests java.security.interfaces.DSAPrivateKey
* #getX()
*/
@TestTargetNew(
level = TestLevel.COMPLETE,
notes = "",
method = "getX",
args = {}
)
public void test_getX() throws Exception {
KeyPairGenerator keyGen = KeyPairGenerator.getInstance("DSA");
keyGen.initialize(new DSAParameterSpec(Util.P, Util.Q, Util.G),
new SecureRandom(new MySecureRandomSpi(), null) {
});
KeyPair keyPair = keyGen.generateKeyPair();
DSAPrivateKey key = (DSAPrivateKey) keyPair.getPrivate();
assertNotNull("Invalid X value", key.getX());
}
项目:j2ssh-maverick
文件:Ssh2DsaPrivateKey.java
public Ssh2DsaPrivateKey(BigInteger p, BigInteger q, BigInteger g,
BigInteger x, BigInteger y) throws SshException {
try {
KeyFactory kf = JCEProvider
.getProviderForAlgorithm(JCEAlgorithms.JCE_DSA) == null ? KeyFactory
.getInstance(JCEAlgorithms.JCE_DSA) : KeyFactory
.getInstance(JCEAlgorithms.JCE_DSA, JCEProvider
.getProviderForAlgorithm(JCEAlgorithms.JCE_DSA));
DSAPrivateKeySpec spec = new DSAPrivateKeySpec(x, p, q, g);
prv = (DSAPrivateKey) kf.generatePrivate(spec);
pub = new Ssh2DsaPublicKey(p, q, g, y);
} catch (Throwable e) {
throw new SshException(e);
}
}
项目:j2ssh-maverick
文件:JCEComponentManager.java
public SshKeyPair generateDsaKeyPair(int bits) throws SshException {
try {
KeyPairGenerator keyGen = JCEProvider
.getProviderForAlgorithm(JCE_DSA) == null ? KeyPairGenerator
.getInstance(JCE_DSA) : KeyPairGenerator.getInstance(
JCE_DSA, JCEProvider.getProviderForAlgorithm(JCE_DSA));
keyGen.initialize(bits);
KeyPair keypair = keyGen.genKeyPair();
PrivateKey privateKey = keypair.getPrivate();
PublicKey publicKey = keypair.getPublic();
SshKeyPair pair = new SshKeyPair();
pair.setPrivateKey(new Ssh2DsaPrivateKey(
(DSAPrivateKey) privateKey, (DSAPublicKey) publicKey));
pair.setPublicKey(new Ssh2DsaPublicKey((DSAPublicKey) publicKey));
return pair;
} catch (java.security.NoSuchAlgorithmException e) {
throw new SshException(e);
}
}
项目:JamVM-PH
文件:DSSSignature.java
private BigInteger[] computeRS(final byte[] digestBytes)
{
final BigInteger p = ((DSAPrivateKey) privateKey).getParams().getP();
final BigInteger q = ((DSAPrivateKey) privateKey).getParams().getQ();
final BigInteger g = ((DSAPrivateKey) privateKey).getParams().getG();
final BigInteger x = ((DSAPrivateKey) privateKey).getX();
final BigInteger m = new BigInteger(1, digestBytes);
BigInteger k, r, s;
final byte[] kb = new byte[20]; // we'll use 159 bits only
while (true)
{
this.nextRandomBytes(kb);
k = new BigInteger(1, kb);
k.clearBit(159);
r = g.modPow(k, p).mod(q);
if (r.equals(BigInteger.ZERO))
continue;
s = m.add(x.multiply(r)).multiply(k.modInverse(q)).mod(q);
if (s.equals(BigInteger.ZERO))
continue;
break;
}
return new BigInteger[] { r, s };
}
项目:CryptMeme
文件:DSATest.java
private void checkPrivateKey(DSAPrivateKey k2, PrivateKey sKey)
{
if (!k2.getX().equals(((DSAPrivateKey)sKey).getX()))
{
fail("private number not decoded properly");
}
if (!k2.getParams().getG().equals(((DSAPrivateKey)sKey).getParams().getG()))
{
fail("private generator not decoded properly");
}
if (!k2.getParams().getP().equals(((DSAPrivateKey)sKey).getParams().getP()))
{
fail("private p value not decoded properly");
}
if (!k2.getParams().getQ().equals(((DSAPrivateKey)sKey).getParams().getQ()))
{
fail("private q value not decoded properly");
}
}
项目:CryptMeme
文件:SigUtil.java
/**
* Use if SigType is known.
*
* @param pk JAVA key!
*/
public static SigningPrivateKey fromJavaKey(PrivateKey pk, SigType type)
throws GeneralSecurityException {
switch (type.getBaseAlgorithm()) {
case DSA:
return fromJavaKey((DSAPrivateKey) pk);
case EC:
return fromJavaKey((ECPrivateKey) pk, type);
case EdDSA:
return fromJavaKey((EdDSAPrivateKey) pk, type);
case RSA:
return fromJavaKey((RSAPrivateKey) pk, type);
default:
throw new IllegalArgumentException();
}
}
项目:mtools
文件:DSACoder.java
/**
* 生成密钥
*
* @param seed
* 种子
* @return 密钥对象
* @throws Exception
*/
public static Map<String, Object> initKey(String seed) throws Exception {
KeyPairGenerator keygen = KeyPairGenerator.getInstance(ALGORITHM);
// 初始化随机产生器
SecureRandom secureRandom = new SecureRandom();
secureRandom.setSeed(seed.getBytes());
keygen.initialize(KEY_SIZE, secureRandom);
KeyPair keys = keygen.genKeyPair();
DSAPublicKey publicKey = (DSAPublicKey) keys.getPublic();
DSAPrivateKey privateKey = (DSAPrivateKey) keys.getPrivate();
Map<String, Object> map = new HashMap<String, Object>(2);
map.put(PUBLIC_KEY, publicKey);
map.put(PRIVATE_KEY, privateKey);
return map;
}
项目:test4java
文件:DSACoder.java
/**
* 生成密钥
*
* @param seed 种子
* @return 密钥对象
* @throws Exception
*/
public static Map<String, Object> initKey(String seed) throws Exception {
KeyPairGenerator keygen = KeyPairGenerator.getInstance(ALGORITHM);
// 初始化随机产生器
SecureRandom secureRandom = new SecureRandom();
secureRandom.setSeed(seed.getBytes());
keygen.initialize(KEY_SIZE, secureRandom);
KeyPair keys = keygen.genKeyPair();
DSAPublicKey publicKey = (DSAPublicKey) keys.getPublic();
DSAPrivateKey privateKey = (DSAPrivateKey) keys.getPrivate();
Map<String, Object> map = new HashMap<String, Object>(2);
map.put(PUBLIC_KEY, publicKey);
map.put(PRIVATE_KEY, privateKey);
return map;
}
项目:classpath
文件:DSSSignature.java
private BigInteger[] computeRS(final byte[] digestBytes)
{
final BigInteger p = ((DSAPrivateKey) privateKey).getParams().getP();
final BigInteger q = ((DSAPrivateKey) privateKey).getParams().getQ();
final BigInteger g = ((DSAPrivateKey) privateKey).getParams().getG();
final BigInteger x = ((DSAPrivateKey) privateKey).getX();
final BigInteger m = new BigInteger(1, digestBytes);
BigInteger k, r, s;
final byte[] kb = new byte[20]; // we'll use 159 bits only
while (true)
{
this.nextRandomBytes(kb);
k = new BigInteger(1, kb);
k.clearBit(159);
r = g.modPow(k, p).mod(q);
if (r.equals(BigInteger.ZERO))
continue;
s = m.add(x.multiply(r)).multiply(k.modInverse(q)).mod(q);
if (s.equals(BigInteger.ZERO))
continue;
break;
}
return new BigInteger[] { r, s };
}
项目:prive-android
文件:OtrAndroidKeyManagerImpl.java
public void regenerateLocalPublicKey(KeyFactory factory, String fullUserId, DSAPrivateKey privKey) {
String userId = Address.stripResource(fullUserId);
BigInteger x = privKey.getX();
DSAParams params = privKey.getParams();
BigInteger y = params.getG().modPow(x, params.getP());
DSAPublicKeySpec keySpec = new DSAPublicKeySpec(y, params.getP(), params.getQ(), params.getG());
PublicKey pubKey;
try {
pubKey = factory.generatePublic(keySpec);
} catch (InvalidKeySpecException e) {
throw new RuntimeException(e);
}
storeLocalPublicKey(userId, pubKey);
}
项目:irma_future_id
文件:DSATest.java
private void checkPrivateKey(DSAPrivateKey k2, PrivateKey sKey)
{
if (!k2.getX().equals(((DSAPrivateKey)sKey).getX()))
{
fail("private number not decoded properly");
}
if (!k2.getParams().getG().equals(((DSAPrivateKey)sKey).getParams().getG()))
{
fail("private generator not decoded properly");
}
if (!k2.getParams().getP().equals(((DSAPrivateKey)sKey).getParams().getP()))
{
fail("private p value not decoded properly");
}
if (!k2.getParams().getQ().equals(((DSAPrivateKey)sKey).getParams().getQ()))
{
fail("private q value not decoded properly");
}
}
项目:bc-java
文件:DSATest.java
private void checkPrivateKey(DSAPrivateKey k2, PrivateKey sKey)
{
if (!k2.getX().equals(((DSAPrivateKey)sKey).getX()))
{
fail("private number not decoded properly");
}
if (!k2.getParams().getG().equals(((DSAPrivateKey)sKey).getParams().getG()))
{
fail("private generator not decoded properly");
}
if (!k2.getParams().getP().equals(((DSAPrivateKey)sKey).getParams().getP()))
{
fail("private p value not decoded properly");
}
if (!k2.getParams().getQ().equals(((DSAPrivateKey)sKey).getParams().getQ()))
{
fail("private q value not decoded properly");
}
}
项目:j2ssh-fork
文件:SshDssKeyPair.java
/**
*
*
* @param bits
*/
public void generate(int bits) {
try {
// Initialize the generator
KeyPairGenerator keyGen = KeyPairGenerator.getInstance("DSA");
keyGen.initialize(bits, ConfigurationLoader.getRND());
KeyPair pair = keyGen.generateKeyPair();
// Get the keys
DSAPrivateKey prvKey = (DSAPrivateKey) pair.getPrivate();
DSAPublicKey pubKey = (DSAPublicKey) pair.getPublic();
// Set the private key (the public is automatically generated)
setPrivateKey(new SshDssPrivateKey(prvKey));
} catch (NoSuchAlgorithmException nsae) {
}
}
项目:springboot-shiro-cas-mybatis
文件:GoogleAccountsServiceTests.java
public static GoogleAccountsService getGoogleAccountsService() throws Exception {
final PublicKeyFactoryBean pubKeyFactoryBean = new PublicKeyFactoryBean();
pubKeyFactoryBean.setAlgorithm("DSA");
final PrivateKeyFactoryBean privKeyFactoryBean = new PrivateKeyFactoryBean();
privKeyFactoryBean.setAlgorithm("DSA");
final ClassPathResource pubKeyResource = new ClassPathResource("DSAPublicKey01.key");
final ClassPathResource privKeyResource = new ClassPathResource("DSAPrivateKey01.key");
pubKeyFactoryBean.setLocation(pubKeyResource);
privKeyFactoryBean.setLocation(privKeyResource);
pubKeyFactoryBean.afterPropertiesSet();
privKeyFactoryBean.afterPropertiesSet();
final DSAPrivateKey privateKey = (DSAPrivateKey) privKeyFactoryBean.getObject();
final DSAPublicKey publicKey = (DSAPublicKey) pubKeyFactoryBean.getObject();
final MockHttpServletRequest request = new MockHttpServletRequest();
final String samlRequest = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
+ "<samlp:AuthnRequest xmlns:samlp=\"urn:oasis:names:tc:SAML:2.0:protocol\" "
+ "ID=\"5545454455\" Version=\"2.0\" IssueInstant=\"Value\" "
+ "ProtocolBinding=\"urn:oasis:names.tc:SAML:2.0:bindings:HTTP-Redirect\" "
+ "ProviderName=\"https://localhost:8443/myRutgers\" AssertionConsumerServiceURL=\"https://localhost:8443/myRutgers\"/>";
request.setParameter(SamlProtocolConstants.PARAMETER_SAML_REQUEST, encodeMessage(samlRequest));
request.setParameter(SamlProtocolConstants.PARAMETER_SAML_RELAY_STATE, "RelayStateAddedHere");
final RegisteredService regSvc = mock(RegisteredService.class);
when(regSvc.getUsernameAttributeProvider()).thenReturn(new DefaultRegisteredServiceUsernameProvider());
final ServicesManager servicesManager = mock(ServicesManager.class);
when(servicesManager.findServiceBy(any(Service.class))).thenReturn(regSvc);
return GoogleAccountsService.createServiceFrom(request, privateKey, publicKey, servicesManager);
}
项目:ipack
文件:JDKDSAPrivateKey.java
public boolean equals(
Object o)
{
if (!(o instanceof DSAPrivateKey))
{
return false;
}
DSAPrivateKey other = (DSAPrivateKey)o;
return this.getX().equals(other.getX())
&& this.getParams().getG().equals(other.getParams().getG())
&& this.getParams().getP().equals(other.getParams().getP())
&& this.getParams().getQ().equals(other.getParams().getQ());
}
项目:ipack
文件:KeyFactorySpi.java
protected Key engineTranslateKey(
Key key)
throws InvalidKeyException
{
if (key instanceof DSAPublicKey)
{
return new BCDSAPublicKey((DSAPublicKey)key);
}
else if (key instanceof DSAPrivateKey)
{
return new BCDSAPrivateKey((DSAPrivateKey)key);
}
throw new InvalidKeyException("key type unknown");
}
项目:ipack
文件:DSAUtil.java
static public AsymmetricKeyParameter generatePrivateKeyParameter(
PrivateKey key)
throws InvalidKeyException
{
if (key instanceof DSAPrivateKey)
{
DSAPrivateKey k = (DSAPrivateKey)key;
return new DSAPrivateKeyParameters(k.getX(),
new DSAParameters(k.getParams().getP(), k.getParams().getQ(), k.getParams().getG()));
}
throw new InvalidKeyException("can't identify DSA private key.");
}
项目:ipack
文件:BCDSAPrivateKey.java
public boolean equals(
Object o)
{
if (!(o instanceof DSAPrivateKey))
{
return false;
}
DSAPrivateKey other = (DSAPrivateKey)o;
return this.getX().equals(other.getX())
&& this.getParams().getG().equals(other.getParams().getG())
&& this.getParams().getP().equals(other.getParams().getP())
&& this.getParams().getQ().equals(other.getParams().getQ());
}
项目:ipack
文件:CMSSignedGenerator.java
protected String getEncOID(
PrivateKey key,
String digestOID)
{
String encOID = null;
if (key instanceof RSAPrivateKey || "RSA".equalsIgnoreCase(key.getAlgorithm()))
{
encOID = ENCRYPTION_RSA;
}
else if (key instanceof DSAPrivateKey || "DSA".equalsIgnoreCase(key.getAlgorithm()))
{
encOID = ENCRYPTION_DSA;
if (!digestOID.equals(DIGEST_SHA1))
{
throw new IllegalArgumentException("can't mix DSA with anything but SHA1");
}
}
else if ("ECDSA".equalsIgnoreCase(key.getAlgorithm()) || "EC".equalsIgnoreCase(key.getAlgorithm()))
{
encOID = (String)EC_ALGORITHMS.get(digestOID);
if (encOID == null)
{
throw new IllegalArgumentException("can't mix ECDSA with anything but SHA family digests");
}
}
else if (key instanceof GOST3410PrivateKey || "GOST3410".equalsIgnoreCase(key.getAlgorithm()))
{
encOID = ENCRYPTION_GOST3410;
}
else if ("ECGOST3410".equalsIgnoreCase(key.getAlgorithm()))
{
encOID = ENCRYPTION_ECGOST3410;
}
return encOID;
}
项目:ipack
文件:TimeStampTokenGenerator.java
private String getSigAlgorithm(
PrivateKey key,
String digestOID)
{
String enc = null;
if (key instanceof RSAPrivateKey || "RSA".equalsIgnoreCase(key.getAlgorithm()))
{
enc = "RSA";
}
else if (key instanceof DSAPrivateKey || "DSA".equalsIgnoreCase(key.getAlgorithm()))
{
enc = "DSA";
}
else if ("ECDSA".equalsIgnoreCase(key.getAlgorithm()) || "EC".equalsIgnoreCase(key.getAlgorithm()))
{
enc = "ECDSA";
}
else if (key instanceof GOST3410PrivateKey || "GOST3410".equalsIgnoreCase(key.getAlgorithm()))
{
enc = "GOST3410";
}
else if ("ECGOST3410".equalsIgnoreCase(key.getAlgorithm()))
{
enc = CMSSignedGenerator.ENCRYPTION_ECGOST3410;
}
return TSPUtil.getDigestAlgName(digestOID) + "with" + enc;
}
项目:cas4.0.x-server-wechat
文件:GoogleAccountsServiceTests.java
public static GoogleAccountsService getGoogleAccountsService() throws Exception {
final PublicKeyFactoryBean pubKeyFactoryBean = new PublicKeyFactoryBean();
pubKeyFactoryBean.setAlgorithm("DSA");
final PrivateKeyFactoryBean privKeyFactoryBean = new PrivateKeyFactoryBean();
privKeyFactoryBean.setAlgorithm("DSA");
final ClassPathResource pubKeyResource = new ClassPathResource("DSAPublicKey01.key");
final ClassPathResource privKeyResource = new ClassPathResource("DSAPrivateKey01.key");
pubKeyFactoryBean.setLocation(pubKeyResource);
privKeyFactoryBean.setLocation(privKeyResource);
pubKeyFactoryBean.afterPropertiesSet();
privKeyFactoryBean.afterPropertiesSet();
final DSAPrivateKey privateKey = (DSAPrivateKey) privKeyFactoryBean.getObject();
final DSAPublicKey publicKey = (DSAPublicKey) pubKeyFactoryBean.getObject();
final MockHttpServletRequest request = new MockHttpServletRequest();
final String SAMLRequest = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
+ "<samlp:AuthnRequest xmlns:samlp=\"urn:oasis:names:tc:SAML:2.0:protocol\" "
+ "ID=\"5545454455\" Version=\"2.0\" IssueInstant=\"Value\" "
+ "ProtocolBinding=\"urn:oasis:names.tc:SAML:2.0:bindings:HTTP-Redirect\" "
+ "ProviderName=\"https://localhost:8443/myRutgers\" AssertionConsumerServiceURL=\"https://localhost:8443/myRutgers\"/>";
request.setParameter("SAMLRequest", encodeMessage(SAMLRequest));
return GoogleAccountsService.createServiceFrom(request, privateKey, publicKey, "username");
}
项目:lams
文件:SecurityHelper.java
/**
* Build Java DSA private key from base64 encoding.
*
* @param base64EncodedKey base64-encoded DSA private key
* @return a native Java DSAPrivateKey
* @throws KeyException thrown if there is an error constructing key
*/
public static DSAPrivateKey buildJavaDSAPrivateKey(String base64EncodedKey) throws KeyException {
PrivateKey key = buildJavaPrivateKey(base64EncodedKey);
if (! (key instanceof DSAPrivateKey)) {
throw new KeyException("Generated key was not a DSAPrivateKey instance");
}
return (DSAPrivateKey) key;
}
项目:FirefoxData-android
文件:DSACryptoImplementation.java
public static BrowserIDKeyPair generateKeyPair(int keysize)
throws NoSuchAlgorithmException {
final KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("DSA");
keyPairGenerator.initialize(keysize);
final KeyPair keyPair = keyPairGenerator.generateKeyPair();
DSAPrivateKey privateKey = (DSAPrivateKey) keyPair.getPrivate();
DSAPublicKey publicKey = (DSAPublicKey) keyPair.getPublic();
return new BrowserIDKeyPair(new DSASigningPrivateKey(privateKey), new DSAVerifyingPublicKey(publicKey));
}
项目:BiglyBT
文件:DSAUtil.java
static public AsymmetricKeyParameter generatePrivateKeyParameter(
PrivateKey key)
throws InvalidKeyException
{
if (key instanceof DSAPrivateKey)
{
DSAPrivateKey k = (DSAPrivateKey)key;
return new DSAPrivateKeyParameters(k.getX(),
new DSAParameters(k.getParams().getP(), k.getParams().getQ(), k.getParams().getG()));
}
throw new InvalidKeyException("can't identify DSA private key.");
}
项目:Direct-File-Downloader
文件:DSAUtil.java
static public AsymmetricKeyParameter generatePrivateKeyParameter(
PrivateKey key)
throws InvalidKeyException
{
if (key instanceof DSAPrivateKey)
{
DSAPrivateKey k = (DSAPrivateKey)key;
return new DSAPrivateKeyParameters(k.getX(),
new DSAParameters(k.getParams().getP(), k.getParams().getQ(), k.getParams().getG()));
}
throw new InvalidKeyException("can't identify DSA private key.");
}
项目:wycheproof
文件:DsaTest.java
@SuppressWarnings("InsecureCryptoUsage")
public void testKeyGeneration(int keysize) throws Exception {
KeyPairGenerator generator = KeyPairGenerator.getInstance("DSA");
generator.initialize(keysize);
KeyPair keyPair = generator.generateKeyPair();
DSAPrivateKey priv = (DSAPrivateKey) keyPair.getPrivate();
DSAParams params = priv.getParams();
assertEquals(keysize, params.getP().bitLength());
// The NIST standard does not fully specify the size of q that
// must be used for a given key size. Hence there are differences.
// For example if keysize = 2048, then OpenSSL uses 256 bit q's by default,
// but the SUN provider uses 224 bits. Both are acceptable sizes.
// The tests below simply asserts that the size of q does not decrease the
// overall security of the DSA.
int qsize = params.getQ().bitLength();
switch (keysize) {
case 1024:
assertTrue("Invalid qsize for 1024 bit key:" + qsize, qsize >= 160);
break;
case 2048:
assertTrue("Invalid qsize for 2048 bit key:" + qsize, qsize >= 224);
break;
case 3072:
assertTrue("Invalid qsize for 3072 bit key:" + qsize, qsize >= 256);
break;
default:
fail("Invalid key size:" + keysize);
}
// Check the length of the private key.
// For example GPG4Browsers or the KJUR library derived from it use
// q.bitCount() instead of q.bitLength() to determine the size of the private key
// and hence would generate keys that are much too small.
assertTrue(priv.getX().bitLength() >= qsize - 32);
}
项目:wycheproof
文件:DsaTest.java
/**
* Checks whether CVE-2016-0695 has been fixed. Before the April 2016 security update, the SUN
* provider had a serious flaw that leaked the private key with about 3-5 signatures. In
* particular, "Sha1WithDSA" always generated 160 bit k's independently of q. Unfortunately, it is
* easily possible to use 2048 and 3072 bit DSA keys together with SHA1WithDSA. All a user has to
* do is to use the algorithm name "DSA" instead of "SHA256WithDSA" rsp. "SHA224WithDSA".
*
* <p>An algorithm to extract the key from the signatures has been described for example in the
* paper <a href="http://www.hpl.hp.com/techreports/1999/HPL-1999-90.pdf">Lattice Attacks on
* Digital Signature Schemes</a> by N.A. Howgrave-Graham, N.P. Smart.
*
* <p>This bug is the same as US-CERT: VU # 940388: GnuPG generated ElGamal signatures that leaked
* the private key.
*/
@SlowTest(providers = {ProviderType.BOUNCY_CASTLE, ProviderType.SPONGY_CASTLE})
@SuppressWarnings("InsecureCryptoUsage")
@Test
public void testBiasSha1WithDSA() throws Exception {
String hashAlgorithm = "SHA";
String message = "Hello";
byte[] messageBytes = message.getBytes("UTF-8");
byte[] digest = MessageDigest.getInstance(hashAlgorithm).digest(messageBytes);
BigInteger h = new BigInteger(1, digest);
KeyPairGenerator generator = java.security.KeyPairGenerator.getInstance("DSA");
generator.initialize(2048);
KeyPair keyPair = generator.generateKeyPair();
DSAPrivateKey priv = (DSAPrivateKey) keyPair.getPrivate();
Signature signer = Signature.getInstance("DSA");
try {
// Private key and selected algorithm by signer do not match.
// Hence throwing an exception at this point would be the reasonable.
signer.initSign(priv);
signer.update(messageBytes);
byte[] signature = signer.sign();
BigInteger q = priv.getParams().getQ();
BigInteger k = extractK(signature, h, priv, true);
// Now check if k is heavily biased.
int lengthDiff = q.bitLength() - k.bitLength();
if (lengthDiff > 32) {
fail(
"Severly biased DSA signature:"
+ " len(q)="
+ q.bitLength()
+ " len(k)="
+ k.bitLength());
}
} catch (GeneralSecurityException ex) {
// The key is invalid, hence getting here is reasonable.
return;
}
}