Lines Matching defs:kdap

219 _genkey(const char *pubkeyfile, struct diocskerneldump_arg *kdap)
225 assert(kdap != NULL);
286 kdap->kda_encryptedkeysize = RSA_size(pubkey);
287 if (kdap->kda_encryptedkeysize > KERNELDUMP_ENCKEY_MAX_SIZE) {
292 kdap->kda_encryptedkey = calloc(1, kdap->kda_encryptedkeysize);
293 if (kdap->kda_encryptedkey == NULL)
299 if (kdap->kda_encryption == KERNELDUMP_ENC_NONE)
300 kdap->kda_encryption = KERNELDUMP_ENC_CHACHA20;
301 else if (kdap->kda_encryption == KERNELDUMP_ENC_AES_256_CBC &&
302 kdap->kda_compression != KERNELDUMP_COMP_NONE)
306 arc4random_buf(kdap->kda_key, sizeof(kdap->kda_key));
307 if (RSA_public_encrypt(sizeof(kdap->kda_key), kdap->kda_key,
308 kdap->kda_encryptedkey, pubkey,
309 RSA_PKCS1_OAEP_PADDING) != (int)kdap->kda_encryptedkeysize) {
321 genkey(const char *pubkeyfile, struct diocskerneldump_arg *kdap)
336 _genkey(pubkeyfile, kdap);
337 /* Write the new kdap back to the parent. */
338 bytes = write(filedes[1], kdap, sizeof(*kdap));
339 if (bytes != sizeof(*kdap))
341 bytes = write(filedes[1], kdap->kda_encryptedkey,
342 kdap->kda_encryptedkeysize);
343 if (bytes != (ssize_t)kdap->kda_encryptedkeysize)
348 /* Read in the child's genkey() result into kdap. */
349 bytes = read(filedes[0], kdap, sizeof(*kdap));
350 if (bytes != sizeof(*kdap))
352 if (kdap->kda_encryptedkeysize > KERNELDUMP_ENCKEY_MAX_SIZE)
355 kdap->kda_encryptedkey = calloc(1, kdap->kda_encryptedkeysize);
356 if (kdap->kda_encryptedkey == NULL)
358 bytes = read(filedes[0], kdap->kda_encryptedkey,
359 kdap->kda_encryptedkeysize);
360 if (bytes != (ssize_t)kdap->kda_encryptedkeysize)
463 struct diocskerneldump_arg ndconf, *kdap;
474 kdap = NULL;
611 kdap = &ndconf;
612 bzero(kdap, sizeof(*kdap));
615 kdap->kda_index = KDA_REMOVE;
617 kdap->kda_index = ins_idx;
619 kdap->kda_compression = KERNELDUMP_COMP_NONE;
621 kdap->kda_compression = KERNELDUMP_COMP_ZSTD;
623 kdap->kda_compression = KERNELDUMP_COMP_GZIP;
665 kdap->kda_encryption = cipher;
666 genkey(pubkeyfile, kdap);
669 error = ioctl(fd, DIOCSKERNELDUMP, kdap);
674 kdap->kda_compression = KERNELDUMP_COMP_NONE;
675 error = ioctl(fd, DIOCSKERNELDUMP, kdap);
683 check_link_status(kdap->kda_iface);
684 explicit_bzero(kdap->kda_encryptedkey, kdap->kda_encryptedkeysize);
685 free(kdap->kda_encryptedkey);
686 explicit_bzero(kdap, sizeof(*kdap));