SSE4E GPError GPSystem ByteString ByteBuffer TLV TLVList Card Atr Key Crypto Application GPApplication GPSecDomain ASN1 CardFile IsoSecureChannel ApplFactory GPXML JsScript CardSim X509 CRL KeyStore CMSSignedData CMSGenerator XMLSignature OCSPQuery LDAP SOAP URLConnection PKCS11Provider PKCS11Session PKCS11Object OutlineNode OpenSCDP |
CMSGenerator - Reference DocumentationClass for CMS generation according to RFC 3852 Index of MethodsConstants
ConstructorPrototypeCMSGenerator(Number type) DescriptionCreate a CMS generator object for the specified type Note: The current implementation only supports signed data Arguments
Exceptions
Exampletry { var gen = new CMSGenerator(CMSGenerator.TYPE_ENVELOPED_DATA); } catch (e) { assert(e instanceof GPError); } try { var gen = new CMSGenerator(CMSGenerator.TYPE_DIGESTED_DATA); } catch (e) { assert(e instanceof GPError); } try { var gen = new CMSGenerator(CMSGenerator.TYPE_ENCRYPTED_DATA); } catch (e) { assert(e instanceof GPError); } try { var gen = new CMSGenerator(CMSGenerator.TYPE_AUTHENTICATED_DATA); } catch (e) { assert(e instanceof GPError); } var gen = new CMSGenerator(CMSGenerator.TYPE_SIGNED_DATA); assert(gen != null); setDataContent()Prototypevoid setDataContent(ByteString data) DescriptionSet the data content of the CMS object.Arguments
Return
Exceptions
Examplevar content = new ByteString("Hello World!", ASCII); gen.setDataContent(content); addSigner()Prototypevoid addSigner(Key privateKey, X509 certificate, String digestOID) DescriptionAdd a signer key for the object.Arguments
Return
Exceptions
Examplevar crypto = new Crypto(); // Generate an asymmetric key pair and a certificate for A print("Generating generating key pair and X509 certificate for Signer A...\n"); var privKeyA = new Key(); privKeyA.setType(Key.PRIVATE); var pubKeyA = new Key(); pubKeyA.setType(Key.PUBLIC); pubKeyA.setSize(2048); crypto.generateKeyPair(Crypto.RSA, pubKeyA, privKeyA); var x = new X509CertificateGenerator(crypto); x.reset(); x.setSerialNumber(new ByteString("01", HEX)); x.setSignatureAlgorithm(Crypto.RSA); var issuer = { C:"UT", O:"ACME Corporation", CN:"Test-CA" }; x.setIssuer(issuer); x.setNotBefore("060825120000Z"); x.setNotAfter("160825120000Z"); var subject = { C:"UT", O:"Utopia CA", OU:"ACME Corporation", CN:"Signer #A" }; x.setSubject(subject); x.setPublicKey(pubKeyA); x.addKeyUsageExtension( X509CertificateGenerator.digitalSignature | X509CertificateGenerator.keyCertSign | X509CertificateGenerator.cRLSign ); x.addBasicConstraintsExtension(true, 0); x.addSubjectKeyIdentifierExtension(); x.addAuthorityKeyIdentifierExtension(pubKeyA); var certA = x.generateX509Certificate(privKeyA); gen.addSigner(privKeyA, certA, new ByteString("id-sha256", OID), true); generate()PrototypeByteString generate() ByteString generate(ByteString contentOID) DescriptionGenerate the CMS objectReturn
Exceptions
Examplevar contentOID = new ByteString("0.4.0.127.0.7.3.2.2", OID); var cms = gen.generate(contentOID); var t = new CMSSignedData(cms); var contentTypeOID = t.getEContentType(); assert(contentTypeOID.equals(contentOID)); certs = t.getSignedDataCertificates(); assert(certs != null); print("Number of certificates: " + certs.length); for (i = 0; i < certs.length; i++) { print("#" + i+ ": " + certs[i].toString()); } print("Signed content: " + t.getSignedContent().toString(ASCII)); ns = t.getNumberOfSigners(); for (i = 0; i < ns; i++) { signature = t.getSignerInfoSignature(i); assert(signature != null); print("Signature [" + i + "]: " + signature.toString()); } ns = t.getNumberOfSigners(); assert(ns != null); print("Number of signers:" + ns); for (i = 0; i < ns; i++) { valid = t.isSignerInfoSignatureValid(i); assert(valid != null); print("Signer information signature [" + i + "]: " + (valid == true ? "valid" : "invalid")); } © Copyright 2003 - 2010 CardContact Software & System Consulting, Minden, Germany |