aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/restricted/aws/aws-c-cal/README.md
blob: de2ac340abd38ef65289a869c8cf406c575da4ce (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
## AWS C Cal 
 
AWS Crypto Abstraction Layer: Cross-Platform, C99 wrapper for cryptography primitives. 
 
## License 
 
This library is licensed under the Apache 2.0 License. 
 
## Supported Platforms 
* Windows (Vista and Later) 
* Apple 
* Unix (via OpenSSL compatible libcrypto) 
 
## Build Instructions 
Since this project builds with CMake, you can build with whichever tool you prefer. Here, we show make for simplicity. You can 
use Visual Studio, XCode, or whatever you'd like via the -G option. 
 
``` 
git clone git@github.com:awslabs/aws-c-common 
mkdir aws-c-common-build 
cd aws-c-common-build 
cmake -DCMAKE_PREFIX_PATH=<install path> -DCMAKE_INSTALL_PREFIX=<install path> ../aws-c-common 
make 
make test 
make install 
 
cd .. 
git clone git@github.com:awslabs/aws-c-cal 
mkdir aws-c-cal-build 
cd aws-c-cal-build 
cmake -DCMAKE_PREFIX_PATH=<install path> -DCMAKE_INSTALL_PREFIX=<install path> ../aws-c-cal 
make 
make test 
make install 
```` 
 
## Currently provided algorithms 
 
### Hashes 
#### MD5 
##### Streaming 
```` 
struct aws_hash *hash = aws_md5_new(allocator); 
aws_hash_update(hash, &your_buffer); 
aws_hash_finalize(hash, &output_buffer, 0); 
aws_hash_destroy(hash); 
```` 
 
##### One-Shot 
```` 
aws_md5_compute(allocator, &your_buffer, &output_buffer, 0); 
```` 
 
#### SHA256 
##### Streaming 
```` 
struct aws_hash *hash = aws_sha256_new(allocator); 
aws_hash_update(hash, &your_buffer); 
aws_hash_finalize(hash, &output_buffer, 0); 
aws_hash_destroy(hash); 
```` 
 
##### One-Shot 
```` 
aws_sha256_compute(allocator, &your_buffer, &output_buffer, 0); 
```` 
 
### HMAC 
#### SHA256 HMAC 
##### Streaming 
```` 
struct aws_hmac *hmac = aws_sha256_hmac_new(allocator, &secret_buf); 
aws_hmac_update(hmac, &your_buffer); 
aws_hmac_finalize(hmac, &output_buffer, 0); 
aws_hmac_destroy(hmac); 
```` 
 
##### One-Shot 
```` 
aws_sha256_hmac_compute(allocator, &secret_buf, &your_buffer, &output_buffer, 0); 
```` 
 
## FAQ 
### I want more algorithms, what do I do? 
Great! So do we! At a minimum, file an issue letting us know. If you want to file a Pull Request, we'd be happy to review and merge it when it's ready. 
### Who should consume this package directly? 
Are you writing C directly? Then you should. 
Are you using any other programming language? This functionality will be exposed via that language specific crt packages. 
### I found a security vulnerability in this package. What do I do? 
Due to the fact that this package is specifically performing cryptographic operations, please don't file a public issue. Instead, email aws-sdk-common-runtime@amazon.com, and we'll work with you directly.