DETAILED ACTION
This non-final office action is in response to claims 1-25 filed on 6/27/2024 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.
Information Disclosure Statement
The information disclosure statements (IDS) submitted on 06/27/2024 and 10/16/2025 have been considered by the examiner.
Claim Rejections - 35 USC § 101
35 U.S.C. 101 reads as follows:
Whoever invents or discovers any new and useful process, machine, manufacture, or composition of matter, or any new and useful improvement thereof, may obtain a patent therefor, subject to the conditions and requirements of this title.
Claims 1-20 is/are rejected under 35 U.S.C. 101 because the claimed invention is directed to an abstract idea without significantly more.
Independent claim 1 recites:
“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 including: executing an instruction to generate a message digest for a message, the message digest to be used in authentication of the message, the executing the instruction including: obtaining from the instruction a control indicator; determining, based on the control indicator, an initial chaining value to be used to generate the message digest; generating the message digest using the initial chaining value; and providing the message digest to be used in the authentication of the message.”
The limitations of 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 including: executing an instruction to generate a message digest for a message, the message digest to be used in authentication of the message, the executing the instruction including: obtaining from the instruction a control indicator; determining, based on the control indicator, an initial chaining value to be used to generate the message digest; generating the message digest using the initial chaining value, cover performing mathematical calculations that could be practically performed in the human mind but for the recitation of generic computer components. That is, other than reciting “computer-readable storage media”, “program instructions”, and a “computer program product”, nothing in the claim element precludes the steps from practically being performed in the mind with aid of pen and paper. For example, the human mind can execute instructions, obtain information, determine information, and generate information. If a claim limitation, under its broadest reasonable interpretation, covers performance in the human mind but for the recitation of generic computer components, then it falls within the “Mental Processes” groupings of abstract ideas. Accordingly, the claim recites an abstract idea.
This judicial exception is not integrated into a practical application. In particular, the claim only recites the additional elements of “providing the message digest to be used in the authentication of the message”. The additional elements are recited at a high-level of generality (i.e., as a generic computer performing the generic computer functions of transmitting information and storing information) such that they amount no more than mere instructions to apply the judicial exception using generic computer components. Examiner notes: “to be used in the authentication of the message” is a statement of purpose. However, an affirmative step of a recipient receiving and then using the message digest to authenticate the message is not actually performed in the claim as written, and therefore cannot be considered to integrate the judicial exception into a practical application. Accordingly, the additional elements do not integrate the abstract idea into a practical application because they do not impose any meaningful limits on practicing the abstract idea.
The claim does not include additional elements that are sufficient to amount to significantly more than the judicial exception. As discussed above with respect to integration of the abstract idea into a practical application, the additional element(s) of “providing the message digest to be used in the authentication of the message” amount to no more than mere instructions to apply the exception using a generic computer component. The limitations recited are in essence instructions to implement the abstract idea using functions that are well-understood, routine and conventional in the industry (e.g., using a computer to transmit information, using a computer to store information). Mere instructions to apply an exception using a generic computer component cannot provide an inventive concept.
For reference: according to MPEP 2106.05(d), elements that the Courts have recognized as well-understood, routine, conventional activity in particular fields include, e.g. “Receiving or transmitting data over a network, e.g., using the internet to gather data”, Symantec, 838 F.3d at 1321, 120 USPQ2d at 1362 (utilizing an intermediary computer to forward information); Storing and retrieving information in memory, Versata Dev. Group, Inc. v. SAP Am., Inc, 793 F.3d at 1306, 1334, 115 USPQ2d 1681, 1701 (Fed. Cir. 2015); and OIP Techs., 788 F.3d at 1363, 115 USPQ2d at 1092-93. Further, according to the USPTO Berkheimer memo of 04/19/2018, section III.A.1, “A specification demonstrates the well-understood, routine, conventional nature of additional elements when it describes the additional elements as well-understood or conventional (or an equivalent term), as a commercially available product, or in a manner that the additional elements are sufficiently well-known that the specification does not need to describe the particulars of such additional elements to satisfy 35 U.S.C. 112(a)”.
Accordingly, (1) the claim recites an abstract idea, (2) the judicial exception is not implemented into a practical application, and (3) the claim does not include additional elements that are sufficient to amount to significantly more than the judicial exception. Claim 1 not patent eligible.
Independent claims 11, 18, and 24-25 is/are rejected under like rationale. Dependent claims 2-10 merely recite further details of the abstract steps/elements recited in the independent claims without meaningful limitations beyond generally clarifying the abstract ideas used in the independent claims. These limitations are processes that, under broadest reasonable interpretation, cover mathematical calculations concepts and/or mental processes to be performed. That is, for at least the reasons discussed herein with regards to claim 1, dependent claims 2-10 also fail to integrate the recited judicial exception into a practical application or amount to sufficiently more than the judicial exception. Claims 12-17 and 19-23 are rejected under like rationale.
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 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 from the instruction a 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 obtained. If the 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);
determining, based on the control indicator, an 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. If the PS=0 then the ICV is set to the previous 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 <i.e., the next-execution ICV is determined based on the PS value/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. If the PS=0 then the ICV is set to the previous 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 <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 ICV is set to the previous “OCV” XOR’d with the padded final block. If the PS=1 then the initial chaining value is just set to the previous OCV. Hashing is performed using the ICV); 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 ICV is set to the previous “OCV” XOR’d with the padded final block. If the PS=1 then the initial 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 ICV).
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 ([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 ICV is set to the previous “OCV” XOR’d with the padded final block. If the PS=1 then the initial chaining value is just set to the previous OCV <i.e., initial chaining value can use the default OCV if PS=1, and modifies it via a program if PS=0>. Hashing is performed using the ICV).
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 ([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 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 from the instruction a 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 obtained. If the PS=0 then the ICV is set to the previous “OCV” XOR’d with the padded final block. If the PS=1 then the initial chaining value is just set to the previous OCV. Hashing is performed using the ICV);
determining, based on the control indicator, an 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. If the PS=0 then the ICV is set to the previous 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 <i.e., the next-execution ICV is determined based on the PS value/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. If the PS=0 then the ICV is set to the previous 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 <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 ICV is set to the previous “OCV” XOR’d with the padded final block. If the PS=1 then the initial chaining value is just set to the previous OCV. Hashing is performed using the ICV); 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 ICV is set to the previous “OCV” XOR’d with the padded final block. If the PS=1 then the initial 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 ICV).
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 ([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 ICV is set to the previous “OCV” XOR’d with the padded final block. If the PS=1 then the initial chaining value is just set to the previous OCV <i.e., initial chaining value can use the default OCV if PS=1, and modifies it via a program if PS=0>. Hashing is performed using the ICV).
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 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 from the instruction a 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 obtained. If the PS=0 then the ICV is set to the previous “OCV” XOR’d with the padded final block. If the PS=1 then the initial chaining value is just set to the previous OCV. Hashing is performed using the ICV);
determining, based on the control indicator, an 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. If the PS=0 then the ICV is set to the previous 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 <i.e., the next-execution ICV is determined based on the PS value/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. If the PS=0 then the ICV is set to the previous 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 <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 ICV is set to the previous “OCV” XOR’d with the padded final block. If the PS=1 then the initial chaining value is just set to the previous OCV. Hashing is performed using the ICV); 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 ICV is set to the previous “OCV” XOR’d with the padded final block. If the PS=1 then the initial 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 ICV).
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 ([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 ICV is set to the previous “OCV” XOR’d with the padded final block. If the PS=1 then the initial chaining value is just set to the previous OCV <i.e., initial chaining value can use the default OCV if PS=1, and modifies it via a program if PS=0>. Hashing is performed using the ICV).
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 claim 18, 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 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 from the instruction a control indicator of the at least one 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 obtained. If the PS=0 then the ICV is set to the previous “OCV” XOR’d with the padded final block. If the PS=1 then the initial chaining value is just set to the previous OCV. Hashing is performed using the ICV);
determining, based on the control indicator, an 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. If the PS=0 then the ICV is set to the previous 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 <i.e., the next-execution ICV is determined based on the PS value/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. If the PS=0 then the ICV is set to the previous 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 <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 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 from the instruction a control indicator of the at least one 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 obtained. If the PS=0 then the ICV is set to the previous “OCV” XOR’d with the padded final block. If the PS=1 then the initial chaining value is just set to the previous OCV. Hashing is performed using the ICV);
determining, based on the control indicator, an 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. If the PS=0 then the ICV is set to the previous 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 <i.e., the next-execution ICV is determined based on the PS value/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. If the PS=0 then the ICV is set to the previous 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 <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]).
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