IP Library Granted Patent US 9,722,795
Granted Patent B2
US 9,722,795 · App. 14/282,867 · Granted Aug 1, 2017

Digitally signing JSON messages

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,722,795
App. No.
14/282,867
Granted
Aug 1, 2017
Kind
B2
Abstract

Systems and techniques are described for digitally signing JavaScript Object Notation (JSON) messages. One of the techniques includes receiving a JavaScript Object Notation (JSON) message; and digitally signing the JSON message, wherein digitally signing the JSON message comprises: generating a digital signature information JSON object; inserting the digital signature information JSON object into the JSON message; generating a canonical representation of the JSON message with the inserted digital signature information JSON object; generating a digital signature of the canonical representation of the JSON message; and inserting the digital signature into the digital signature information JSON object.

Claims (55)

1. A computer-implemented method comprising:

receiving a JavaScript Object Notation (JSON) message that includes one or more JSON objects;

digitally signing the JSON message, wherein digitally signing the JSON message comprises:

generating a digital signature information JSON object;

inserting the digital signature information JSON object into the JSON message;

after inserting the digital signature information JSON object into the JSON message, generating a canonical representation of the JSON message, wherein the canonical representation of the JSON message includes the inserted digital signature information JSON object and the one or more JSON objects of the received JSON message;

computing a cryptographic hash of the canonical representation of the JSON message that includes the inserted digital signature information JSON object and the one or more JSON objects;

generating a digital signature of the canonical representation of the JSON message using the cryptographic hash of the canonical representation of the JSON message; and

inserting the digital signature into the digital signature information JSON object; and

providing the JSON message, which includes the digital signature information JSON object having the inserted digital signature, for transmission to a recipient.

2. The method of claim 1 , wherein the digital signature information JSON object includes data identifying a digital signature algorithm used to generate the digital signature.

3. The method of claim 2 , wherein the data identifying the digital signature algorithm includes data identifying a cryptographic hash function.

4. The method of claim 3 , wherein computing the cryptographic comprises:

computing the cryptographic hash of the canonical representation using the cryptographic hash function; and

wherein generating the digital signature of the canonical representation comprises:

generating the digital signature by encrypting the cryptographic hash using a private key; and

encoding the digital signature.

5. The method of claim 4 , wherein digitally signing the JSON message further comprises:

inserting data identifying a public key corresponding to the private key in the digital signature information JSON object.

6. The method of claim 1 , wherein the digital signature information JSON object includes data defining a validity period of the digital signature.

7. The method of claim 1 , wherein the digital signature information JSON object includes a unique identifier for the JSON message.

8. A computer-implemented method comprising:

receiving a JavaScript Object Notation (JSON) message, wherein the JSON message includes a digital signature information JSON object and one or more JSON objects, and wherein the digital signature information JSON object includes a digital signature for the JSON message; and

verifying the digital signature for the received JSON message, wherein verifying the digital signature for the JSON message comprises:

removing the digital signature from the digital signature information JSON object;

after removing the digital signature from the digital signature information JSON object, generating a canonical representation of the JSON message that includes the one or more JSON objects and the digital signature information JSON object without the digital signature;

computing a cryptographic hash of the canonical representation of the JSON message that includes the one or more JSON objects and the digital signature information JSON object without the digital signature;

decrypting the digital signature; and

verifying the digital signature based on a comparison between the decrypted digital signature and the cryptographic hash.

9. The method of claim 8 , wherein the digital signature information JSON object includes data identifying a cryptographic hash function used to generate the digital signature.

10. The method of claim 9 , wherein computing the cryptographic hash of the canonical representation comprises computing the cryptographic hash of the canonical representation using the cryptographic hash function.

11. The method of claim 8 , wherein decrypting the digital signature comprises decrypting the digital signature using a public key identified in the digital signature information JSON object.

12. The method of claim 8 , wherein the digital signature information JSON object includes data defining a validity period of the digital signature, and wherein verifying the digital signature comprises determining that the validity period is satisfied.

13. The method of claim 8 , wherein the digital signature information JSON object includes a unique identifier for the JSON message, and wherein verifying the digital signature comprises determining that no JSON message with an identifier that matches the unique identifier has already been verified.

14. A system comprising one or more computers and one or more storage devices storing instructions that when executed by the one or more computers cause the one or more computers to perform operations comprising:

receiving a JavaScript Object Notation (JSON) message that includes one or more JSON objects;

digitally signing the JSON message, wherein digitally signing the JSON message comprises:

generating a digital signature information JSON object;

inserting the digital signature information JSON object into the JSON message;

after inserting the digital signature information JSON object into the JSON message, generating a canonical representation of the JSON message, wherein the canonical representation of the JSON message includes the inserted digital signature information JSON object and the one or more JSON objects of the received JSON message;

computing a cryptographic hash of the canonical representation of the JSON message includes the inserted digital signature information JSON object and the one or more JSON objects;

generating a digital signature of the canonical representation of the JSON message using the cryptographic hash of the canonical representation of the JSON message; and

inserting the digital signature into the digital signature information JSON object; and

providing the JSON message, which includes the digital signature information JSON object having the inserted digital signature, for transmission to a recipient.

15. The system of claim 14 , wherein the digital signature information JSON object includes data identifying a digital signature algorithm used to generate the digital signature.

16. The system of claim 15 , wherein the data identifying the digital signature algorithm includes data identifying a cryptographic hash function.

17. The system of claim 16 , wherein computing the cryptographic hash comprises:

computing the cryptographic hash of the canonical representation using the cryptographic hash function; and

wherein generating the digital signature of the canonical representation comprises:

generating the digital signature by encrypting the cryptographic hash using a private key; and

encoding the digital signature.

18. The system of claim 17 , wherein digitally signing the JSON message further comprises:

inserting data identifying a public key corresponding to the private key in the digital signature information JSON object.

19. The system of claim 14 , wherein the digital signature information JSON object includes data defining a validity period of the digital signature.

20. The system of claim 14 , wherein the digital signature information JSON object includes a unique identifier for the JSON message.

Assignments (2)
CHANGE OF NAME Recorded Apr 15, 2024
From: VMWARE, INC.
To: VMWARE LLC
Reel/Frame 067102/0314 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 20, 2014
From: STAYKOV, GEORGI; POPOV, DEYAN
To: VMWARE, INC.
Reel/Frame 032935/0031 →