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_ */ |