Legal claims defining the scope of protection, as filed with the USPTO.
1. An apparatus for performing MD5 digesting, comprising: a variable storage device configured to store root variables; a function computing mechanism configured to compute auxiliary functions based on values of a portion of the root variables, a first value corresponding to a root variable not in the portion of the root variables and a second value corresponding to the root variable, wherein the actual value of the root variable is an iteration result of a preceding iteration; a pre-addition calculator to calculate a sum among three parameters, in parallel with the auxiliary function computation performed by the function computing mechanism; and a post processor to produce an iteration result for an MD5 digesting process based at least in part on output data from the function computing mechanism, the iteration result of the preceding iteration and output data from the pre-addition calculator.
2. The apparatus of claim 1 , wherein the MD5 digesting process comprises four rounds of computations, each round including sixteen iterations of computations.
3. The apparatus of claim 1 , wherein the function computing mechanism comprises four function calculators, each function calculator being used for a round of computations.
4. The apparatus of claim 1 , wherein the iteration result is used to update one of the root variables in the variable storage device.
5. The apparatus of claim 1 , further comprising a controller to control the variable storage device, the function computing mechanism, the pre-addition calculator, and the post processor to produce the iteration result and to perform iterations of computations required by the MD5 digesting process for generating a digest for an input message.
6. The apparatus of claim 1 , wherein the variable storage device rotates values of the root variables after one iteration of computations is completed and before the next iteration of computations starts, under the control of the controller.
7. The apparatus of claim 1 , wherein the post processor comprises: a function result selector to select a result among results generated by four function calculators in the function computing mechanism, corresponding to a round of computations; a first adder to add output data from the pre-addition calculator and the selected result from the function computing mechanism; a shifter to shift output data from the first adder by a predetermined number of bits; and a second adder to add output data from the shifter and one of the root variables to produce the iteration result.
8. The apparatus of claim 1 , wherein the three parameters comprise one of the root variables, one pre-determined parameter, and a parameter derived from an input message.
9. An apparatus for performing message digesting, comprising: a variable storage device configured to store root variables; a function computing mechanism configured to compute a first set of functions based on a first value corresponding to a root variable and a second set of functions based on a second value corresponding to the root variable, wherein the actual value of the root variable is an iteration result of a preceding iteration, both the first set of functions and the second set of functions based on values of a portion of the root variables wherein the portion of the root variables does not include the root variable; a pre-addition calculator to calculate a sum among a set of parameters, in parallel with the auxiliary function computation performed by the function computing mechanism; and a post processor to produce an iteration result for a message digesting process based at least in part on output data from the function computing mechanism, the iteration result of the preceding iteration and output data from the pre-addition calculator.
10. The apparatus of claim 9 , wherein the message digesting process comprises M rounds of computations, each round including N iterations of computations, wherein M and N are positive integers.
11. The apparatus of claim 9 , wherein each of the first set and the second set of functions comprises K function calculators, a function calculator in the first set and a corresponding function calculator in the second set being used for a round of computations, wherein K is a positive integer.
12. The apparatus of claim 9 , wherein the iteration result is used to update one of the root variables in the variable storage device.
13. The apparatus of claim 9 , further comprising a controller to control the variable storage device, the function computing mechanism, the pre-addition calculator, and the post processor to produce the iteration result and to perform iterations of computations required by the message digesting process for generating a digest for an input message.
14. The apparatus of claim 9 , wherein the variable storage device rotates values of the root variables after one iteration of computations is completed and before the next iteration of computations starts, under the control of the controller.
15. The apparatus of claim 13 , wherein the controller controls the pre-addition calculator, the function computing mechanism, and the post processor to pipeline operations involved in successive iterations.
16. The apparatus of claim 9 , wherein the post processor comprises: a first function result selector to select a first result among results generated by the first set of functions in the function computing mechanism, corresponding to a round of computations; a second function result selector to select a second result among results generated by the first set of functions in the function computing mechanism, corresponding to the round of computations; a bitwise selector to select a set of bits between the first result and the second result, based on the iteration result of the preceding iteration, wherein the set of bits forms a final function result; a first adder to add output data from the pre-addition calculator and the final function result; a shifter to shift output data from the first adder by a predetermined number of bits; and a second adder to add output data from the shifter and one of the root variables from the variable storage device to produce a result for a current iteration of computations.
17. The apparatus of claim 9 , wherein the set of parameters comprises one of the root variables, one pre-determined parameter, and a parameter derived from an input message.
18. A method for performing MD5 digesting, comprising: receiving a first message at an apparatus for performing MD5 digesting; preparing the first message using a preparation mechanism to generate a second message and a plurality of parameters, wherein the second message has a length of a multiple of 16-word blocks; initializing root variables stored in a variable storage device; performing four rounds of computations for each 16-word block in the second message, based at least in part on the plurality of parameters and the initialized root variables, to produce a digest for the first message, wherein each round comprises a plurality of iterations including iteration n and iteration n+1, each iteration comprising a computation, and iteration n+1 being based on a result of iteration n, and the computation of iteration n is performed by a pre-addition calculator in parallel with the computation of iteration n+1, wherein the computation of iteration n is computed by computing an actual value of a root variable, and the computation of iteration n+1 comprises a function computing mechanism configured to compute an auxiliary function based on a first value of the root variable and computing the auxiliary function based on a second value of the root variable, the actual value of the root variable being the result of iteration n; and circularly rotating root variables using a controller after each iteration of computations is completed and before a succeeding iteration starts.
19. The method of claim 18 , wherein each of the four rounds of computations comprises 16 iterations of computations.
20. The method of claim 18 , wherein the four rounds of computation comprise computation of four functions, each function corresponding to a round, and the same function used for 16 iterations of the same round.
21. The method of claim 18 , wherein the digest comprises final values of the root variables.
22. The method of claim 19 , wherein iterations of computations in the four rounds comprise a two-stage pipeline, each iteration of computations including a first stage and a second stage.
23. The method of claim 22 , wherein each of the first stage and the second stage is performed within one clock cycle, the second stage of an iteration and the first stage of a succeeding iteration are performed within one clock cycle.
24. A method for pipelining message digesting, comprising: receiving a first message at an apparatus for performing message digesting; preparing the first message using a preparation mechanism to generate a second message and a plurality of parameters, wherein the second message has a length of a multiple of N-word blocks, wherein N is a positive integer; initializing root variables stored in a variable storage device; and performing M rounds of computations for each N-word block in the second message, based at least in part on the plurality of parameters and the initialized root variables, to produce a digest for the first message, wherein M is a positive integer and a round of computations comprises a multiple of iterations of computations including iteration n and iteration nil, and iteration n+1 being based on a result of iteration n, iterations of computations being computed using a two-stage pipeline, wherein a second stage of iteration n is performed by a pre-addition calculator in parallel with a first stage of iteration n+1, wherein the second stage of iteration n comprises computing an actual value of a root variable, and the first stage of iteration nil comprises a function computing mechanism configured to compute an auxiliary function based on a first value of the root variable and computing the auxiliary function based on a second value of the root variable, the actual value of the root variable being the result of iteration n, and a result from an iteration being used to update one of the root variables; and rotating root variables using a controller after an iteration of computations is completed and before a succeeding iteration starts.
25. The method of claim 24 , wherein the digest comprises final values of the root variables.
26. The method of claim 24 , wherein each stage is computed within one clock cycle.
27. The method of claim 24 , wherein the first stage comprises: performing a pre-addition among one of the root variables, one pre-determined parameter, and a parameter derived from the second stage; computing a first set of K functions and a second set of K functions, wherein K is a positive integer and each function is required for a round of computations; and selecting a first result from results obtained from the first set and selecting a second result from results obtained from the second set.
28. The method of claim 24 , wherein the second stage comprises: selecting, bit by bit between a first function result and a second function result, based on a final result from a preceding iteration, wherein the first function result is the auxiliary function based on the first value of the root variable, the second function result is the auxiliary function based on the second value of the root variable and the final result is the actual value of the root variable; adding the final function result and output data from a pre-addition performed in the first stage to produce a first intermediate result for a current iteration; shifting the first intermediate result by a pre-determined number of bits to obtain a second intermediate result for the current iteration; and adding the second intermediate result and one of the root variables to produce a final result for the current iteration.
29. A network system, comprising: a switch fabric; a plurality of line cards interconnected by the switch fabric; and a plurality of MD5 modules, each operably coupled with a line card to perform MD5 digesting, an MD5 module including: a variable storage device configured to store root variables; a function computing mechanism configured to compute auxiliary functions based on values of a portion of the root variables, a first value corresponding to a root variable not in the portion of the root variables and a second value corresponding to the root variable wherein the actual value of the root variable is an iteration result of a preceding iteration; a pre-addition calculator to calculate a sum among three parameters, in parallel with auxiliary function computation performed by the function computing mechanism; and a post processor to produce an iteration result for an MD5 digesting process based at least in part on output data from the function computing mechanism, the iteration result of the preceding iteration and output data from the pre-addition calculator.
30. The network system of claim 29 , wherein the MD5 digesting process comprises four rounds of computations, each round including sixteen iterations of computations.
31. The network system of claim 29 , wherein the function computing mechanism comprises four function calculators, each function calculator being used for a round of computations.
32. The network system of claim 29 , wherein the iteration result is used to update one of the root variables in the variable storage device.
33. The network system of claim 29 , further comprising a controller to control the variable storage device, the function computing mechanism, the pre-addition calculator, and the post processor to produce the iteration result and to perform iterations of computations required by the MD5 digesting process for generating a digest for an input message.
34. The network system of claim 29 , wherein the variable storage device rotates values of the root variables after one iteration of computations is completed and before the next iteration of computations starts, under the control of the controller.
35. The network system of claim 29 , wherein the post processor comprises: a function result selector to select a result among results generated by four function calculators in the function computing mechanism, corresponding to a round of computations; a first adder to add output data from the pre-addition calculator and the selected result from the function computing mechanism; a shifter to shift output data from the first adder by a predetermined number of bits; and a second adder to add output data from the shifter and one of the root variables to produce the iteration result.
36. The network system of claim 29 , wherein the three parameters comprise one of the root variables, one pre-determined parameter, and a parameter derived from an input message.
37. A network system, comprising: a switch fabric; a plurality of line cards interconnected by the switch fabric; and a plurality of message digesting modules, each operably coupled with a line card to perform message digesting, an message digesting module including: a variable storage device configured to store root variables; a function computing mechanism configured to compute a first set of functions based on a first value corresponding to root variable and a second set of functions based on a second value corresponding to the root variable, wherein the actual value of the root variable is an iteration result of a preceding iteration, both the first set of functions and the second set of functions based on values of a portion of the root variables wherein the portion of the root variables does not include the root variable; a pre-addition calculator to calculate a sum among a set of parameters, in parallel with auxiliary function computation performed by the function computing mechanism; and a post processor to produce an iteration result for a message digesting process based at least in part on output data from the function computing mechanism, the iteration result of the preceding iteration and output data from the pre-addition calculator.
38. The network system of claim 37 , wherein the message digesting process comprises M rounds of computations, each round including N iterations of computations, wherein M and N are positive integers.
39. The network system of claim 37 , wherein each of the first set and the second set of functions comprises K function calculators, a function calculator in the first set and a corresponding function calculator in the second set being used for a round of computations, wherein K is a positive integer.
40. The network system of claim 37 , wherein the iteration result is used to update one of the root variables in the variable storage device.
41. The network system of claim 37 , further comprising a controller to control the variable storage device, the function computing mechanism, the pre-addition calculator, and the post processor to produce the iteration result and to perform iterations of computations required by the message digesting process for generating a digest for an input message.
42. The network system of claim 37 , wherein the variable storage device rotates values of the root variables after one iteration of computations is completed and before the next iteration of computations starts, under the control of the controller.
43. The network system of claim 41 , wherein the controller controls the pre-additioncalculator, the function computing mechanism, and the post processor to pipeline operations involved in successive iterations.
44. The network system of claim 37 , wherein the post processor comprises: a first function result selector to select a first result among results generated by the first set of functions in the function computing mechanism, corresponding to a round of computations; a second function result selector to select a second result among results generated by the first set of functions in the function computing mechanism, corresponding to the round of computations; a bitwise selector to select a set of bits between the first result and the second result, based on the iteration result of the preceding iteration, wherein the set of bits forms a final function result; a first adder to add output data from the pre-addition calculator and the final function result; a shifter to shift output data from the first adder by a predetermined number of bits; and a second adder to add output data from the shifter and one of the root variables from the variable storage device to produce a result for a current iteration of computations.
45. The network system of claim 37 , wherein the set of parameters comprises one of the root variables, one pre-determined parameter, and a parameter derived from an input message.
Unknown
December 1, 2009
Browse 5M+ US patents with plain-English claim translations and AI-generated analysis.