Source file
src/crypto/rsa/example_test.go
1
2
3
4
5 package rsa_test
6
7 import (
8 "crypto"
9 "crypto/aes"
10 "crypto/cipher"
11 "crypto/rand"
12 "crypto/rsa"
13 "crypto/sha256"
14 "encoding/hex"
15 "fmt"
16 "os"
17 )
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38 func ExampleDecryptPKCS1v15SessionKey() {
39
40
41
42 key := make([]byte, 32)
43 if _, err := rand.Read(key); err != nil {
44 panic("RNG failure")
45 }
46
47 rsaCiphertext, _ := hex.DecodeString("aabbccddeeff")
48
49 if err := rsa.DecryptPKCS1v15SessionKey(nil, rsaPrivateKey, rsaCiphertext, key); err != nil {
50
51
52
53
54 fmt.Fprintf(os.Stderr, "Error from RSA decryption: %s\n", err)
55 return
56 }
57
58
59
60 block, err := aes.NewCipher(key)
61 if err != nil {
62 panic("aes.NewCipher failed: " + err.Error())
63 }
64
65
66
67 var zeroNonce [12]byte
68 aead, err := cipher.NewGCM(block)
69 if err != nil {
70 panic("cipher.NewGCM failed: " + err.Error())
71 }
72 ciphertext, _ := hex.DecodeString("00112233445566")
73 plaintext, err := aead.Open(nil, zeroNonce[:], ciphertext, nil)
74 if err != nil {
75
76
77 fmt.Fprintf(os.Stderr, "Error decrypting: %s\n", err)
78 return
79 }
80
81 fmt.Printf("Plaintext: %s\n", plaintext)
82 }
83
84 func ExampleSignPKCS1v15() {
85 message := []byte("message to be signed")
86
87
88
89
90
91
92 hashed := sha256.Sum256(message)
93
94 signature, err := rsa.SignPKCS1v15(nil, rsaPrivateKey, crypto.SHA256, hashed[:])
95 if err != nil {
96 fmt.Fprintf(os.Stderr, "Error from signing: %s\n", err)
97 return
98 }
99
100 fmt.Printf("Signature: %x\n", signature)
101 }
102
103 func ExampleVerifyPKCS1v15() {
104 message := []byte("message to be signed")
105 signature, _ := hex.DecodeString("ad2766728615cc7a746cc553916380ca7bfa4f8983b990913bc69eb0556539a350ff0f8fe65ddfd3ebe91fe1c299c2fac135bc8c61e26be44ee259f2f80c1530")
106
107
108
109
110
111
112 hashed := sha256.Sum256(message)
113
114 err := rsa.VerifyPKCS1v15(&rsaPrivateKey.PublicKey, crypto.SHA256, hashed[:], signature)
115 if err != nil {
116 fmt.Fprintf(os.Stderr, "Error from verification: %s\n", err)
117 return
118 }
119
120
121 }
122
123 func ExampleEncryptOAEP() {
124 secretMessage := []byte("send reinforcements, we're going to advance")
125 label := []byte("orders")
126
127
128
129 rng := rand.Reader
130
131 ciphertext, err := rsa.EncryptOAEP(sha256.New(), rng, &test2048Key.PublicKey, secretMessage, label)
132 if err != nil {
133 fmt.Fprintf(os.Stderr, "Error from encryption: %s\n", err)
134 return
135 }
136
137
138
139 fmt.Printf("Ciphertext: %x\n", ciphertext)
140 }
141
142 func ExampleDecryptOAEP() {
143 ciphertext, _ := hex.DecodeString("4d1ee10e8f286390258c51a5e80802844c3e6358ad6690b7285218a7c7ed7fc3a4c7b950fbd04d4b0239cc060dcc7065ca6f84c1756deb71ca5685cadbb82be025e16449b905c568a19c088a1abfad54bf7ecc67a7df39943ec511091a34c0f2348d04e058fcff4d55644de3cd1d580791d4524b92f3e91695582e6e340a1c50b6c6d78e80b4e42c5b4d45e479b492de42bbd39cc642ebb80226bb5200020d501b24a37bcc2ec7f34e596b4fd6b063de4858dbf5a4e3dd18e262eda0ec2d19dbd8e890d672b63d368768360b20c0b6b8592a438fa275e5fa7f60bef0dd39673fd3989cc54d2cb80c08fcd19dacbc265ee1c6014616b0e04ea0328c2a04e73460")
144 label := []byte("orders")
145
146 plaintext, err := rsa.DecryptOAEP(sha256.New(), nil, test2048Key, ciphertext, label)
147 if err != nil {
148 fmt.Fprintf(os.Stderr, "Error from decryption: %s\n", err)
149 return
150 }
151
152 fmt.Printf("Plaintext: %s\n", plaintext)
153
154
155
156
157 }
158
View as plain text