#define KEYBLOBBUFSIZE 8192 /* key buffer size used for internal processing */ #define MINKEYBLOBBUFSIZE (sizeof(struct keytoken_header)) #define PROTKEYBLOBBUFSIZE 256 /* protected key buffer size used internal */ #define MAXAPQNSINLIST 64 /* max 64 apqns within a apqn list */ #define AES_WK_VP_SIZE 32 /* Size of WK VP block appended to a prot key */
/* inside view of a generic protected key token */ struct protkeytoken {
u8 type; /* 0x00 for PAES specific key tokens */
u8 res0[3];
u8 version; /* should be 0x01 for protected key token */
u8 res1[3];
u32 keytype; /* key type, one of the PKEY_KEYTYPE values */
u32 len; /* bytes actually stored in protkey[] */
u8 protkey[]; /* the protected key blob */
} __packed;
/* inside view of a protected AES key token */ struct protaeskeytoken {
u8 type; /* 0x00 for PAES specific key tokens */
u8 res0[3];
u8 version; /* should be 0x01 for protected key token */
u8 res1[3];
u32 keytype; /* key type, one of the PKEY_KEYTYPE values */
u32 len; /* bytes actually stored in protkey[] */
u8 protkey[MAXPROTKEYSIZE]; /* the protected key blob */
} __packed;
/* inside view of a clear key token (type 0x00 version 0x02) */ struct clearkeytoken {
u8 type; /* 0x00 for PAES specific key tokens */
u8 res0[3];
u8 version; /* 0x02 for clear key token */
u8 res1[3];
u32 keytype; /* key type, one of the PKEY_KEYTYPE_* values */
u32 len; /* bytes actually stored in clearkey[] */
u8 clearkey[]; /* clear key value */
} __packed;
/* helper function which translates the PKEY_KEYTYPE_AES_* to their keysize */ staticinline u32 pkey_keytype_aes_to_size(u32 keytype)
{ switch (keytype) { case PKEY_KEYTYPE_AES_128: return 16; case PKEY_KEYTYPE_AES_192: return 24; case PKEY_KEYTYPE_AES_256: return 32; default: return 0;
}
}
/* helper function which translates AES key bit size into PKEY_KEYTYPE_AES_* */ staticinline u32 pkey_aes_bitsize_to_keytype(u32 keybitsize)
{ switch (keybitsize) { case 128: return PKEY_KEYTYPE_AES_128; case 192: return PKEY_KEYTYPE_AES_192; case 256: return PKEY_KEYTYPE_AES_256; default: return 0;
}
}
/* * helper function which translates the PKEY_KEYTYPE_* * to the protected key size minus the WK VP length
*/ staticinline u32 pkey_keytype_to_size(u32 keytype)
{ switch (keytype) { case PKEY_KEYTYPE_AES_128: return 16; case PKEY_KEYTYPE_AES_192: return 24; case PKEY_KEYTYPE_AES_256: return 32; case PKEY_KEYTYPE_ECC_P256: return 32; case PKEY_KEYTYPE_ECC_P384: return 48; case PKEY_KEYTYPE_ECC_P521: return 80; case PKEY_KEYTYPE_ECC_ED25519: return 32; case PKEY_KEYTYPE_ECC_ED448: return 54; case PKEY_KEYTYPE_AES_XTS_128: return 32; case PKEY_KEYTYPE_AES_XTS_256: return 64; case PKEY_KEYTYPE_HMAC_512: return 64; case PKEY_KEYTYPE_HMAC_1024: return 128; default: return 0;
}
}
/* * pkey_api.c:
*/ int __init pkey_api_init(void); void __exit pkey_api_exit(void);
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.