DETAILED ACTION
This final office action is in response to claims 1-25 filed on 04/06/2026 for examination. Claims 1-25 are being examined and are pending.
Notice of Pre-AIA or AIA Status
The present application, filed on or after March 16, 2013, is being examined under the first inventor to file provisions of the AIA .
In the event the determination of the status of the application as subject to AIA 35 U.S.C. 102 and 103 (or as subject to pre-AIA 35 U.S.C. 102 and 103) is incorrect, any correction of the statutory basis for the rejection will not be considered a new ground of rejection if the prior art relied upon, and the rationale supporting the rejection, would be the same under either status.
Response to Amendment
The amendment filed April 6, 2026 has been entered. Claims 1-25 remain pending in the application. The claims have been amended. Applicant’s arguments and amendments to the claims have overcome the 35 U.S.C. 101 rejections previously set forth in the Non-Final Office Action mailed January 6, 2026. Claims 1, 3, 9, 11, 13, 18, 20, and 23-25 have been amended and have necessitated a new ground(s) of rejection in this Office Action. Further, Applicant’s arguments regarding claims 1-25 have been fully considered but are not persuasive to differentiate over the prior art. Particularly:
Applicant opines that Greiner et al. (US20180097632) fails to teach the newly amended language of “obtaining by the computing device from the instruction a control indicator, the control indicator being a no-initial chaining value provided indicator selectively controlling determination of an initial chaining value”. Remarks, pg. 13. Examiner disagrees. Greiner teaches an extended-output function “XOF” message digest generating system. See, e.g., Greiner at [0059], [0069], [0073-075] and [0133-142]. In Greiner, a padding state “PS” value <i.e., control indicator> is obtained from an instruction. Id. A PS value of PS=0 indicates that padding has not yet been performed and that the starting chaining value used for XOF processing <i.e., initial chaining value> has not been formed/provided as input in the XOF processing <i.e., control indicator of 0 indicates no initial chaining value was provided to XOF>. Id. Next: (1) when PS=0, the padded message is XOR’d with the state array from a zeroed Keccak ICV/previous OCV to form the starting chaining value <i.e., initial chaining value> used in the XOF processing; or (2) when PS=1 XOF processing is performed using the previous OCV as input. Id. I.e., the PS value selectively controls determination of the initial chaining value/state used for digest generation. Id. Accordingly, Greiner teaches “obtaining by the computing device from the instruction a control indicator, the control indicator being a no-initial chaining value provided indicator selectively controlling determination of an initial chaining value.” Id. Applicant’s associated remarks are unpersuasive.
In view of the foregoing, as well as hereinbelow with regards to 35 U.S.C. 102, Applicant’s arguments regarding claims 1-25 have been fully considered but are not persuasive to differentiate over the prior art.
Claim Rejections - 35 USC § 102
The following is a quotation of the appropriate paragraphs of 35 U.S.C. 102 that form the basis for the rejections under this section made in this Office action:
A person shall be entitled to a patent unless –
(a)(1) the claimed invention was patented, described in a printed publication, or in public use, on sale, or otherwise available to the public before the effective filing date of the claimed invention.
Claim(s) 1-25 is/are rejected under 35 U.S.C. 102(a)(1) as being anticipated by Greiner et al. (US20180097632; Hereinafter “Greiner”).
Regarding claim 1, Greiner teaches a computer program product comprising:
a set of one or more computer-readable storage media; and program instructions, collectively stored in the set of one or more computer-readable storage media, for causing at least one computing device to perform computer operations ([0182-183] – processors implement the system by executing instructions stored in non-transitory computer readable storage media) including:
executing an instruction on a computing device to generate a message digest for a message ([0007] and [0062] – instructions are executed to generate a hash <i.e., digest> of a message), the message digest to be used in authentication of the message ([0012], [0055], and [0172] – the hash <i.e., message digest> is used to authenticate the message), the executing the instruction including:
obtaining by the computing device from the instruction a control indicator ([0069], [0073-075], and [0133-142] – an instruction for generating a hash of a message <i.e., message digest> is received. A padding state “PS” value <i.e., control indicator> of the instruction is obtained. A PS=0 indicates that no padding has been performed. If the PS=0 <control indicator> then an initial chaining value “ICV” or previous output chaining value “OCV” is XOR’d with the padded final block to produce the actual starting chaining value <i.e., initial chaining value>. If the PS=1 then the input is the previous OCV. Hashing is performed using the ICV), the control indicator being a no-initial chaining value provided indicator selectively controlling determination of an initial chaining value ([0059], [0069], [0073-075] and [0133-142] – A PS value <i.e., control indicator> equal to zero indicates that padding has not yet been performed and that the starting chaining value <i.e., initial chaining value> for XOF processing has not been formed/provided as input in the XOF processing <i.e., control indicator indicates no initial chaining value was provided>. When PS=0, the padded message is XOR’d with the state array from the ICV to form the starting chaining value <i.e., initial chaining value> used in the XOF processing. When PS=1 XOF processing is performed using the previous OCV as input <i.e., the PS value selectively controls determination of the initial chaining value/state used for digest generation>);
determining, by the computing device based on the control indicator, the initial chaining value to be used to generate the message digest ([0007], [0073-075], and [0133-142] – an instruction for generating a hash of a message <i.e., message digest> is received. A PS value <i.e., control indicator> of the instruction is obtained. A PS=0 indicates that no padding has been performed. If the PS=0 <control indicator> then an initial chaining value “ICV” or previous output chaining value “OCV” is XOR’d with the padded final block. If the PS=1 then the input is the previous OCV. Hashing is performed using the ICV <i.e., the next-execution ICV is determined based on the PS value/control indicator>), the determining the initial chaining value being selectively controlled by the control indicator ([0059], [0069], [0073-075] and [0133-142] – an instruction for generating a hash of a message <i.e., message digest> is received. A PS value <i.e., control indicator> of the instruction is obtained. The PS value selectively controls whether the instruction performs the PS=0 processing path using the state array from the ICV/previous OCV, or performs the PS=1 processing path using a previous OCV as input <i.e., determination of the initial chaining value/state input is selectively controlled by the PS control indicator>);
generating the message digest using the initial chaining value ([0007], [0073-075], and [0133-142] – an instruction for generating a hash of a message <i.e., message digest> is received. A PS value <i.e., control indicator> of the instruction is obtained. A PS=0 indicates that no padding has been performed. If the PS=0 <control indicator> then an initial chaining value “ICV” or previous output chaining value “OCV” is XOR’d with the padded final block. If the PS=1 then the ICV is just set to the previous OCV. Hashing is performed using the ICV. Hashing is performed using the ICV <i.e., message digest generated using the ICV>); and
providing the message digest to be used in the authentication of the message ([0012], [0055], and [0172] – the hash <i.e., message digest> is used to authenticate the message).
Regarding claim 2, Greiner teaches the computer program product of claim 1, wherein the determining the initial chaining value comprises: checking the control indicator ([0069], [0074-075], and [0133-142] – an instruction for generating a hash of a message <i.e., message digest> is received. A PS value <i.e., control indicator> of the instruction is checked. If the PS=0 then the starting chaining value is set to the previous “OCV” XOR’d with the padded final block. If the PS=1 then the chaining value is just set to the previous OCV. Hashing is performed using the chaining value); and
using a program provided initial chaining value as the initial chaining value, based on the control indicator being a selected value ([0069], [0074-075], and [0133-142] – an instruction for generating a hash of a message <i.e., message digest> is received. A PS value <i.e., control indicator> of the instruction is checked. If the PS=0 then the starting chaining value is set to the previous “OCV” XOR’d with the padded final block. If the PS=1 then the chaining value is just set to the previous OCV <i.e., initial chaining value is determined/provided by a program, based on the PS value>. Hashing is performed using the chaining value).
Regarding claim 3, Greiner teaches the computer program product of claim 2, wherein the determining the initial chaining value comprises using a default value as the initial chaining value, based on the control indicator being another selected value, the default value being a predefined, set value ([0069], [0074-075], and [0133-142] – an instruction for generating a hash of a message <i.e., message digest> is received. A PS value <i.e., control indicator> of the instruction is checked. If the PS=0 then the starting chaining value <i.e., initial chaining value> is set to a previously defined “OCV” XOR’d with the padded final block. If the PS=1 then the initial chaining value is just set to the previous OCV without XOR’ing it <i.e., initial/starting chaining value is the “default” unedited OCV if PS=1, and uses an edited/modified OCV if PS=0>. The OCV is set/predefined before the instruction’s PS value is checked).
Regarding claim 4, Greiner teaches the computer program product of claim 1, wherein the message digest is an intermediate message digest for the message ([0133], [0113], and [0055] – the hashing/digest may be an intermediate message digest for the message).
Regarding claim 5, Greiner teaches the computer program product of claim 1, wherein the message digest is a last message digest for the message ([0133], [0113], and [0055] – the hashing/digest may be a last message digest for the message).
Regarding claim 6, Greiner teaches the computer program product of claim 5, wherein the executing the instruction further includes controlling a storing of at least a part of an output chaining value produced in generating the last message digest based on another control indicator of the instruction ([0140-146], [0089-096], and [0106] – the instruction uses the first-operand length control in R1+1 <i.e., an operand/control input to the instruction> to control whether any bytes of the OCV are stored to the first-operand output buffer. If the length is zero, no first-operand storing occurs. When non-zero, the instruction stores the first n bytes of the OCV to the first operand).
Regarding claim 7, Greiner teaches the computer program product of claim 6, wherein the controlling the storing of the at least a part of the output chaining value includes selectively bypassing a storing the at least a part of the output chaining value based on the another control indicator being set to a selected value ([0140-146], [0089-096], and [0106] – when the first operand length is zero <i.e., a selected value>, the first operand is not accessed/the instruction completes without storing OCV bytes to the first operand <i.e., it bypasses storing that part of the OCV to the output operand).
Regarding claim 8, Greiner teaches the computer program product of claim 6, wherein the controlling the storing of the at least a part of the output chaining value includes storing the at least a part of the output chaining value based on the another control indicator being set to another selected value ([0140-146], [0089-096], and [0106] – when the first operand length is non-zero <i.e., another selected value>, the instruction stores the first n bytes of the output chaining value at the first operand location and repeats until the first-operand length becomes zero or partial completion occurs).
Regarding claim 9, Greiner teaches the computer program product of claim 1, wherein the computer operations further include:
interrupting execution of the instruction executing on the computing device ([0035], [0057], [0103-104] – KMLD may be interrupted to end with a partial completion. On partial completion, the CPU updates instruction inputs so the execution can branch back to re-execute the instruction to continue); and
resuming execution of the instruction using at least one selected input of the instruction ([0057], [0062], [0160-164] – the instruction stores the OCV into the parameter block. When execution is resumed the function uses the previous operands/register state/OCV as input <i.e., the OCV stored in the parameter block is provided back as an input state to the continued execution>).
Regarding claim 10, Greiner teaches the computer program product of claim 9, wherein the at least one selected input is an output chaining value that is provided as an input to the instruction ([0113], [0140-146], and [0160-164] – the instruction stores the OCV into the parameter block. When execution is resumed the function uses the previous operands/register state/OCV as input <i.e., the OCV stored in the parameter block is provided back as an input state to the continued execution>).
Regarding claim 11, Greiner teaches a computer system comprising: at least one computing device; a set of one or more computer-readable storage media; and program instructions, collectively stored in the set of one or more computer-readable storage media, for causing the at least one computing device to perform computer operations ([0182-183] – processors implement the system by executing instructions stored in non-transitory computer readable storage media) including:
executing an instruction on a computing device to generate a message digest for a message ([0007] and [0062] – instructions are executed to generate a hash <i.e., digest> of a message), the message digest to be used in authentication of the message ([0012], [0055], and [0172] – the hash <i.e., message digest> is used to authenticate the message), the executing the instruction including:
obtaining by the computing device from the instruction a control indicator ([0069], [0073-075], and [0133-142] – an instruction for generating a hash of a message <i.e., message digest> is received. A padding state “PS” value <i.e., control indicator> of the instruction is obtained. A PS=0 indicates that no padding has been performed. If the PS=0 <control indicator> then an initial chaining value “ICV” or previous output chaining value “OCV” is XOR’d with the padded final block to produce the actual starting chaining value <i.e., initial chaining value>. If the PS=1 then the input is the previous OCV. Hashing is performed using the ICV), the control indicator being a no-initial chaining value provided indicator selectively controlling determination of an initial chaining value ([0059], [0069], [0073-075] and [0133-142] – A PS value <i.e., control indicator> equal to zero indicates that padding has not yet been performed and that the starting chaining value <i.e., initial chaining value> for XOF processing has not been formed/provided as input in the XOF processing <i.e., control indicator indicates no initial chaining value was provided>. When PS=0, the padded message is XOR’d with the state array from the ICV to form the starting chaining value <i.e., initial chaining value> used in the XOF processing. When PS=1 XOF processing is performed using the previous OCV as input <i.e., the PS value selectively controls determination of the initial chaining value/state used for digest generation>);
determining, by the computing device based on the control indicator, the initial chaining value to be used to generate the message digest ([0007], [0073-075], and [0133-142] – an instruction for generating a hash of a message <i.e., message digest> is received. A PS value <i.e., control indicator> of the instruction is obtained. A PS=0 indicates that no padding has been performed. If the PS=0 <control indicator> then an initial chaining value “ICV” or previous output chaining value “OCV” is XOR’d with the padded final block. If the PS=1 then the input is the previous OCV. Hashing is performed using the ICV <i.e., the next-execution ICV is determined based on the PS value/control indicator>), the determining the initial chaining value being selectively controlled by the control indicator ([0059], [0069], [0073-075] and [0133-142] – an instruction for generating a hash of a message <i.e., message digest> is received. A PS value <i.e., control indicator> of the instruction is obtained. The PS value selectively controls whether the instruction performs the PS=0 processing path using the state array from the ICV/previous OCV, or performs the PS=1 processing path using a previous OCV as input <i.e., determination of the initial chaining value/state input is selectively controlled by the PS control indicator>);
generating the message digest using the initial chaining value ([0007], [0073-075], and [0133-142] – an instruction for generating a hash of a message <i.e., message digest> is received. A PS value <i.e., control indicator> of the instruction is obtained. A PS=0 indicates that no padding has been performed. If the PS=0 <control indicator> then an initial chaining value “ICV” or previous output chaining value “OCV” is XOR’d with the padded final block. If the PS=1 then the ICV is just set to the previous OCV. Hashing is performed using the ICV. Hashing is performed using the ICV <i.e., message digest generated using the ICV>); and
providing the message digest to be used in the authentication of the message ([0012], [0055], and [0172] – the hash <i.e., message digest> is used to authenticate the message).
Regarding claim 12, Greiner teaches the computer system of claim 11, wherein the determining the initial chaining value comprises: checking the control indicator ([0069], [0074-075], and [0133-142] – an instruction for generating a hash of a message <i.e., message digest> is received. A PS value <i.e., control indicator> of the instruction is checked. If the PS=0 then the starting chaining value is set to the previous “OCV” XOR’d with the padded final block. If the PS=1 then the chaining value is just set to the previous OCV. Hashing is performed using the chaining value); and
using a program provided initial chaining value as the initial chaining value, based on the control indicator being a selected value ([0069], [0074-075], and [0133-142] – an instruction for generating a hash of a message <i.e., message digest> is received. A PS value <i.e., control indicator> of the instruction is checked. If the PS=0 then the starting chaining value is set to the previous “OCV” XOR’d with the padded final block. If the PS=1 then the chaining value is just set to the previous OCV <i.e., initial chaining value is determined/provided by a program, based on the PS value>. Hashing is performed using the chaining value).
Regarding claim 13, Greiner teaches the computer system of claim 12, wherein the determining the initial chaining value comprises using a default value as the initial chaining value, based on the control indicator being another selected value, the default value being a predefined, set value ([0069], [0074-075], and [0133-142] – an instruction for generating a hash of a message <i.e., message digest> is received. A PS value <i.e., control indicator> of the instruction is checked. If the PS=0 then the starting chaining value <i.e., initial chaining value> is set to a previously defined “OCV” XOR’d with the padded final block. If the PS=1 then the initial chaining value is just set to the previous OCV without XOR’ing it <i.e., initial/starting chaining value is the “default” unedited OCV if PS=1, and uses an edited/modified OCV if PS=0>. The OCV is set/predefined before the instruction’s PS value is checked).
Regarding claim 14, Greiner teaches the computer system of claim 11, wherein the message digest is an intermediate message digest for the message ([0133], [0113], and [0055] – the hashing/digest may be an intermediate message digest for the message).
Regarding claim 15, Greiner teaches the computer system of claim 11, wherein the message digest is a last message digest for the message ([0133], [0113], and [0055] – the hashing/digest may be a last message digest for the message).
Regarding claim 16, Greiner teaches the computer system of claim 15, wherein the executing the instruction further includes controlling a storing of at least a part of an output chaining value produced in generating the last message digest based on another control indicator of the instruction ([0140-146], [0089-096], and [0106] – the instruction uses the first-operand length control in R1+1 <i.e., an operand/control input to the instruction> to control whether any bytes of the OCV are stored to the first-operand output buffer. If the length is zero, no first-operand storing occurs. When non-zero, the instruction stores the first n bytes of the OCV to the first operand), wherein the controlling the storing of the at least a part of the output chaining value includes selectively bypassing a storing the at least a part of the output chaining value based on the another control indicator being set to a selected value ([0140-146], [0089-096], and [0106] – when the first operand length is zero <i.e., a selected value>, the first operand is not accessed/the instruction completes without storing OCV bytes to the first operand <i.e., it bypasses storing that part of the OCV to the output operand).
Regarding claim 17, Greiner teaches the computer system of claim 15, wherein the executing the instruction further includes controlling a storing of at least a part of an output chaining value produced in generating the last message digest based on another control indicator of the instruction ([0140-146], [0089-096], and [0106] – the instruction uses the first-operand length control in R1+1 <i.e., an operand/control input to the instruction> to control whether any bytes of the OCV are stored to the first-operand output buffer. If the length is zero, no first-operand storing occurs. When non-zero, the instruction stores the first n bytes of the OCV to the first operand), wherein the controlling the storing of the at least a part of the output chaining value includes storing the at least a part of the output chaining value based on the another control indicator being set to another selected value ([0140-146], [0089-096], and [0106] – when the first operand length is non-zero <i.e., another selected value>, the instruction stores the first n bytes of the output chaining value at the first operand location and repeats until the first-operand length becomes zero or partial completion occurs).
Regarding claim 18, Greiner teaches a computer-implemented method comprising:
executing an instruction on a computing device to generate a message digest for a message ([0007] and [0062] – instructions are executed to generate a hash <i.e., digest> of a message), the message digest to be used in authentication of the message ([0012], [0055], and [0172] – the hash <i.e., message digest> is used to authenticate the message), the executing the instruction including:
obtaining by the computing device from the instruction a control indicator ([0069], [0073-075], and [0133-142] – an instruction for generating a hash of a message <i.e., message digest> is received. A padding state “PS” value <i.e., control indicator> of the instruction is obtained. A PS=0 indicates that no padding has been performed. If the PS=0 <control indicator> then an initial chaining value “ICV” or previous output chaining value “OCV” is XOR’d with the padded final block to produce the actual starting chaining value <i.e., initial chaining value>. If the PS=1 then the input is the previous OCV. Hashing is performed using the ICV), the control indicator being a no-initial chaining value provided indicator selectively controlling determination of an initial chaining value ([0059], [0069], [0073-075] and [0133-142] – A PS value <i.e., control indicator> equal to zero indicates that padding has not yet been performed and that the starting chaining value <i.e., initial chaining value> for XOF processing has not been formed/provided as input in the XOF processing <i.e., control indicator indicates no initial chaining value was provided>. When PS=0, the padded message is XOR’d with the state array from the ICV to form the starting chaining value <i.e., initial chaining value> used in the XOF processing. When PS=1 XOF processing is performed using the previous OCV as input <i.e., the PS value selectively controls determination of the initial chaining value/state used for digest generation>);
determining, by the computing device based on the control indicator, the initial chaining value to be used to generate the message digest ([0007], [0073-075], and [0133-142] – an instruction for generating a hash of a message <i.e., message digest> is received. A PS value <i.e., control indicator> of the instruction is obtained. A PS=0 indicates that no padding has been performed. If the PS=0 <control indicator> then an initial chaining value “ICV” or previous output chaining value “OCV” is XOR’d with the padded final block. If the PS=1 then the input is the previous OCV. Hashing is performed using the ICV <i.e., the next-execution ICV is determined based on the PS value/control indicator>), the determining the initial chaining value being selectively controlled by the control indicator ([0059], [0069], [0073-075] and [0133-142] – an instruction for generating a hash of a message <i.e., message digest> is received. A PS value <i.e., control indicator> of the instruction is obtained. The PS value selectively controls whether the instruction performs the PS=0 processing path using the state array from the ICV/previous OCV, or performs the PS=1 processing path using a previous OCV as input <i.e., determination of the initial chaining value/state input is selectively controlled by the PS control indicator>);
generating the message digest using the initial chaining value ([0007], [0073-075], and [0133-142] – an instruction for generating a hash of a message <i.e., message digest> is received. A PS value <i.e., control indicator> of the instruction is obtained. A PS=0 indicates that no padding has been performed. If the PS=0 <control indicator> then an initial chaining value “ICV” or previous output chaining value “OCV” is XOR’d with the padded final block. If the PS=1 then the ICV is just set to the previous OCV. Hashing is performed using the ICV. Hashing is performed using the ICV <i.e., message digest generated using the ICV>); and
providing the message digest to be used in the authentication of the message ([0012], [0055], and [0172] – the hash <i.e., message digest> is used to authenticate the message).
Regarding claim 19, Greiner teaches the computer-implemented method of claim 18, wherein the determining the initial chaining value comprises: checking the control indicator ([0069], [0074-075], and [0133-142] – an instruction for generating a hash of a message <i.e., message digest> is received. A PS value <i.e., control indicator> of the instruction is checked. If the PS=0 then the starting chaining value is set to the previous “OCV” XOR’d with the padded final block. If the PS=1 then the chaining value is just set to the previous OCV. Hashing is performed using the chaining value); and
using a program provided initial chaining value as the initial chaining value, based on the control indicator being a selected value ([0069], [0074-075], and [0133-142] – an instruction for generating a hash of a message <i.e., message digest> is received. A PS value <i.e., control indicator> of the instruction is checked. If the PS=0 then the starting chaining value is set to the previous “OCV” XOR’d with the padded final block. If the PS=1 then the chaining value is just set to the previous OCV <i.e., initial chaining value is determined/provided by a program, based on the PS value>. Hashing is performed using the chaining value).
Regarding claim 20, Greiner teaches the computer-implemented method of claim 19, wherein the determining the initial chaining value comprises using a default value as the initial chaining value, based on the control indicator being another selected value, the default value being a predefined, set value ([0069], [0074-075], and [0133-142] – an instruction for generating a hash of a message <i.e., message digest> is received. A PS value <i.e., control indicator> of the instruction is checked. If the PS=0 then the starting chaining value <i.e., initial chaining value> is set to a previously defined “OCV” XOR’d with the padded final block. If the PS=1 then the initial chaining value is just set to the previous OCV without XOR’ing it <i.e., initial/starting chaining value is the “default” unedited OCV if PS=1, and uses an edited/modified OCV if PS=0>. The OCV is set/predefined before the instruction’s PS value is checked).
Regarding claim 21, Greiner teaches the computer-implemented method of claim 18, wherein the message digest is an intermediate message digest for the message ([0133], [0113], and [0055] – the hashing/digest may be an intermediate message digest for the message).
Regarding claim 22, Greiner teaches the computer-implemented method of claim 18, wherein the message digest is a last message digest for the message ([0133], [0113], and [0055] – the hashing/digest may be a last message digest for the message).
Regarding claim 23, Greiner teaches the computer-implemented method of wherein the executing the instruction further includes controlling a storing of at least a part of an output chaining value produced in generating the last message digest based on another control indicator of the instruction ([0140-146], [0089-096], and [0106] – the instruction uses the first-operand length control in R1+1 <i.e., an operand/control input to the instruction> to control whether any bytes of the OCV are stored to the first-operand output buffer. If the length is zero, no first-operand storing occurs. When non-zero, the instruction stores the first n bytes of the OCV to the first operand).
Regarding claim 24, Greiner teaches a computer program product comprising:
a set of one or more computer-readable storage media; and program instructions, collectively stored in the set of one or more computer-readable storage media, for causing at least one computing device to perform computer operations ([0182-183] – processors implement the system by executing instructions stored in non-transitory computer readable storage media) including:
executing an instruction on a computing device to generate a message digest for a message ([0007] and [0062] – instructions are executed to generate a hash <i.e., digest> of a message), the instruction including a flags field having at least one control indicator ([0069], [0073-075], and [0133-142] – an instruction for generating a hash of a message <i.e., message digest> is received. The instruction comprises a section for with fields controlling the execution of the hash <i.e., flags fields>. E.g., the instruction’s PS field is checked for a PS value <i.e., control indicator>. If PS=0 then the initial chaining value “ICV” is set to the previous output chaining value “OCV” XOR’d with the padded final block. If the PS=1 then the ICV is just set to the previous OCV. Hashing is performed using the ICV), an address of the message ([0013], [0179], [0071-074] – the instruction comprises an address of the message), and a function code to specify a function of the instruction to be performed ([0073-077], [0082], and [0062] – a function code is included in the instruction and specifies the type of hashing <i.e., function of the instruction> to be performed), the function being a specific hash technique to generate the message digest ([0073-077], [0082], and [0062] – a function code is included in the instruction specifies the type of hashing <i.e., function of the instruction> to be performed), the message digest to be used in authentication of the message ([0012], [0055], and [0172] – the hash <i.e., message digest> is used to authenticate the message), the executing the instruction including:
obtaining by the computing device from the instruction a control indicator of the at least one control indicator ([0069], [0073-075], and [0133-142] – an instruction for generating a hash of a message <i.e., message digest> is received. A padding state “PS” value <i.e., control indicator> of the instruction is obtained. A PS=0 indicates that no padding has been performed. If the PS=0 <control indicator> then an initial chaining value “ICV” or previous output chaining value “OCV” is XOR’d with the padded final block to produce the actual starting chaining value <i.e., initial chaining value>. If the PS=1 then the input is the previous OCV. Hashing is performed using the ICV), the control indicator being a no-initial chaining value provided indicator selectively controlling determination of an initial chaining value ([0059], [0069], [0073-075] and [0133-142] – A PS value <i.e., control indicator> equal to zero indicates that padding has not yet been performed and that the starting chaining value <i.e., initial chaining value> for XOF processing has not been formed/provided as input in the XOF processing <i.e., control indicator indicates no initial chaining value was provided>. When PS=0, the padded message is XOR’d with the state array from the ICV to form the starting chaining value <i.e., initial chaining value> used in the XOF processing. When PS=1 XOF processing is performed using the previous OCV as input <i.e., the PS value selectively controls determination of the initial chaining value/state used for digest generation>);
determining, by the computing device based on the control indicator, the initial chaining value to be used to generate the message digest for the message specified by the instruction ([0007], [0073-075], and [0133-142] – an instruction for generating a hash of a message <i.e., message digest> is received. A PS value <i.e., control indicator> of the instruction is obtained. A PS=0 indicates that no padding has been performed. If the PS=0 <control indicator> then an initial chaining value “ICV” or previous output chaining value “OCV” is XOR’d with the padded final block. If the PS=1 then the input is the previous OCV. Hashing is performed using the ICV <i.e., the next-execution ICV is determined based on the PS value/control indicator>), the determining the initial chaining value being selectively controlled by the control indicator ([0059], [0069], [0073-075] and [0133-142] – an instruction for generating a hash of a message <i.e., message digest> is received. A PS value <i.e., control indicator> of the instruction is obtained. The PS value selectively controls whether the instruction performs the PS=0 processing path using the state array from the ICV/previous OCV, or performs the PS=1 processing path using a previous OCV as input <i.e., determination of the initial chaining value/state input is selectively controlled by the PS control indicator>);
generating the message digest using the initial chaining value ([0007], [0073-075], and [0133-142] – an instruction for generating a hash of a message <i.e., message digest> is received. A PS value <i.e., control indicator> of the instruction is obtained. A PS=0 indicates that no padding has been performed. If the PS=0 <control indicator> then an initial chaining value “ICV” or previous output chaining value “OCV” is XOR’d with the padded final block. If the PS=1 then the ICV is just set to the previous OCV. Hashing is performed using the ICV. Hashing is performed using the ICV <i.e., message digest generated using the ICV>); and
providing the message digest to be used in the authentication of the message ([0012], [0055], and [0172] – the hash <i.e., message digest> is used to authenticate the message).
Regarding claim 25, Greiner teaches a computer-implemented method comprising: executing an instruction on a computing device to generate a message digest for a message ([0007] and [0062] – instructions are executed to generate a hash <i.e., digest> of a message), the instruction including a flags field having at least one control indicator ([0069], [0073-075], and [0133-142] – an instruction for generating a hash of a message <i.e., message digest> is received. The instruction comprises a section for with fields controlling the execution of the hash <i.e., flags fields>. E.g., the instruction’s PS field is checked for a PS value <i.e., control indicator>. If PS=0 then the initial chaining value “ICV” is set to the previous output chaining value “OCV” XOR’d with the padded final block. If the PS=1 then the ICV is just set to the previous OCV. Hashing is performed using the ICV), an address of the message ([0013], [0179], [0071-074] – the instruction comprises an address of the message), and a function code to specify a function of the instruction to be performed ([0073-077], [0082], and [0062] – a function code is included in the instruction and specifies the type of hashing <i.e., function of the instruction> to be performed), the function being a specific hash technique to generate the message digest ([0073-077], [0082], and [0062] – a function code is included in the instruction specifies the type of hashing <i.e., function of the instruction> to be performed), the message digest to be used in authentication of the message ([0012], [0055], and [0172] – the hash <i.e., message digest> is used to authenticate the message), the executing the instruction including:
obtaining by the computing device from the instruction a control indicator of the at least one control indicator ([0069], [0073-075], and [0133-142] – an instruction for generating a hash of a message <i.e., message digest> is received. A padding state “PS” value <i.e., control indicator> of the instruction is obtained. A PS=0 indicates that no padding has been performed. If the PS=0 <control indicator> then an initial chaining value “ICV” or previous output chaining value “OCV” is XOR’d with the padded final block to produce the actual starting chaining value <i.e., initial chaining value>. If the PS=1 then the input is the previous OCV. Hashing is performed using the ICV), the control indicator being a no-initial chaining value provided indicator selectively controlling determination of an initial chaining value ([0059], [0069], [0073-075] and [0133-142] – A PS value <i.e., control indicator> equal to zero indicates that padding has not yet been performed and that the starting chaining value <i.e., initial chaining value> for XOF processing has not been formed/provided as input in the XOF processing <i.e., control indicator indicates no initial chaining value was provided>. When PS=0, the padded message is XOR’d with the state array from the ICV to form the starting chaining value <i.e., initial chaining value> used in the XOF processing. When PS=1 XOF processing is performed using the previous OCV as input <i.e., the PS value selectively controls determination of the initial chaining value/state used for digest generation>);
determining, by the computing device based on the control indicator, the initial chaining value to be used to generate the message digest for the message specified by the instruction ([0007], [0073-075], and [0133-142] – an instruction for generating a hash of a message <i.e., message digest> is received. A PS value <i.e., control indicator> of the instruction is obtained. A PS=0 indicates that no padding has been performed. If the PS=0 <control indicator> then an initial chaining value “ICV” or previous output chaining value “OCV” is XOR’d with the padded final block. If the PS=1 then the input is the previous OCV. Hashing is performed using the ICV <i.e., the next-execution ICV is determined based on the PS value/control indicator>), the determining the initial chaining value being selectively controlled by the control indicator ([0059], [0069], [0073-075] and [0133-142] – an instruction for generating a hash of a message <i.e., message digest> is received. A PS value <i.e., control indicator> of the instruction is obtained. The PS value selectively controls whether the instruction performs the PS=0 processing path using the state array from the ICV/previous OCV, or performs the PS=1 processing path using a previous OCV as input <i.e., determination of the initial chaining value/state input is selectively controlled by the PS control indicator>);
generating the message digest using the initial chaining value ([0007], [0073-075], and [0133-142] – an instruction for generating a hash of a message <i.e., message digest> is received. A PS value <i.e., control indicator> of the instruction is obtained. A PS=0 indicates that no padding has been performed. If the PS=0 <control indicator> then an initial chaining value “ICV” or previous output chaining value “OCV” is XOR’d with the padded final block. If the PS=1 then the ICV is just set to the previous OCV. Hashing is performed using the ICV. Hashing is performed using the ICV <i.e., message digest generated using the ICV>); and
providing the message digest to be used in the authentication of the message ([0012], [0055], and [0172] – the hash <i.e., message digest> is used to authenticate the message).
Conclusion
The prior art made of record and not relied upon is considered pertinent to applicant's disclosure: Lundvall et al. (US20040230814) teaches a system for implementing KIMD and KLMD hashing, wherein a function code is used to determine the initial chaining value (see, e.g., Lundvall at [0033-040], [0075-077], and [0107-112]). Buer et al. (US20070110230) teaches a hashing accelerator that speeds up authentication by starting from an initial hash state and then calculating subsequent blocks based on the prior blocks output state (see, e.g., abstract, [0009], [0011], and [0036]).
Applicant's amendment necessitated the new ground(s) of rejection presented in this Office action. Accordingly, THIS ACTION IS MADE FINAL. See MPEP § 706.07(a). Applicant is reminded of the extension of time policy as set forth in 37 CFR 1.136(a).
A shortened statutory period for reply to this final action is set to expire THREE MONTHS from the mailing date of this action. In the event a first reply is filed within TWO MONTHS of the mailing date of this final action and the advisory action is not mailed until after the end of the THREE-MONTH shortened statutory period, then the shortened statutory period will expire on the date the advisory action is mailed, and any nonprovisional extension fee (37 CFR 1.17(a)) pursuant to 37 CFR 1.136(a) will be calculated from the mailing date of the advisory action. In no event, however, will the statutory period for reply expire later than SIX MONTHS from the mailing date of this final action.
Any inquiry concerning this communication or earlier communications from the examiner should be directed to JOSHUA RAYMOND WHITE whose telephone number is (571)272-4365. The examiner can normally be reached Monday-Thursday, & Alternate Fridays.
Examiner interviews are available via telephone, in-person, and video conferencing using a USPTO supplied web-based collaboration tool. To schedule an interview, applicant is encouraged to use the USPTO Automated Interview Request (AIR) at http://www.uspto.gov/interviewpractice.
If attempts to reach the examiner by telephone are unsuccessful, the examiner’s supervisor, Taghi Arani can be reached at 5712723787. The fax phone number for the organization where this application or proceeding is assigned is 571-273-8300.
Information regarding the status of published or unpublished applications may be obtained from Patent Center. Unpublished application information in Patent Center is available to registered users. To file and manage patent submissions in Patent Center, visit: https://patentcenter.uspto.gov. Visit https://www.uspto.gov/patents/apply/patent-center for more information about Patent Center and https://www.uspto.gov/patents/docx for information about filing in DOCX format. For additional questions, contact the Electronic Business Center (EBC) at 866-217-9197 (toll-free). If you would like assistance from a USPTO Customer Service Representative, call 800-786-9199 (IN USA OR CANADA) or 571-272-1000.
/J.R.W./Examiner, Art Unit 2438 /TAGHI T ARANI/Supervisory Patent Examiner, Art Unit 2438