xref: /aosp_15_r20/external/tink/python/examples/signature/README.md (revision e7b1675dde1b92d52ec075b0a92829627f2c52a5)
1*e7b1675dSTing-Kang Chang# Python digital signature example
2*e7b1675dSTing-Kang Chang
3*e7b1675dSTing-Kang ChangThis example shows how to sign and verify data with Tink using digital
4*e7b1675dSTing-Kang Changsignatures.
5*e7b1675dSTing-Kang Chang
6*e7b1675dSTing-Kang ChangIt demonstrates the basic steps of using Tink, namely loading key material,
7*e7b1675dSTing-Kang Changobtaining a primitive, and using the primitive to do crypto.
8*e7b1675dSTing-Kang Chang
9*e7b1675dSTing-Kang ChangThe key material was generated with:
10*e7b1675dSTing-Kang Chang
11*e7b1675dSTing-Kang Chang```shell
12*e7b1675dSTing-Kang Chang$ tinkey create-keyset --key-template ECDSA_P256 --out-format JSON \
13*e7b1675dSTing-Kang Chang    --out signature_test_private_keyset.json
14*e7b1675dSTing-Kang Chang$ tinkey create-public-keyset --in signature_test_private_keyset.json \
15*e7b1675dSTing-Kang Chang    --in-format JSON --out-format JSON --out signature_test_public_keyset.json
16*e7b1675dSTing-Kang Chang```
17*e7b1675dSTing-Kang Chang
18*e7b1675dSTing-Kang Chang## Build and run
19*e7b1675dSTing-Kang Chang
20*e7b1675dSTing-Kang Chang### Bazel
21*e7b1675dSTing-Kang Chang
22*e7b1675dSTing-Kang ChangBuild the examples:
23*e7b1675dSTing-Kang Chang
24*e7b1675dSTing-Kang Chang```shell
25*e7b1675dSTing-Kang Chang$ git clone https://github.com/google/tink
26*e7b1675dSTing-Kang Chang$ cd tink/python/examples
27*e7b1675dSTing-Kang Chang$ bazel build ...
28*e7b1675dSTing-Kang Chang```
29*e7b1675dSTing-Kang Chang
30*e7b1675dSTing-Kang ChangGenerate a signature:
31*e7b1675dSTing-Kang Chang
32*e7b1675dSTing-Kang Chang```shell
33*e7b1675dSTing-Kang Chang$ echo "some data" > data.txt
34*e7b1675dSTing-Kang Chang$ touch signature_file.txt
35*e7b1675dSTing-Kang Chang
36*e7b1675dSTing-Kang Chang$ ./bazel-bin/signature/signature --mode sign \
37*e7b1675dSTing-Kang Chang    --keyset_path ./signature/signature_test_private_keyset.json \
38*e7b1675dSTing-Kang Chang    --data_path data.txt --signature_path signature_file.txt
39*e7b1675dSTing-Kang Chang```
40*e7b1675dSTing-Kang Chang
41*e7b1675dSTing-Kang ChangVerify a signature:
42*e7b1675dSTing-Kang Chang
43*e7b1675dSTing-Kang Chang```shell
44*e7b1675dSTing-Kang Chang$ ./bazel-bin/signature/signature --mode verify \
45*e7b1675dSTing-Kang Chang    --keyset_path ./signature/signature_test_public_keyset.json \
46*e7b1675dSTing-Kang Chang    --data_path data.txt --signature_path signature_file.txt
47*e7b1675dSTing-Kang Chang```
48