JAVA Toolkit
| home | contact




versions 2002

IAIK-JCE 3.01 Maintenance Release - 15. July 2002

Class or Package

B ug / C hange N ew F eature

Description and Examples

iaik.asn1.BMPString

B

Fixed encoding problem (leading marker removed).

iaik.asn1.structures.AlgorithmID

NF

New static method getAlgorithmID(String implementationName) allows to query for AlgorithmID objects based on the implementation name, e.g.:

AlgorithmID algID = AlgorithmID.getAlgorithmID("3DES/CBC/PKCS5Padding");

iaik.asn1.structures.GeneralName

NF

Method getName() prints IPv6 addresses, too.

iaik.pkcs.pkcs12.*

NF

Multiple key bags allowed; additional bag types

iaik.pkcs.pkcs12.PKCS12

NF

New encrypt method allowing to use any combination of of PbeWithSHAAnd40BitRC2_CBC and PbeWithSHAAnd3_KeyTripleDES_CBC to be used for encrypting authenticated safes and shrouded key bags.

iaik.security.provider.IAIK

C

Patented ciphers now are registered, too (although they are not available in iaik_jce.jar) to avoid connection overhead problems due to class load trials when used in applets.

iaik.security.provider.IAIK

NF

New static methodaddAsJDK14Provider allowing to use IAIK as first provider for JDK 1.4, too.

iaik.security.dh

B

Bug fixed in serialization of DHKeys.

iaik.security.rsa.RSASignature

C

Now does not use RSA Cipher engine to avoid problems due to JCE provider signing and key length limitation.

iaik.x509.attr.*

C

Uses implicit encoding according to IETF specification (RFC3281)

iaik.x509.extensions.
qualified.structures.etsi.*

NF

Implementation of the ETSI Qualified Certificate Profile (TS 101 862 V1.2.1) qualified certificate statements QcEuCompliance, QcEuLimitValue, QcEuRetentionPeriod.

IAIK-JCE 3.0 Final - 29. January 2002

Class or Package

B ug / C hange N ew F eature

Description and Examples

Signed Archive files

NF

IAIK-JCE is signed now to may be used with JDK 1.4. We provide two versions of our library files ( iaik_jce.jar, iaik_jce_full.jar ): a signed version and an unsigned version. The unsigned version does not include the JAVAX CRYPTO packages which have been splitted into a separate jar file ( iaik_javax_crypto.jar ).

Archive files for patented algorithms

C

Classes implementing crypto algorithms that may require separate licensing are no longer put together into one single jar file ( iaik_jce_patented.jar ); rather they are splitted into sevaral jar archives according to the algorithm scope: iaik_idea.jar (contains all IDEA classes), iaik_rc.jar (contains all classes for RC4, RC5, RC6), and iaik_esdh.jar (contains all classes implementing Ephemral Static Diffie Hellman).

demo.*

C

The IAIK provider is inserted at second position now to avoid problems due to the JDK provider signature verification mechanism that may require that the original SUN provider is installed as first provider.

iaik.asn1.ASN1String

NF,C

All ASN.1 String types are now grouped by extending abstract class ASN1String keeping the byte value immediately to avoid character encoding problems when writing a String type again after having parsed it.

iaik.asn1.ConstructedType

NF

EncodeListener now may be registered on a constructed type to allow "component based" encode listening.

iaik.asn1.PrintableString

NF

Method equalsmaybe forced to compare two PrintableStrings case insensitive and by ignoring intermediate consensitve spaces as recommended by RFC2459:
boolean checkCaseInsensitive = true; PrintableString.checkCaseInsensitive(true);

The default setting is false; i.e. PrintableStrings a checked for exact match for providing backwards compatibility to former IAIK PrintableString versions, for performance reasons and because PrintableStrings may not differ only case/space based in typical applications (e.g. when comparing issuer/subject distinguished names of certificate chains).

iaik.asn1.UNKNOWN

NF

New method getBaseAsnType allows to query for the base type of an unknown ASN.1 object.

iaik.asn1.structures.AlgorithmID

NF

