The following are text descriptions of images used in Java Cryptography Architecture (JCA) Reference Guide
This figure consists of two diagrams. The first diagram represents an application that requests and MD5 algorithm implementation without specifying a provider name. The second diagram represents an application that requests and MD5 algorithm implementation from a specific provider:
This figure consists of five cylinders arranged in three rows. These cylinders, from top to bottom, are labeled as follows:
X
on it)An arrow labeled MessageDigest_getInstance("MD5")
with an arrow head labeled "MDS MessageDigest from ProviderB" starts from the Application cylinder and passes through the following objects:
The arrow head points to the Application cylinder.
This figure consists of five cylinders arranged in three rows. These cylinders, from top to bottom, are labeled as follows:
An arrow labeled MessageDigest_getInstance("MD5", "ProviderC")
with an arrow head labeled "MDS MessageDigest from ProviderC" starts from the Application cylinder and passes through the following objects:
The arrow head points to the Application cylinder.
This figure consists of five boxes:
Application: This box contains the following pseudocode:
c:Cipher.getInstance("AES");
JCA/JCE: This box contains the following list:
CSP, CSP2, CSP3: These boxes represent cryptographic service providers
The fifth box represents CSP3. It contains the following headers and pseudocode:
Provider.class
"Cipher.AES" -> "com.foo.AESCipher"
com.foo.AESCipher.class
package com.foo: class AESCipher extends CipherSPi { . . . }
Arrows connect the boxes as follows:
A dotted line connects CSP3 to the headings Provider.class and com.foo.AESCipher.class
This figure consists of a cylinder labeled Provider C and a box. Dotted lines are used to indicate that Provider C contains the contents of the box. The box contains the following headers and Java code:
provider.java
public class fooJCA extends Provider { . . . put("MessageDigest.MD5", "com.foo.MD5"); . . . {}
com.foo.MD5.java
package com.foo; public class MD5 extends MessageDigestSpi { . . . }
This figure consists of three boxes labeled as follows:
Labeled arrows connect these boxes:
setSeed()
: From Seed to SecureRandom (SHA1PRNG)digest()
and nextBytes()
: From SecureRandom (SHA1PRNG) to dataThis figure consists of three boxes labeled as follows:
Labeled arrows connect these boxes:
update()
: From Data to Message Digest (MD5)digest()
: From Message Digest (MD5) to Digest/HashThis figure consists of boxes labeled as follows:
Labeled arrows connect these boxes:
update()
: From Data to Signature (MD5withRSA) #1update()
: From Data to Signature (MD5withRSA) #2sign()
: From Signature (MD5withRSA) #1 to Signature Bytesverify()
: From Signature Bytes Data to Signature (MD5withRSA) #2Unlabeled arrows connect these boxes:
This figure consists of boxes labeled as follows:
Labeled arrows connect these boxes:
update()
: From Plaintext to the Cipher (AES) #1doFinal()
: From Plaintext to Encryptupdate()
: From Ciphertext to the Cipher (AES) #2doFinal()
: From Ciphertext to DecryptUnlabeled arrows connect these boxes:
This figure consists of boxes labeled as follows:
Labeled arrows connect these boxes:
update()
: From Data #1 to MAC (HmacMD5) #1doFinal()
: From Data #1 to MAC (HmacMD5) #1update()
: From Data #2 to MAC (HmacMD5) #2doFinal()
: From Data #2 to MAC (HmacMD5) #2Unlabeled arrows connect these boxes:
This figure consists of two diagrams:
This diagram contains the following caption: Generators — Generate new objects based on initialization parameters
It consists of boxes labeled as follows:
Unlabeled arrows connect these boxes:
This diagram contains the following caption: Factories — Transform existing specific objects into other object types
It consists of boxes labeled as follows:
Unlabeled arrows connect these boxes:
This figure consists of boxes labeled as follows:
Labeled arrows connect these boxes:
generatePrivate()
: From Key Factory (RSA) #1 to Private KeygeneratePublic()
: From Key Factory (RSA) #1 to Public KeygetKeySpec()
: From Key Factory (RSA) #2 to Key SpecUnlabeled arrows connect these boxes:
This figure consists of boxes labeled as follows:
generateSecret()
getKeySpec()
Unlabeled arrows connect these boxes:
generateSecret()
generateSecret()
to Secret Key #1getKeySpec()
getKeySpec()
to Key Spec #2This figure consists of boxes labeled as follows:
Labeled arrows connect these boxes:
init()
: From key length to Key Pair Generator (DH)init()
: From AlgorithmParameterSpec to Key Pair Generator (DH)genKeyPair()
: From Key Pair Generator (DH) to Key PairgetPrivate()
: From Key Pair to Private KeygetPublic()
: From Key Pair to Public KeyThis figure consists of boxes labeled as follows:
Labeled arrows connect these boxes:
init()
: From key length to Key Generator (AES)init()
: From AlgorithmParameterSpec to Key Generator (AES)generateKey()
: From Key Generator (AES) to Secret PairThis figure is divided into halves by a dashed line. The top half is labeled Alice, and the bottom half is labeled Bob. The figure consists of boxes labeled as follows:
Labeled arrows connect these boxes:
init()
: From Alice's Private Key to Key Agreement (DH)doPhase()
: From Bob's Public Key to Key Agreement (DH)generateSecret()
: From Key Agreement (DH) to Bytesinit()
: From Bob's Private Key to Key Agreement (DH)doPhase()
: From Alice's Public Key to Key Agreement (DH)generateSecret()
: From Key Agreement (DH) to BytesA double-headed arrow joins the Bytes boxes in Alice's and Bob's halves. This arrow is labeled "Should be the same."
init()
: From key length to Key Generator (AES)init()
: From AlgorithmParameterSpec to Key Generator (AES)generateKey()
: From Key Generator (AES) to Secret PairThis figure consists of a table labeled JKS and a cylinder labeled File.
The table JKS contains the following:
Alias | Type | Data |
---|---|---|
Brad | Secret Key | ... |
Milton | Trusted Certificate | ... |
Duke | Trusted Certificate | ... |
An arrow labeled store()
points from the JKS table to the File cylinder. An arrow labeled load()
points from the File cylinder to the JKS cylinder.
This figure contains two lists of steps that are next to each other. The list to the left is labeled Client. The list to the right is labeled Server.
The Client list contains the following items:
Five empty lines separate item 1. Client hello and item 7. Certificate. Two empty lines separate item 11. Finished and item 14. Finished.
The Server list contains the following items:
Five empty lines separate item 6. Server hello done and item 12. Change cipher spec.
An arrow points from each item in the Client list to the corresponding empty line in the Server list. Similarly, an arrow points from each item in the Server list to the corresponding empty line in the Client list. For items 14 and 15 in the Client and Server lists, double-headed arrows connect them instead.