pkey_base.h (ea88e1710a9f19345c94c195f9cd7365e50343b0) pkey_base.h (8fcc231ce3bea12b78bb94b280cdc03cff342435)
1/* SPDX-License-Identifier: GPL-2.0+ */
2/*
3 * Copyright IBM Corp. 2024
4 *
5 * Pkey base: debug feature, defines and structs
6 * common to all pkey code.
7 */
8

--- 72 unchanged lines hidden (view full) ---

81 case 256:
82 return PKEY_KEYTYPE_AES_256;
83 default:
84 return 0;
85 }
86}
87
88/*
1/* SPDX-License-Identifier: GPL-2.0+ */
2/*
3 * Copyright IBM Corp. 2024
4 *
5 * Pkey base: debug feature, defines and structs
6 * common to all pkey code.
7 */
8

--- 72 unchanged lines hidden (view full) ---

81 case 256:
82 return PKEY_KEYTYPE_AES_256;
83 default:
84 return 0;
85 }
86}
87
88/*
89 * pkey_cca.c:
89 * pkey_api.c:
90 */
90 */
91int __init pkey_api_init(void);
92void __exit pkey_api_exit(void);
91
93
92bool pkey_is_cca_key(const u8 *key, u32 keylen);
93bool pkey_is_cca_keytype(enum pkey_key_type);
94int pkey_cca_key2protkey(u16 card, u16 dom,
95 const u8 *key, u32 keylen,
96 u8 *protkey, u32 *protkeylen, u32 *protkeytype);
97int pkey_cca_gen_key(u16 card, u16 dom,
98 u32 keytype, u32 keysubtype,
99 u32 keybitsize, u32 flags,
100 u8 *keybuf, u32 *keybuflen, u32 *_keyinfo);
101int pkey_cca_clr2key(u16 card, u16 dom,
102 u32 keytype, u32 keysubtype,
103 u32 keybitsize, u32 flags,
104 const u8 *clrkey, u32 clrkeylen,
105 u8 *keybuf, u32 *keybuflen, u32 *_keyinfo);
106int pkey_cca_verifykey(const u8 *key, u32 keylen,
107 u16 *card, u16 *dom,
108 u32 *keytype, u32 *keybitsize, u32 *flags);
109int pkey_cca_apqns4key(const u8 *key, u32 keylen, u32 flags,
110 struct pkey_apqn *apqns, size_t *nr_apqns);
111int pkey_cca_apqns4type(enum pkey_key_type ktype,
112 u8 cur_mkvp[32], u8 alt_mkvp[32], u32 flags,
113 struct pkey_apqn *apqns, size_t *nr_apqns);
114
115/*
94/*
116 * pkey_ep11.c:
95 * pkey_sysfs.c:
117 */
118
96 */
97
119bool pkey_is_ep11_key(const u8 *key, u32 keylen);
120bool pkey_is_ep11_keytype(enum pkey_key_type);
121int pkey_ep11_key2protkey(u16 card, u16 dom,
122 const u8 *key, u32 keylen,
123 u8 *protkey, u32 *protkeylen, u32 *protkeytype);
124int pkey_ep11_gen_key(u16 card, u16 dom,
125 u32 keytype, u32 keysubtype,
126 u32 keybitsize, u32 flags,
127 u8 *keybuf, u32 *keybuflen, u32 *_keyinfo);
128int pkey_ep11_clr2key(u16 card, u16 dom,
129 u32 keytype, u32 keysubtype,
130 u32 keybitsize, u32 flags,
131 const u8 *clrkey, u32 clrkeylen,
132 u8 *keybuf, u32 *keybuflen, u32 *_keyinfo);
133int pkey_ep11_verifykey(const u8 *key, u32 keylen,
134 u16 *card, u16 *dom,
135 u32 *keytype, u32 *keybitsize, u32 *flags);
136int pkey_ep11_apqns4key(const u8 *key, u32 keylen, u32 flags,
137 struct pkey_apqn *apqns, size_t *nr_apqns);
138int pkey_ep11_apqns4type(enum pkey_key_type ktype,
139 u8 cur_mkvp[32], u8 alt_mkvp[32], u32 flags,
140 struct pkey_apqn *apqns, size_t *nr_apqns);
98extern const struct attribute_group *pkey_attr_groups[];
141
142/*
99
100/*
143 * pkey_pckmo.c:
101 * pkey handler registry
144 */
145
102 */
103
146bool pkey_is_pckmo_key(const u8 *key, u32 keylen);
147int pkey_pckmo_key2protkey(u16 _card, u16 _dom,
148 const u8 *key, u32 keylen,
149 u8 *protkey, u32 *protkeylen, u32 *protkeytype);
150int pkey_pckmo_gen_key(u16 _card, u16 _dom,
151 u32 keytype, u32 _keysubtype,
152 u32 _keybitsize, u32 _flags,
104struct pkey_handler {
105 struct module *module;
106 const char *name;
107 /*
108 * is_supported_key() and is_supported_keytype() are called
109 * within an rcu_read_lock() scope and thus must not sleep!
110 */
111 bool (*is_supported_key)(const u8 *key, u32 keylen);
112 bool (*is_supported_keytype)(enum pkey_key_type);
113 int (*key_to_protkey)(const struct pkey_apqn *apqns, size_t nr_apqns,
114 const u8 *key, u32 keylen,
115 u8 *protkey, u32 *protkeylen, u32 *protkeytype);
116 int (*gen_key)(const struct pkey_apqn *apqns, size_t nr_apqns,
117 u32 keytype, u32 keysubtype,
118 u32 keybitsize, u32 flags,
153 u8 *keybuf, u32 *keybuflen, u32 *keyinfo);
119 u8 *keybuf, u32 *keybuflen, u32 *keyinfo);
154int pkey_pckmo_clr2key(u16 _card, u16 _dom,
155 u32 keytype, u32 _keysubtype,
156 u32 _keybitsize, u32 _flags,
157 const u8 *clrkey, u32 clrkeylen,
158 u8 *keybuf, u32 *keybuflen, u32 *keyinfo);
159int pkey_pckmo_verifykey(const u8 *key, u32 keylen,
160 u16 *_card, u16 *_dom,
161 u32 *keytype, u32 *_keybitsize, u32 *_flags);
120 int (*clr_to_key)(const struct pkey_apqn *apqns, size_t nr_apqns,
121 u32 keytype, u32 keysubtype,
122 u32 keybitsize, u32 flags,
123 const u8 *clrkey, u32 clrkeylen,
124 u8 *keybuf, u32 *keybuflen, u32 *keyinfo);
125 int (*verify_key)(const u8 *key, u32 keylen,
126 u16 *card, u16 *dom,
127 u32 *keytype, u32 *keybitsize, u32 *flags);
128 int (*apqns_for_key)(const u8 *key, u32 keylen, u32 flags,
129 struct pkey_apqn *apqns, size_t *nr_apqns);
130 int (*apqns_for_keytype)(enum pkey_key_type ktype,
131 u8 cur_mkvp[32], u8 alt_mkvp[32], u32 flags,
132 struct pkey_apqn *apqns, size_t *nr_apqns);
133 /* used internal by pkey base */
134 struct list_head list;
135};
162
136
137int pkey_handler_register(struct pkey_handler *handler);
138int pkey_handler_unregister(struct pkey_handler *handler);
139
163/*
140/*
164 * pkey_sysfs.c:
141 * invocation function for the registered pkey handlers
165 */
166
142 */
143
167extern const struct attribute_group *pkey_attr_groups[];
144const struct pkey_handler *pkey_handler_get_keybased(const u8 *key, u32 keylen);
145const struct pkey_handler *pkey_handler_get_keytypebased(enum pkey_key_type kt);
146void pkey_handler_put(const struct pkey_handler *handler);
168
147
148int pkey_handler_key_to_protkey(const struct pkey_apqn *apqns, size_t nr_apqns,
149 const u8 *key, u32 keylen,
150 u8 *protkey, u32 *protkeylen, u32 *protkeytype);
151int pkey_handler_gen_key(const struct pkey_apqn *apqns, size_t nr_apqns,
152 u32 keytype, u32 keysubtype,
153 u32 keybitsize, u32 flags,
154 u8 *keybuf, u32 *keybuflen, u32 *keyinfo);
155int pkey_handler_clr_to_key(const struct pkey_apqn *apqns, size_t nr_apqns,
156 u32 keytype, u32 keysubtype,
157 u32 keybitsize, u32 flags,
158 const u8 *clrkey, u32 clrkeylen,
159 u8 *keybuf, u32 *keybuflen, u32 *keyinfo);
160int pkey_handler_verify_key(const u8 *key, u32 keylen,
161 u16 *card, u16 *dom,
162 u32 *keytype, u32 *keybitsize, u32 *flags);
163int pkey_handler_apqns_for_key(const u8 *key, u32 keylen, u32 flags,
164 struct pkey_apqn *apqns, size_t *nr_apqns);
165int pkey_handler_apqns_for_keytype(enum pkey_key_type ktype,
166 u8 cur_mkvp[32], u8 alt_mkvp[32], u32 flags,
167 struct pkey_apqn *apqns, size_t *nr_apqns);
168
169#endif /* _PKEY_BASE_H_ */
169#endif /* _PKEY_BASE_H_ */