New constructor allowing to decide whether absent parameters shall be encoded as NULL or shall be omitted when calling toASN1Object. Method toString now also prints the dotted OID string number representation.

iaik.asn1.structures.Attribute
iaik.asn1.structures.AttributeValuue

NF

New Attribute framework now allowing to write and register implementations for specific AttributeValues so that attribute handling becomes more user friendly (see Javadoc™).

iaik.asn1.structures.AVA

C

Default secondary encoding (if a string attribute value contains non printable characters): UTF8String; may be changed by an application by calling static method setNonPrintableDefaultEncoding (may be used for avoiding cert parsing problems with browsers not supporting UTF8 encoding; e.g. prior versions of Netscape (4.x)).

iaik.pkcs.pkcs7

NF

Non-stream classes now support PKCS#7v1.6, too. Example (SignedData):

SignedData, creation:
only call setVersion(2) after creating a SignedData object:

int mode = ...; byte[] content = ...; SignedData signedData = new SignedData(content, mode); // version number 2 indicates PKCS#7v1.6 signedData.setVersion(2);

SignedData, parsing:
If version 1.6 is used in explicit mode you have to specify the version number to indicate to calculate the hash over the content encoding (in implicit mode you do not have to take care about the version number at all):

int mode = ...; // raw data received by other means: byte[] content = ...; // hash algorithm(s) used AlgorithmID[] hashAlgIDs = ...; // version 2 indicates PKCS#7v1.6 int version = 2; SignedData signedData = new SignedData(content, hashAlgIDs, version);

Note that PKCS#7v1.6 is not CMS. CMS is the IETF standardized successor of PKCS#7v1.5 (see IAIK-CMS). PKCS#7v1.6 is not as widely used as PKCS#7v1.5; the most popular sample for an application using PKCS#7v1.6 may be the SET protocol.

iaik.pkcs.pkcs7.
EncryptedContentInfoStream

C

Now uses an iaik.utils.CipherInputStream since standard CipherInputStream does not support block based encoding

iaik.pkcs.pkcs9

NF

Implementations for the PKCS#9 attribute types ExtensionRequest and ChallengePassword to maybe include/parsed certificate extension information and/or challenge passoword into/from a PKCS#10 request:

Attribute[] attributes = new Attribute[2]; // add a ExtensionRequest attribute for KeyUsage digitalSignature KeyUsage keyUsage = new KeyUsage(KeyUsage.digitalSignature); ExtensionRequest extensionRequest = new ExtensionRequest(); extensionRequest.addExtension(keyUsage); attributes[0] = new Attribute(extensionRequest); // and an challenge password ChallengePassword challengePassword = new ChallengePassword("myPassword"); attributes[1] = new Attribute(challengePassword); // now set the attributes request.setAttributes(attributes);

...

