Major problems using Keynote 09 with Keynote 08 files
Keynote 09 seems to have been let out into the wild a bit too early. I have encountered several major problems when using it on older KN08 files. From the Scroll bar in outline view, to almost every movie or sound file being corrupted and requiring a "reinsert," to an annoyingly common problem with images losing their formatting. It seems that the new file format in KN09 does not play well with KN08 (this was not the case with any of the previous version upgrades).
I have contacted Apple and shared these problems with them. I have removed KN09 from all my machines and have reverted back to KN08. Hopefully a future patch will correct this file corruption problem
I have contacted Apple and shared these problems with them. I have removed KN09 from all my machines and have reverted back to KN08. Hopefully a future patch will correct this file corruption problem
Your presentations sound like they are much more involved and memory intensive than mine. I only have a couple with movies/sound and those are quite short. So far (knock on wood) I've not had any of your problems. However, as a matter of course I always create a backup file before starting to edit an old important file with a new program. Keep us posted.
Similar Messages
-
i cant use the highlight, underline, or strikethrough function in a specific pdf file. The file isnt locked. I used to highlight texts from that file before the latest update. The problem occurs only with that file. Urgent need. Please help. Thanks!
Chester31,
Thank you very much for sharing your file with us! Now that we are able to reproduce the problem at our end, you may stop sharing the file on Acrobat.com.
Do you know when this problem (for not being able to add new highlight/strikeout/underline) has started? Did you update your iOS from 7.x to 8.0 recently?
We will continue investigating the problem and let you know what we find.
Thank you again for your help. -
I want to use applescript with keynote
I recently purchased Keynote specifically because there is an applescript that purports to run a Keynote presentation and use text to speech to provide narration from the notes on each slide. I found the script and some supporting materials on http://www.macosxautomation.com/applescript/selfpreso/index.html. However, this was produced a few years ago and a few versions of applescript and Keynote ago. So, I need to accomplish the same feat with the current versions of these products.
But I'm having a great deal of difficulty finding references that tell me much about using applescript with Keynote.
Can anyone help me out with this?If you create an account for him you can setup Parental Controls.
iTunes: Using Parental Controls
Create a new Apple ID here.
https://appleid.apple.com/cgi-bin/WebObjects/MyAppleId.woa/21/wo/mz0CVVrDn8QtH1s 3uYclhM/10.0.31.145.6.3 -
I have problem in quicklook for mp4 files in my mountain lion os 10.8.2 so please help me what i need to do? but i can view mov,3gp,jpeg files problem is only with mp4 files.... any one help me...
I have problem in quicklook for mp4 files in my mountain lion os 10.8.2 so please help me what i need to do? but i can view mov,3gp,jpeg files problem is only with mp4 files.... any one help me...
-
How to use javap with jar files ?
how to use javap with jar files ?
thanksAs long as the jar is on the class path, your gold. So,
javap -classpath myjar.jar mypackage.MyClass
Chuck -
Problem Using Multiple With Statements
I'm having a problem using multiple WITH statements. Oracle seems to be expecting a SELECT statement after the first one. I need two in order to reference stuff from the second one in another query.
Here's my code:
<code>
WITH calculate_terms AS (SELECT robinst_current_term_code,
CASE
WHEN robinst_current_term_code LIKE '%60' THEN robinst_current_term_code - '40'
WHEN robinst_current_term_code LIKE '%20' THEN robinst_current_term_code - '100'
END first_term,
CASE
WHEN robinst_current_term_code LIKE '%60' THEN robinst_current_term_code - '100'
WHEN robinst_current_term_code LIKE '%20' THEN robinst_current_term_code - '160'
END second_term
FROM robinst
WHERE robinst_aidy_code = :aidy)
/*Use terms from calculate_terms to generate attendance periods*/
WITH gen_attn_terms AS
SELECT
CASE
WHEN first_term LIKE '%60' THEN 'Fall '||substr(first_term,0,4)
WHEN first_term LIKE '%20' THEN 'Spring '||substr(first_term,0,4)
END first_attn_period,
CASE
WHEN second_term LIKE '%60' THEN 'Fall '||substr(second_term,0,4)
WHEN second_term LIKE '%20' THEN 'Spring '||substr(second_term,0,4)
END second_attn_period
FROM calculate_terms
SELECT *
FROM gen_attn_terms
<code>
I get ORA-00928: missing SELECT keyword error. What could be the problem?You can just separate them with a comma:
WITH calculate_terms AS (SELECT robinst_current_term_code,
CASE
WHEN robinst_current_term_code LIKE '%60' THEN robinst_current_term_code - '40'
WHEN robinst_current_term_code LIKE '%20' THEN robinst_current_term_code - '100'
END first_term,
CASE
WHEN robinst_current_term_code LIKE '%60' THEN robinst_current_term_code - '100'
WHEN robinst_current_term_code LIKE '%20' THEN robinst_current_term_code - '160'
END second_term
FROM robinst
WHERE robinst_aidy_code = :aidy),
/*Use terms from calculate_terms to generate attendance periods*/
gen_attn_terms AS
SELECT
CASE
WHEN first_term LIKE '%60' THEN 'Fall '||substr(first_term,0,4)
WHEN first_term LIKE '%20' THEN 'Spring '||substr(first_term,0,4)
END first_attn_period,
CASE
WHEN second_term LIKE '%60' THEN 'Fall '||substr(second_term,0,4)
WHEN second_term LIKE '%20' THEN 'Spring '||substr(second_term,0,4)
END second_attn_period
FROM calculate_terms
)Not tested because there are no scripts. -
Problem using Toplink with JUnit
Hi,
I have a problem using Toplink with JUnit. Method under test is very simple: it use a static EntityManager object to open a transaction and persists data to db. When I invoke the method from a test method, it gives me the exception:
java.lang.AssertionError
at oracle.toplink.essentials.ejb.cmp3.persistence.PersistenceUnitProcessor.computePURootURL(PersistenceUnitProcessor.java:248)
at oracle.toplink.essentials.ejb.cmp3.persistence.PersistenceUnitProcessor.findPersistenceArchives(PersistenceUnitProcessor.java:232)
at oracle.toplink.essentials.ejb.cmp3.persistence.PersistenceUnitProcessor.findPersistenceArchives(PersistenceUnitProcessor.java:216)
at oracle.toplink.essentials.internal.ejb.cmp3.JavaSECMPInitializer.initialize(JavaSECMPInitializer.java:239)
at oracle.toplink.essentials.internal.ejb.cmp3.JavaSECMPInitializer.initializeFromMain(JavaSECMPInitializer.java:278)
at oracle.toplink.essentials.internal.ejb.cmp3.JavaSECMPInitializer.getJavaSECMPInitializer(JavaSECMPInitializer.java:81)
at oracle.toplink.essentials.ejb.cmp3.EntityManagerFactoryProvider.createEntityManagerFactory(EntityManagerFactoryProvider.java:119)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:83)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:60)
at it.valerio.electromanager.model.EntityFacade.<clinit>(EntityFacade.java:12)
at it.valerio.electromanager.business.ClienteBiz.insertIntoDatabase(ClienteBiz.java:36)
at it.valerio.electromanager.test.model.ClienteTest.insertDBTest(ClienteTest.java:30)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.junit.internal.runners.TestMethodRunner.executeMethodBody(TestMethodRunner.java:99)
at org.junit.internal.runners.TestMethodRunner.runUnprotected(TestMethodRunner.java:81)
at org.junit.internal.runners.BeforeAndAfterRunner.runProtected(BeforeAndAfterRunner.java:34)
at org.junit.internal.runners.TestMethodRunner.runMethod(TestMethodRunner.java:75)
at org.junit.internal.runners.TestMethodRunner.run(TestMethodRunner.java:45)
at org.junit.internal.runners.TestClassMethodsRunner.invokeTestMethod(TestClassMethodsRunner.java:66)
at org.junit.internal.runners.TestClassMethodsRunner.run(TestClassMethodsRunner.java:35)
at org.junit.internal.runners.TestClassRunner$1.runUnprotected(TestClassRunner.java:42)
at org.junit.internal.runners.BeforeAndAfterRunner.runProtected(BeforeAndAfterRunner.java:34)
at org.junit.internal.runners.TestClassRunner.run(TestClassRunner.java:52)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:38)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
Where is the problem???
Regards,
ValerioEntityFacade class is very simple and it uses a static EntityManager object. Here the code:
public class EntityFacade {
private static EntityManager em = Persistence.createEntityManagerFactory("ElectroManager").createEntityManager();
private static Logger logger=Logger.getLogger(EntityFacade.class);
public static void insertCliente(Cliente c)
logger.debug("Inserisco cliente nel db: " + c);
em.getTransaction().begin();
c.setId(getNextIdForTable("Cliente"));
em.persist(c);
em.getTransaction().commit();
If I call the method from inside a main it works well, so I think the problem is not the classpath neither the URL in the persistence.xml. However the URL is:
<property name="toplink.jdbc.url" value="jdbc:derby:c:/programmi/ElectroManager/db/electroManager"/>
I use the latest build version of TopLink.
Thanks. -
Any Problems using SSL with Safari and the move with Internet explorer to require only TLS encryption.
Hi .
Apple no longer supports Safari for Windows if that's what you are asking > Apple apparently kills Windows PC support in Safari 6.0
Microsoft has not written IE for Safari for many years. -
Oracle reports problem in distribution with xml file
Hi ,
I am having problem while I am trying to distribute the file with specifing the destination details in the xml. If I am giving the destination details in url then it is working.
Ex.
This is Working
http://bryxh91:8889/reports/rwservlet?report=devlopersuit/reports/test.jsp&userid=anju/[email protected]&desformat=pdf&destype=file&desname=devlopersuit/reports/output_file.pdf
Not working :
http://bryxh91:8889/reports/rwservlet?report=devlopersuit/reports/test.jsp&userid=anju/[email protected]&DISTRIBUTE=YES&destination=devlopersuit/reports/dis_test.xml
xml file
<destinations>
<file id="test" name="output_file.pdf" format="pdf">
<include scr="mainSection"/>
</file>
</destinations>
Error : REP-34304: Distribution failed to complete; review the distribution lists
Its been week I tried many things , but not working.
Right now I am trying to distribute to single file but my goal is to burst and distribute on basis of account number.
This is the first stage of the project.
Thanks a lot for the help
AnjuHello
see answer in Oracle reports problem in distribution with xml file
Regards -
Problem using ViewObject with bc4j:table
Hello !!
This is the query of my ViewObject:
select * from speiseplan order by jahr desc, kw desc;
and everything works fine in the BC4J tester:
jahr kw
2003 52
2003 7
2003 3
2002 51
But in my uix page the rows are not correctly sorted:
jahr kw
2003 3
2003 7
2003 52
2002 51
What's going wrong here?
Thanks for your help.
Regards,
MareikeDuplicate post.
Original problem using ViewObject with <bc4j:table> -
Problems using iCloud with Mountain Lion on iMac8,1
problems using iCloud with Mountain Lion on iMac8,1 - about 5J old - iMac gets slower and slower - total free memory is used in some minutes - no more reaction on input
Download > http://codykrieger.com/gfxCardStatus Open it and select Integrated Only. It's a bug with NVIDIA graphic cards
-
Problems using CFFile to move files
Hi there - I am having some problems using CFFile to move
files from one directory to another. It only seems to only move
some of the files in the group that I choose to move over, and
there is nothing specific about which files are moved - different
files are moved each time. There are no error messages that are
showing up, so I am totally baffled. Has anyone else experienced
this or does anyone else have any ideas on how to fix this problem?
Any help would be much appreciated!! My code is below.First, an incidental matter. I don't think there's any need
for so many try-catch tags. I would expect all the tags <cffile
action="move"> to throw the same class of exception, and so
would use one try-catch for them all. Even if you expect different
exceptions to be thrown, one cftry tag might still be sufficient,
if implemented as follows
<cftry>
<!--- code block 1 --->
<!--- code block 2 --->
<!--- ... etc... --->
<cfcatch type="exceptionType1"></cfcatch>
<cfcatch type="exceptionType2"></cfcatch>
<!--- ... etc... --->
</cftry>
I suspect the cause of the problems lies in the dynamic
values that you give the attributes. Perhaps incorrect values are
passed for the source and/or destination values in certain
circumstances. As A3gis has said, if that were to happen you
probably wouldn't notice, because of the try-catches. Find a way to
ensure that all the generated values for source and destination are
correct. -
Keynote with iCloud file corrupted
I'm using Yosemite and Keynote 6.5. I was working my keynote file suddenly it says file cannot be opened. I could be working over iCloud. I tried to rename into .zip and back to .key but doesn't work. Seems the index.zip file inside has problem. It can't unzip but into a index.zip.cpgz file. I also tried to open it right on iCloud and it says presentation cannot be opened. Can anyone please help me out. I am very desperately not to redo everything again. Thanks a lot.
Before you do anything else, make new copies of the files using the operating system to copy the file to a new folder somewhere. It may be damaged beyond recovery, but you should make backups of what you have as a precaution.
The .idlk file is a lock file that tells ID the file is already open. This would indicate that the file wasn't closed before the crash. It is safe to delete the lock files after you close ID. If restarting ID crashes immediately, it most likely means the recovery file is corrupt. Find the recovery folder (not sure where the default location would be on a Mac), and move all the contents into a new folder on the desktop for temporary safekeeping. That should allow ID to start.
You seem to be using version 6.0.0, which was buggy. The latest patch is 6.0.6, and you should either download and install the patch manually, or use the automatic updater, then try to open the file again. If successful, export to .inx, then save as a new .indd file. See Remove minor corruption by exporting
Let us know what happens when you try the above. -
Problem Creating PDF with Multiple Files in Pro. 7
I'm using Adobe Acrobat Professional 7 on a computer with Windows XP.
The problem is that when I try to create a PDF with multiple files everything just suddenly stops. There are 75 files involved and when it gets to around 41 or so (don't know the exact number because I turned away from my computer for just a moment), it just stops. There are no error messages; nothing. Just a blank Acrobat screen.
Last week I had a different problem which was resolved by an uninstall/reinstall and I was able to create the PDF with those exact same 75 files, but after the PDF was created I realised that some changes needed to be made. I dumped the PDF, made the appropriate changes and left it for the weekend. Today I the new problem has arisen.
Any ideas what the problem might be?I've read many discussions about Acrobat and problems with server files, with the general solution being what you are doing... copy the files to a local hard drive
-
Problem using SmartCard with 2 Certificates stored and SunPKCS11
Hi,
I'm trying to access one SmartCard token in Java 1.5 using SunPKCS11 provider for crypt, decrypt and digital signature operations.
I have 2 certificates stored on Token:
- CertA;
- CertB.
There are also 2 PIN:
- PIN1;
- PIN2.
I use:
- PIN1 for logging into the token;
- PIN1 for operation involving CertA;
- PIN2 for operation involving CertB;
There is no problem to logging into the token using Java and, without any troubles, I can read certificates and key from the
cryptographic card.
There is no problem using CertA for all my operation, but every attempt of using Private Key of CertB (for the same operations) returns with an Exception:
java.security.ProviderException: sun.security.pkcs11.wrapper.PKCS11Exception: CKR_DEVICE_ERROR
Here there's an extract of my source code.
public void loginToken() {
Provider UserProvider = new sun.security.pkcs11.SunPKCS11(C:\\pkcs11.cfg);
Security.addProvider(UserProvider);
try {
KeyStore ks = null;
X509Certificate UserCert = null;
PrivateKey UserCertPrivKey = null;
PublicKey UserCertPubKey = null;
//PIN
char PIN1[] = "11111".toCharArray();
char PIN2[] = "22222".toCharArray();
//logging into token
ks = KeyStore.getInstance("PKCS11", UserProvider);
ks.load(null, PIN1);
//enumeration alias
String alias = "";
Enumeration e = ks.aliases();
while (e.hasMoreElements()) {
alias = (String) e.nextElement();
//Certificate
UserCert = (X509Certificate) ks.getCertificate(alias);
//PublicKey
UserCertPubKey = (PublicKey) ks.getCertificate(alias).getPublicKey();
if (alias.compareToIgnoreCase("Cert1") == 0) {
//PrivateKey reference
UserCertPrivKey = (PrivateKey) ks.getKey(alias, PIN1);
} else if (alias.compareToIgnoreCase("Cert2") == 0) {
//PrivateKey reference
UserCertPrivKey = (PrivateKey) ks.getKey(alias, PIN2);
} else {
System.out.println("ALIAS UNKNOW");
System.exit(1);
//Signature Test
if (!MakeSignature(UserCertPrivKey, UserProvider))
System.out.println(" *** SIGNATURE OK *** ");
else
System.out.println(" *** SIGNATURE KO *** ");
catch (Exception ex) {
System.out.println("ERROR: " + ex);
public boolean MakeSign(PrivateKey PrivKey, Provider p) {
try {
//File I/O
FileInputStream txtfis = new FileInputStream("C:\\Test.txt");
FileOutputStream sigfos = new FileOutputStream("C:\\Test_Signature.txt");
//Signature Obj init
Signature dsa = Signature.getInstance("SHA1withRSA", p.getName());
dsa.initSign(PrivKey);
//Update data
BufferedInputStream bufin = new BufferedInputStream(txtfis);
byte[] buffer = new byte[1024];
int len;
while (bufin.available() != 0) {
len = bufin.read(buffer);
dsa.update(buffer, 0, len);
bufin.close();
//Make signature
byte[] realSig = dsa.sign();
//save signature on file
sigfos.write(realSig);
sigfos.close();
return true;
catch (Exception ex) {
System.out.println("ERROR: " + ex);
return false;
Any help would be grateful...
Thanks in advance.
P.S. Sorry for my EnglishThis is the same my initial problem.
I resolved it using IAIK-PKCS#11Wrapper (it is FREE) insted of sun.security.pkcs11.SunPKCS11.
You can find it here:
http://jce.iaik.tugraz.at/sic/products/core_crypto_toolkits/pkcs_11_wrapper
Here an exemple of code.
The main class:
import iaik.pkcs.pkcs11.Module;
import iaik.pkcs.pkcs11.DefaultInitializeArgs;
import java.util.Hashtable;
import iaik.pkcs.pkcs11.Token;
import iaik.pkcs.pkcs11.Slot;
import iaik.pkcs.pkcs11.Session;
import iaik.pkcs.pkcs11.objects.RSAPrivateKey;
import java.util.Vector;
import iaik.pkcs.pkcs11.objects.PrivateKey;
import iaik.pkcs.pkcs11.objects.X509PublicKeyCertificate;
import java.util.Enumeration;
import iaik.pkcs.pkcs11.objects.Key;
import java.security.cert.CertificateFactory;
import java.io.ByteArrayInputStream;
import iaik.pkcs.pkcs11.Mechanism;
import java.security.Security;
import org.bouncycastle.jce.provider.BouncyCastleProvider;
import java.io.File;
import java.io.FileInputStream;
import org.bouncycastle.cms.CMSSignedDataGenerator;
import org.bouncycastle.cms.CMSProcessableByteArray;
import java.util.ArrayList;
import java.security.cert.CertStore;
import java.security.cert.CollectionCertStoreParameters;
import org.bouncycastle.cms.CMSSignedData;
import java.io.FileOutputStream;
import java.security.cert.X509Certificate;
import iaik.pkcs.pkcs11.TokenInfo;
import org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers;
public class MakeSignature {
public static void main(String[] args) {
String USER_PIN = "12345678";
String DLL_NAME = "C:\\windows\\system32\\dll_P11_name.dll";
String OBJ_LABEL1 = "CNS0"; //this is the label of my 1th cert
String OBJ_LABEL2 = "CNS1"; //this is the label of my 2th cert
String INPUT_FILE = "C:\\Temp\\test.txt";
String OUTPUT_FILE = "C:\\Temp\\test.p7m";
try {
// ********** INITIALIZE PKCS#11 MODULE WITH DEFAULT PARAMETERS **********
Module pkcs11Module = Module.getInstance(DLL_NAME);
pkcs11Module.initialize(new DefaultInitializeArgs());
// ********** SELECT TOKEN **********
Slot[] slotsWithToken = pkcs11Module.getSlotList(Module.SlotRequirement.TOKEN_PRESENT);
Token[] tokens = new Token[slotsWithToken.length];
Hashtable tokenIDtoToken = new Hashtable(tokens.length);
long tokenID = -1;
Token tokenUsed = null;
//enum readers
for (int i = 0; i < slotsWithToken.length; i++) {
tokens[i] = slotsWithToken.getToken();
tokenID = tokens[i].getTokenID();
tokenIDtoToken.put(new Long(tokenID), tokens[i]);
System.out.println("Active tokens:");
System.out.println("Token ID: " + tokenID);
if (tokens.length == 0) { //No SC found
System.out.println("No SC presents");
else {
System.out.println("Using token: " + tokens[0].getTokenID());
tokenUsed = tokens[0];
//Note: if you have more reader and more SC inserted, you have to write
//here the code for select the right token
// ********** OPEN SESSION VS THE TOKEN AND IF REQUIRED SUBMIT PIN **********
TokenInfo tokenInfo = tokenUsed.getTokenInfo();
Session session = tokenUsed.openSession(Token.SessionType.SERIAL_SESSION, false, null, null);
if (tokenInfo.isLoginRequired()) {
session.login(Session.UserType.USER, USER_PIN.toCharArray());
// ********** SET SEARCH TEMPLATE FOR THE P11 OBJECT **********
RSAPrivateKey privateSignatureKeyTemplate = new RSAPrivateKey();
privateSignatureKeyTemplate.getSign().setBooleanValue(Boolean.TRUE);
privateSignatureKeyTemplate.getLabel().setCharArrayValue(OBJ_LABEL2.toCharArray());
// ********** SEARCH P11 OBJECT USING TEMPLATE **********
Vector keyList = new Vector(4);
session.findObjectsInit(privateSignatureKeyTemplate);
Object[] matchingKeys;
while ( (matchingKeys = session.findObjects(1)).length > 0) {
keyList.addElement(matchingKeys[0]);
session.findObjectsFinal();
//Try to find the corresponding certificates for the signature keys
Hashtable keyToCertificateTable = new Hashtable(4);
Enumeration keyListEnumeration = keyList.elements();
while (keyListEnumeration.hasMoreElements()) {
PrivateKey signatureKey = (PrivateKey) keyListEnumeration.nextElement();
byte[] keyID = signatureKey.getId().getByteArrayValue();
X509PublicKeyCertificate certificateTemplate = new X509PublicKeyCertificate();
certificateTemplate.getId().setByteArrayValue(keyID);
session.findObjectsInit(certificateTemplate);
Object[] correspondingCertificates = session.findObjects(1);
if (correspondingCertificates.length > 0) {
keyToCertificateTable.put(signatureKey, correspondingCertificates[0]);
session.findObjectsFinal();
//There are three cases now: 1 no obj found; 2 found only one obj, 3 found more obj
Key selectedKey = null;
X509PublicKeyCertificate correspondingCertificate = null;
//no object found for template
if (keyList.size() == 0) {
System.out.println("No object found for template");
throw new Exception("No object found for template");
//Founf only one object
else if (keyList.size() == 1) {
selectedKey = (Key) keyList.elementAt(0);
// create a IAIK JCE certificate from the PKCS11 certificate
correspondingCertificate = (X509PublicKeyCertificate)keyToCertificateTable.get(selectedKey);
System.out.println("One object Found");
//Found more object ... user can select one
else {
System.out.println("Many obj found!!!");
//write here the code for select the right object
// ********** GET THE OBJECT **********
RSAPrivateKey signerPriKey = (RSAPrivateKey) selectedKey;
java.security.cert.CertificateFactory certificateFactory = CertificateFactory.getInstance("X.509");
byte[] derEncodedCertificate = correspondingCertificate.getValue().getByteArrayValue();
//Cast to java.security.cert.X509Certificate
java.security.cert.X509Certificate signerCert = (java.security.cert.X509Certificate) certificateFactory.
generateCertificate(new ByteArrayInputStream(derEncodedCertificate));
// ********** SIGNATURE OPERATION **********
//Add BouncyCastle as provider
Security.addProvider(new BouncyCastleProvider());
//initialize signature operation
session.signInit(Mechanism.RSA_PKCS, (PrivateKey) signerPriKey);
//get input data
File src = new File(INPUT_FILE);
int sizecontent = ( (int) src.length());
byte[] contentData = new byte[sizecontent];
FileInputStream freader = new FileInputStream(src);
freader.read(contentData, 0, sizecontent);
freader.close();
//calculate digest of the input data
byte[] toEncrypt = buildBits(contentData); //I've already posted the code for this function
//make signature
byte[] signature = session.sign(toEncrypt);
// ********** MAKE P7 WELL FORMAT DOCUMENT **********
//CMSSignedDataGenerator fact = new CMSSignedDataGenerator();
Signature2CMSSignedData fact = new Signature2CMSSignedData();
CMSProcessableByteArray content = new CMSProcessableByteArray(contentData);
//Creation of BC CertStore
ArrayList certList = new ArrayList();
certList.add(signerCert);
CertStore certs = CertStore.getInstance("Collection", new CollectionCertStoreParameters(certList), "BC");
//Signature Alg
String algorithm = CMSSignedDataGenerator.DIGEST_SHA1;
//add element to P7
fact.addSignature(signature, signerCert, algorithm);
fact.addCertificatesAndCRLs(certs);
//generate enveloped using Bouncycastle provider
CMSSignedData envdata = fact.generate(PKCSObjectIdentifiers.data.getId(), content, true);
byte[] enveloped = envdata.getEncoded();
//Write P7 file
FileOutputStream efos = new FileOutputStream(OUTPUT_FILE);
efos.write(enveloped);
efos.close();
// ********** END **********
session.closeSession();
pkcs11Module.finalize(null);
catch (Exception ex) {
ex.printStackTrace();
}Main class uses buildBits function (already posted in this topic) and Signature2CMSSignedData class.import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.security.cert.CertStore;
import java.security.cert.X509CRL;
import java.security.cert.X509Certificate;
import org.bouncycastle.asn1.ASN1EncodableVector;
import org.bouncycastle.asn1.ASN1InputStream;
import org.bouncycastle.asn1.ASN1OctetString;
import org.bouncycastle.asn1.ASN1Sequence;
import org.bouncycastle.asn1.ASN1Set;
import org.bouncycastle.asn1.BERConstructedOctetString;
import org.bouncycastle.asn1.DEREncodable;
import org.bouncycastle.asn1.DERNull;
import org.bouncycastle.asn1.DERObject;
import org.bouncycastle.asn1.DERObjectIdentifier;
import org.bouncycastle.asn1.DEROctetString;
import org.bouncycastle.asn1.DERSet;
import org.bouncycastle.asn1.cms.ContentInfo;
import org.bouncycastle.asn1.cms.IssuerAndSerialNumber;
import org.bouncycastle.asn1.cms.SignedData;
import org.bouncycastle.asn1.cms.SignerIdentifier;
import org.bouncycastle.asn1.cms.SignerInfo;
import org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers;
import org.bouncycastle.asn1.x509.AlgorithmIdentifier;
import org.bouncycastle.asn1.x509.CertificateList;
import org.bouncycastle.asn1.x509.TBSCertificateStructure;
import org.bouncycastle.asn1.x509.X509CertificateStructure;
import org.bouncycastle.cms.CMSProcessable;
import org.bouncycastle.cms.CMSSignedData;
* class for generating a RSA pkcs7-signature message.
public class Signature2CMSSignedData2 {
CertStore certStore;
List certs = new ArrayList();
List crls = new ArrayList();
List signerInfs = new ArrayList();
List signers = new ArrayList();
public static final String DATA = PKCSObjectIdentifiers.data.getId();
public static final String ENCRYPTION_RSA = "1.2.840.113549.1.1.1";
private byte[] signatureData = null;
private X509Certificate cert = null;
private String digestOID = null;
private String encOID = null;
public Signature2CMSSignedData2() {
public void addSignature(byte[] signatureData, X509Certificate cert, String digestOID) {
this.signatureData = signatureData;
this.cert = cert;
this.digestOID = digestOID;
this.encOID = ENCRYPTION_RSA;
public void addCertificatesAndCRLs(CertStore certStore) throws Exception{
try {
Iterator it = certStore.getCertificates(null).iterator();
while (it.hasNext()) {
X509Certificate c = (X509Certificate) it.next();
certs.add(new X509CertificateStructure((ASN1Sequence) makeObj(c.getEncoded())));
Iterator it2 = certStore.getCRLs(null).iterator();
while (it2.hasNext()) {
X509CRL c = (X509CRL) it2.next();
crls.add(new CertificateList((ASN1Sequence) makeObj(c.getEncoded())));
catch (Exception e) {
throw new Exception(e.getMessage());
private DERObject makeObj(byte[] encoding) throws Exception {
if (encoding == null) {
return null;
ByteArrayInputStream bIn = new ByteArrayInputStream(encoding);
ASN1InputStream aIn = new ASN1InputStream(bIn);
return aIn.readObject();
public CMSSignedData generate(String signedContentType, CMSProcessable content, boolean encapsulate) throws Exception {
try {
ASN1EncodableVector digestAlgs = new ASN1EncodableVector();
ASN1EncodableVector signerInfos = new ASN1EncodableVector();
DERObjectIdentifier contentTypeOID = new DERObjectIdentifier(signedContentType);
// add the SignerInfo objects
Iterator it = signerInfs.iterator();
AlgorithmIdentifier digAlgId = new AlgorithmIdentifier(new DERObjectIdentifier(digestOID), new DERNull());
AlgorithmIdentifier encAlgId;
encAlgId = new AlgorithmIdentifier(new DERObjectIdentifier(encOID), new DERNull());
digestAlgs.add(digAlgId);
ASN1Set signedAttr = null;
ASN1Set unsignedAttr = null;
ASN1OctetString encDigest = new DEROctetString(signatureData);
ByteArrayInputStream bIn = new ByteArrayInputStream(cert.getTBSCertificate());
ASN1InputStream aIn = new ASN1InputStream(bIn);
TBSCertificateStructure tbs = TBSCertificateStructure.getInstance(aIn.readObject());
IssuerAndSerialNumber encSid = new IssuerAndSerialNumber(tbs.getIssuer(), tbs.getSerialNumber().getValue());
signerInfos.add(new SignerInfo(new SignerIdentifier(encSid), digAlgId, signedAttr, encAlgId, encDigest, unsignedAttr));
ASN1Set certificates = null;
if (certs.size() != 0) {
ASN1EncodableVector v = new ASN1EncodableVector();
it = certs.iterator();
while (it.hasNext()) {
v.add( (DEREncodable) it.next());
certificates = new DERSet(v);
ASN1Set certrevlist = null;
if (crls.size() != 0) {
ASN1EncodableVector v = new ASN1EncodableVector();
it = crls.iterator();
while (it.hasNext()) {
v.add( (DEREncodable) it.next());
certrevlist = new DERSet(v);
ContentInfo encInfo;
if (encapsulate) {
ByteArrayOutputStream bOut = new ByteArrayOutputStream();
content.write(bOut);
ASN1OctetString octs = new BERConstructedOctetString(bOut.toByteArray());
encInfo = new ContentInfo(contentTypeOID, octs);
else {
encInfo = new ContentInfo(contentTypeOID, null);
SignedData sd = new SignedData(new DERSet(digestAlgs), encInfo, certificates, certrevlist, new DERSet(signerInfos));
ContentInfo contentInfo = new ContentInfo(PKCSObjectIdentifiers.signedData, sd);
return new CMSSignedData(content, contentInfo);
catch (Exception e) {
throw new Exception(e.getMessage());
}Bye.
Maybe you are looking for
-
Bridge to Photoshop Automate lost
I just got a new iMac with OS 10.5.7. Photoshop and Bridge were working beautifully for the first couple of days. This morning I cannot access Photoshop through the Bridge Tools menu to use Image Processor and other items. I have some Russell Brow
-
Problems with subscriber search between unity servers in a dialing domain
I have two Unity 8 Active/Passive clusters in the following configuration Site A Unity Cluster A Exchange Server A Site B Unity Cluster B Exchange Server B The Exchange servers are on the same Active Directory Domain and in the same MS Exch
-
Transferring pics from iPhoto 8 to iPhoto 6
Having troubles doing a simple import of pics that went from camera to my laptop (iPhoto 8), burnt them to cd then tried to import into G5 (iPhoto 6). This should not be an issue right (the import of iPhoto 8 pics into iPhoto 6)? Is there a way to bu
-
Mail Won't Quit & Can't Send Mail
On Monday I started experiencing problems with my Gmail mail in Apple Mail and through the week evolved into my AOL emails and all not being able to send now. Also, when I open the App. the viewer (main window) does not come up, I have to open it man
-
Error joining the AirPort Network - revisited
I just got my iBook back from the shop and am trying to reestablish the link with my Airport Express. I've reset the unit, gone through numerous hoops. The AirPort Express currently has a green light, and my router shows it's connected. Yet, when I t