File: algorithm.go

package info (click to toggle)
golang-github-smallstep-crypto 0.57.0-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 3,284 kB
  • sloc: sh: 53; makefile: 36
file content (113 lines) | stat: -rw-r--r-- 3,147 bytes parent folder | download
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
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
package algorithm

import (
	"encoding/json"
)

// Supported Algorithms.
const (
	AlgorithmUnknown   Algorithm = 0x0000
	AlgorithmRSA       Algorithm = 0x0001
	Algorithm3DES      Algorithm = 0x0003
	AlgorithmSHA1      Algorithm = 0x0004
	AlgorithmHMAC      Algorithm = 0x0005
	AlgorithmAES       Algorithm = 0x0006
	AlgorithmMGF1      Algorithm = 0x0007
	AlgorithmKeyedHash Algorithm = 0x0008
	AlgorithmXOR       Algorithm = 0x000A
	AlgorithmSHA256    Algorithm = 0x000B
	AlgorithmSHA384    Algorithm = 0x000C
	AlgorithmSHA512    Algorithm = 0x000D
	AlgorithmNull      Algorithm = 0x0010
	AlgorithmSM3256    Algorithm = 0x0012
	AlgorithmSM4       Algorithm = 0x0013
	AlgorithmRSASSA    Algorithm = 0x0014
	AlgorithmRSAES     Algorithm = 0x0015
	AlgorithmRSAPSS    Algorithm = 0x0016
	AlgorithmOAEP      Algorithm = 0x0017
	AlgorithmECDSA     Algorithm = 0x0018
	AlgorithmECDH      Algorithm = 0x0019
	AlgorithmECDAA     Algorithm = 0x001A
	AlgorithmECSchnorr Algorithm = 0x001C
	AlgorithmKDF1_56A  Algorithm = 0x0020
	AlgorithmKDF2      Algorithm = 0x0021
	AlgorithmKDF1_108  Algorithm = 0x0022
	AlgorithmECC       Algorithm = 0x0023
	AlgorithmSymCipher Algorithm = 0x0025
	AlgorithmCamellia  Algorithm = 0x0026
	AlgorithmSHA3_256  Algorithm = 0x0027
	AlgorithmSHA3_384  Algorithm = 0x0028
	AlgorithmSHA3_512  Algorithm = 0x0029
	AlgorithmCMAC      Algorithm = 0x003F
	AlgorithmCTR       Algorithm = 0x0040
	AlgorithmOFB       Algorithm = 0x0041
	AlgorithmCBC       Algorithm = 0x0042
	AlgorithmCFB       Algorithm = 0x0043
	AlgorithmECB       Algorithm = 0x0044
)

// https://trustedcomputinggroup.org/wp-content/uploads/TCG_TPM2_r1p59_Part2_Structures_pub.pdf
var algs = map[Algorithm]string{
	// object types
	AlgorithmRSA: "RSA",
	AlgorithmECC: "ECC",

	// encryption algs
	AlgorithmRSAES: "RSAES",

	// block ciphers
	Algorithm3DES:      "3DES",
	AlgorithmAES:       "AES",
	AlgorithmCamellia:  "Camellia",
	AlgorithmECB:       "ECB",
	AlgorithmCFB:       "CFB",
	AlgorithmOFB:       "OFB",
	AlgorithmCBC:       "CBC",
	AlgorithmCTR:       "CTR",
	AlgorithmSymCipher: "Symmetric Cipher",
	AlgorithmCMAC:      "CMAC",

	// other ciphers
	AlgorithmXOR:  "XOR",
	AlgorithmNull: "Null Cipher",

	// hash algs
	AlgorithmSHA1:      "SHA-1",
	AlgorithmHMAC:      "HMAC",
	AlgorithmMGF1:      "MGF1",
	AlgorithmKeyedHash: "Keyed Hash",
	AlgorithmSM3256:    "SM3-256",
	AlgorithmSHA256:    "SHA-256",
	AlgorithmSHA384:    "SHA-384",
	AlgorithmSHA512:    "SHA-512",
	AlgorithmSHA3_256:  "SHA3-256",
	AlgorithmSHA3_384:  "SHA3-384",
	AlgorithmSHA3_512:  "SHA3-512",

	// signature algs
	AlgorithmSM4:       "SM4",
	AlgorithmRSASSA:    "RSA-SSA",
	AlgorithmRSAPSS:    "RSA-PSS",
	AlgorithmECDSA:     "ECDSA",
	AlgorithmECDAA:     "ECDAA",
	AlgorithmECSchnorr: "EC-Schnorr",

	// encryption schemes
	AlgorithmOAEP: "OAEP",
	AlgorithmECDH: "ECDH",

	// key derivation
	AlgorithmKDF1_56A: "KDF1-SP800-56A",
	AlgorithmKDF1_108: "KDF1-SP800-108",
	AlgorithmKDF2:     "KDF2",
}

type Algorithm uint16

func (a Algorithm) String() string {
	return algs[Algorithm(int(a))]
}

func (a Algorithm) MarshalJSON() ([]byte, error) {
	return json.Marshal(a.String())
}