ExtensionRequest extensionRequest = (ExtensionRequest)request.getAttributeValue(ExtensionRequest.oid); if (extensionRequest != null) { // we know that KeyUsage is included keyUsage = (KeyUsage)extensionRequest.getExtension(KeyUsage.oid); System.out.println("ExtensionRequest for KeyUsage: " + keyUsage); }

// look for a ChallengePassword attribute ChallengePassword challengePassword = (ChallengePassword)request.getAttributeValue(ChallengePassword.oid); if (challengePassword != null) { System.out.println("Challenge password: \"" + challengePassword.getPassword() + "\"."); }

iaik.pkcs.pkcs10.
CertificateRequest

C

Now ensures that a newly generated or modified request only may be encoded or verified if it has been signed; improved internal ASN.1 handling

iaik.pkcs.pkcs10.
CertificateRequest

NF

New sign and verify methods allowing to specify the provider to be used; new method setSignature allowing to set the signature value calculated from outside (may be used for integrating signature values calculated by smartcards)

iaik.pkcs.pkcs10.
CertificateRequest

NF

New methods to fit into the new ASN.1 attribute handling framework (see Attribute above)

iaik.pkcs.pkcs10.
CertificateRequest

C

Changed toString output to print key length and both MD5 and SHA-1 fingerprint.

iaik.security.cipher.
ISO78164Padding

NF

Padding scheme as described in the ISO 7816-4 Standard (Information technology -- Identification cards -- Integrated circuit(s) cards with contacts -- Part 4: Interindustry commands for interchange):

Cipher c = Cipher.getInstance("algorithm/mode/ISO78164Padding");

iaik.security.cipher.PBEKey

C

Method getEncoded now returns an UTF8 encoding of the password.

iaik.security.dh.ESDHPublickey,
iaik.security.dh.EDSHPrivateKey

B

Used wrong AlgorithmID so far (corrected from to "1.2.840.113549.1.9.16.3.5" to "1.2.840.10046.2.1").

iaik.security.mac

NF

Implementations for HMacRipeMd128, HMacRipeMd160, HMacSha256, HMacSha384, HMacSha512 added ("HMAC/RIPEMD128", "HMAC/RIPEMD160", "HMAC/SHA256", "HMAC/SHA384", "HMAC/SHA512").

iaik.security.mac.HMac

B

HMac engine may not have been properly reset when reinitialized.

iaik.security.rsa.RSAPublicKey

NF

Static method parse added allowing to parse a raw PKCS#1 encoded RSA public key.

iaik.security.rsa

NF

Implementations for RipeMd128WithRSAEncryption, RipeMd160WithRSAEncryption, Sha256WithRSAEncryption, Sha384WithRSAEncryption, Sha512WithRSAEncryption added ("RIPEMD128/RSA", "RIPEMD160/RSA", "SHA256/RSA", "SHA384/RSA", "SHA512/RSA").

iaik.utils.MacInputStream
iaik.utils.MacOutputStream

NF

Streams allowing to calculate a Mac on the data while reading/writing it from/to the underlying stream; similar to DigestStreams

iaik.utils.RFC2253NameParser

NF

Now allows dynamic association shortName -- OID.

iaik.x509.X509Certificate,
iaik.x509.X509CRL,
iaik.x509.X509Extensions
iaik.x509.RevokedCertificate,
iaik.x509.attr.AttributeCertificate,
iaik.x509.ocsp.OCSPExtensions

C

Method getExtensionValue now retruns the extnValue OCTET STRING immediately instead of the encoding of the specific extension´s ASN.1 value itself (to ensure compatibility to standard JDK certificate API)

iaik.x509.X509Certificate

C

Method getBasicConstraints returns Integer.MAX_VALUE if cA==true but pathLenConstraints is not set (according to JDK1.3)

iaik.x509.X509Certificate,
iaik.x509.X509CRL,
iaik.x509.attr.AttributeCertificate

NF

New method sign allowing to specify the provider to be used; new method setSignature allowing to set the signature value calculated from outside (may be used for integrating signature values calculated by smartcards), e.g.:

X509Certificate cert = ...; ... // set issuer, subject, validity, ... ... // set the signature algorithm to be used for signing cert.setSignatureAlgorithm(AlgorithmID.sha1WithRSAEncryption); // get the to-be-signed value byte[] tbs = cert.getTBSCertificate(); // now calculate the signature over the tbs certificate byte[] signatureValue = calculateSignature(tbs); // and set the signatureValue cert.setSignature(signatureValue); // encode the certificate byte[] encodedCert = cert.getEncoded();

iaik.x509.X509Certificate

C

Changed toString output to print key length and both MD5 and SHA-1 fingerprint.

iaik.x509.V3Extension

C

Method setCritical now returns the extension object itself to allow chained constructions like: caCert.addExtension(new KeyUsage(KeyUsage.keyCertSign).setCritical(true));

iaik.x509.extensions.
netscape.NetscapeCertType

B

Method toASN1Object: mark trailing zeros as unused to give right DER encoding

iaik.x509.ocsp.BasicOCSPResponse,
iaik.x509.ocsp.OCSPRequest

C

New method sign allowing to specify the provider to be used; Improved internal ASN.1 handling

iaik.x509.qualified.*

C

Adopted to RFC3039.

 

 
print    tip a friend
back to previous page back  |  top to the top of the page