@Override public String decrypt(PemPriv key, PemBlock encoded, String passphrase) throws MException { try { byte[] encKey = key.getBytesBlock(); if (MString.isSet(passphrase)) encKey = Blowfish.decrypt(encKey, passphrase); cipher.init(Cipher.DECRYPT_MODE, privKey); int length = key.getInt(PemBlock.LENGTH, 1024); int blockSize = Math.max(length / 1024 * 128, 64);
public static void prepareSignOut(PemPriv key, PemBlockModel out, String name) { out.set(PemBlock.METHOD,name); if (key.isProperty(PemBlock.IDENT)) out.set(PemBlock.PRIV_ID, key.getProperty(PemBlock.IDENT)); if (key.isProperty(PemBlock.PUB_ID)) out.set(PemBlock.PUB_ID, key.getProperty(PemBlock.PUB_ID)); out.set(PemBlock.CREATED, new Date()); }
@Override public String decrypt(PemPriv key, PemBlock encoded, String passphrase) throws MException { try { byte[] xkey = key.getBytesBlock(); byte[] data = encoded.getBytesBlock(); Cipher c = Cipher.getInstance("AES"); SecretKeySpec k = new SecretKeySpec(xkey, "AES"); c.init(Cipher.DECRYPT_MODE, k); byte[] enc = c.doFinal(data); String stringEncoding = encoded.getString(PemBlock.STRING_ENCODING, "utf-8"); return new String(enc, stringEncoding); } catch (Throwable t) { throw new MException(t); } }
@Override public PemBlock sign(PemPriv key, String text, String passphrase) throws MException { try { byte[] encKey = key.getBytesBlock(); if (MString.isSet(passphrase)) encKey = Blowfish.decrypt(encKey, passphrase); PKCS8EncodedKeySpec privKeySpec = new PKCS8EncodedKeySpec(encKey); KeyFactory keyFactory = KeyFactory.getInstance("ECDSA", "BC"); PrivateKey privKey = keyFactory.generatePrivate(privKeySpec); Signature dsa = Signature.getInstance("SHA512WITHECDSA", "BC"); dsa.initSign(privKey); byte[] buffer = text.getBytes(); dsa.update(buffer, 0, buffer.length); byte[] realSig = dsa.sign(); PemBlockModel out = new PemBlockModel(PemBlock.BLOCK_SIGN, realSig); CryptUtil.prepareSignOut(key, out, getName()); return out; } catch (Exception e) { throw new MException(e); } }
@Override public String decrypt(PemPriv key, PemBlock encoded, String passphrase) throws MException { try { byte[] encKey = key.getBytesBlock(); if (MString.isSet(passphrase)) encKey = Blowfish.decrypt(encKey, passphrase); ByteArrayOutputStream os = new ByteArrayOutputStream(); int length = key.getInt(PemBlock.LENGTH, 1024); int blockSize = Math.max(length / 1024 * 128, 64);
@Override public PemBlock sign(PemPriv key, String text, String passphrase) throws MException { try { byte[] encKey = key.getBytesBlock(); if (MString.isSet(passphrase)) encKey = Blowfish.decrypt(encKey, passphrase); PKCS8EncodedKeySpec privKeySpec = new PKCS8EncodedKeySpec(encKey); KeyFactory keyFactory = KeyFactory.getInstance("DSA", "SUN"); PrivateKey privKey = keyFactory.generatePrivate(privKeySpec); Signature dsa = Signature.getInstance("SHA1withDSA", "SUN"); dsa.initSign(privKey); byte[] buffer = text.getBytes(); dsa.update(buffer, 0, buffer.length); byte[] realSig = dsa.sign(); PemBlockModel out = new PemBlockModel(PemBlock.BLOCK_SIGN, realSig); CryptUtil.prepareSignOut(key, out, getName()); return out; } catch (Exception e) { throw new MException(e); } }
byte[] encKey = key.getBytesBlock(); if (MString.isSet(passphrase)) encKey = Blowfish.decrypt(encKey, passphrase);
byte[] encKey = key.getBytesBlock(); if (MString.isSet(passphrase)) encKey = Blowfish.decrypt(encKey, passphrase);