@@ -487,44 +487,61 @@ static psa_status_t convert_to_psa_attributes(kmu_metadata *metadata,
487
487
psa_set_key_usage_flags (key_attr , usage_flags );
488
488
489
489
switch (metadata -> algorithm ) {
490
+ #ifdef PSA_WANT_ALG_CHACHA20
490
491
case METADATA_ALG_CHACHA20 :
491
492
psa_set_key_type (key_attr , PSA_KEY_TYPE_CHACHA20 );
492
493
psa_set_key_algorithm (key_attr , PSA_ALG_STREAM_CIPHER );
493
494
break ;
495
+ #endif
496
+ #ifdef PSA_WANT_ALG_CHACHA20_POLY1305
494
497
case METADATA_ALG_CHACHA20_POLY1305 :
495
498
psa_set_key_type (key_attr , PSA_KEY_TYPE_CHACHA20 );
496
499
psa_set_key_algorithm (key_attr , PSA_ALG_CHACHA20_POLY1305 );
497
500
break ;
501
+ #endif
502
+ #ifdef PSA_WANT_ALG_AES_GCM
498
503
case METADATA_ALG_AES_GCM :
499
504
psa_set_key_type (key_attr , PSA_KEY_TYPE_AES );
500
505
psa_set_key_algorithm (key_attr , PSA_ALG_GCM );
501
506
break ;
507
+ #endif
508
+ #ifdef PSA_WANT_ALG_AES_CCM
502
509
case METADATA_ALG_AES_CCM :
503
510
psa_set_key_type (key_attr , PSA_KEY_TYPE_AES );
504
511
psa_set_key_algorithm (key_attr , PSA_ALG_CCM );
505
512
break ;
513
+ #endif
514
+ #ifdef PSA_WANT_ALG_AES_ECB
506
515
case METADATA_ALG_AES_ECB :
507
516
psa_set_key_type (key_attr , PSA_KEY_TYPE_AES );
508
517
psa_set_key_algorithm (key_attr , PSA_ALG_ECB_NO_PADDING );
509
518
break ;
519
+ #endif
520
+ #ifdef PSA_WANT_ALG_AES_CTR
510
521
case METADATA_ALG_AES_CTR :
511
522
psa_set_key_type (key_attr , PSA_KEY_TYPE_AES );
512
523
psa_set_key_algorithm (key_attr , PSA_ALG_CTR );
513
524
break ;
525
+ #endif
526
+ #ifdef PSA_WANT_ALG_AES_CBC
514
527
case METADATA_ALG_AES_CBC :
515
528
psa_set_key_type (key_attr , PSA_KEY_TYPE_AES );
516
529
psa_set_key_algorithm (key_attr , PSA_ALG_CBC_NO_PADDING );
517
530
break ;
518
- #ifdef PSA_ALG_SP800_108_COUNTER_CMAC
531
+ #endif
532
+ #ifdef PSA_WANT_ALG_SP800_108_COUNTER_CMAC
519
533
case METADATA_ALG_SP800_108_COUNTER_CMAC :
520
534
psa_set_key_type (key_attr , PSA_KEY_TYPE_AES );
521
535
psa_set_key_algorithm (key_attr , PSA_ALG_SP800_108_COUNTER_CMAC );
522
536
break ;
523
537
#endif
538
+ #ifdef PSA_WANT_ALG_ALG_CMAC
524
539
case METADATA_ALG_CMAC :
525
540
psa_set_key_type (key_attr , PSA_KEY_TYPE_AES );
526
541
psa_set_key_algorithm (key_attr , PSA_ALG_CMAC );
527
542
break ;
543
+ #endif
544
+ #ifdef PSA_WANT_ALG_ED25519
528
545
case METADATA_ALG_ED25519 :
529
546
/* If the key can sign it is assumed it is a private key */
530
547
psa_set_key_type (
@@ -534,6 +551,8 @@ static psa_status_t convert_to_psa_attributes(kmu_metadata *metadata,
534
551
: PSA_KEY_TYPE_ECC_PUBLIC_KEY (PSA_ECC_FAMILY_TWISTED_EDWARDS ));
535
552
psa_set_key_algorithm (key_attr , PSA_ALG_PURE_EDDSA );
536
553
break ;
554
+ #endif
555
+ #ifdef PSA_WANT_ALG_ED25519PH
537
556
case METADATA_ALG_ED25519PH :
538
557
/* If the key can sign it is assumed it is a private key */
539
558
psa_set_key_type (
@@ -543,17 +562,22 @@ static psa_status_t convert_to_psa_attributes(kmu_metadata *metadata,
543
562
: PSA_KEY_TYPE_ECC_PUBLIC_KEY (PSA_ECC_FAMILY_TWISTED_EDWARDS ));
544
563
psa_set_key_algorithm (key_attr , PSA_ALG_ED25519PH );
545
564
break ;
565
+ #endif
566
+ #ifdef PSA_WANT_ALG_ECDSA
546
567
case METADATA_ALG_ECDSA :
547
568
psa_set_key_type (key_attr ,
548
569
can_sign (key_attr )
549
570
? PSA_KEY_TYPE_ECC_KEY_PAIR (PSA_ECC_FAMILY_SECP_R1 )
550
571
: PSA_KEY_TYPE_ECC_PUBLIC_KEY (PSA_ECC_FAMILY_SECP_R1 ));
551
572
psa_set_key_algorithm (key_attr , PSA_ALG_ECDSA (PSA_ALG_ANY_HASH ));
552
573
break ;
574
+ #endif
575
+ #ifdef PSA_WANT_ALG_HMAC
553
576
case METADATA_ALG_HMAC :
554
577
psa_set_key_type (key_attr , PSA_KEY_TYPE_HMAC );
555
578
psa_set_key_algorithm (key_attr , PSA_ALG_HMAC (PSA_ALG_SHA_256 ));
556
579
break ;
580
+ #endif
557
581
default :
558
582
return PSA_ERROR_HARDWARE_FAILURE ;
559
583
}
@@ -628,89 +652,109 @@ static psa_status_t convert_from_psa_attributes(const psa_key_attributes_t *key_
628
652
}
629
653
630
654
switch (psa_get_key_algorithm (key_attr )) {
655
+ #ifdef PSA_WANT_ALG_STREAM_CIPHER
631
656
case PSA_ALG_STREAM_CIPHER :
632
657
metadata -> algorithm = METADATA_ALG_CHACHA20 ;
633
658
if (psa_get_key_type (key_attr ) != PSA_KEY_TYPE_CHACHA20 ) {
634
659
return PSA_ERROR_NOT_SUPPORTED ;
635
660
}
636
661
break ;
662
+ #endif
663
+ #ifdef PSA_WANT_ALG_CHACHA20_POLY1305
637
664
case PSA_ALG_CHACHA20_POLY1305 :
638
665
metadata -> algorithm = METADATA_ALG_CHACHA20_POLY1305 ;
639
666
if (psa_get_key_type (key_attr ) != PSA_KEY_TYPE_CHACHA20 ) {
640
667
return PSA_ERROR_NOT_SUPPORTED ;
641
668
}
642
669
break ;
670
+ #endif
671
+ #ifdef PSA_WANT_ALG_ALG_GCM
643
672
case PSA_ALG_GCM :
644
673
metadata -> algorithm = METADATA_ALG_AES_GCM ;
645
674
if (psa_get_key_type (key_attr ) != PSA_KEY_TYPE_AES ) {
646
675
return PSA_ERROR_NOT_SUPPORTED ;
647
676
}
648
677
break ;
678
+ #endif
679
+ #ifdef PSA_WANT_ALG_CCM
649
680
case PSA_ALG_CCM :
650
681
metadata -> algorithm = METADATA_ALG_AES_CCM ;
651
682
if (psa_get_key_type (key_attr ) != PSA_KEY_TYPE_AES ) {
652
683
return PSA_ERROR_NOT_SUPPORTED ;
653
684
}
654
685
break ;
686
+ #endif
687
+ #ifdef PSA_WANT_ALG_ECB_NO_PADDING
655
688
case PSA_ALG_ECB_NO_PADDING :
656
689
metadata -> algorithm = METADATA_ALG_AES_ECB ;
657
690
if (psa_get_key_type (key_attr ) != PSA_KEY_TYPE_AES ) {
658
691
return PSA_ERROR_NOT_SUPPORTED ;
659
692
}
660
693
break ;
694
+ #endif
695
+ #ifdef PSA_WANT_ALG_CTR
661
696
case PSA_ALG_CTR :
662
697
metadata -> algorithm = METADATA_ALG_AES_CTR ;
663
698
if (psa_get_key_type (key_attr ) != PSA_KEY_TYPE_AES ) {
664
699
return PSA_ERROR_NOT_SUPPORTED ;
665
700
}
666
701
break ;
702
+ #endif
703
+ #ifdef PSA_WANT_ALG_CBC_NO_PADDING
667
704
case PSA_ALG_CBC_NO_PADDING :
668
705
metadata -> algorithm = METADATA_ALG_AES_CBC ;
669
706
if (psa_get_key_type (key_attr ) != PSA_KEY_TYPE_AES ) {
670
707
return PSA_ERROR_NOT_SUPPORTED ;
671
708
}
672
709
break ;
673
- #ifdef PSA_ALG_SP800_108_COUNTER_CMAC
710
+ #endif
711
+ #ifdef PSA_WANT_ALG_SP800_108_COUNTER_CMAC
674
712
case PSA_ALG_SP800_108_COUNTER_CMAC :
675
713
metadata -> algorithm = METADATA_ALG_SP800_108_COUNTER_CMAC ;
676
714
if (psa_get_key_type (key_attr ) != PSA_KEY_TYPE_AES ) {
677
715
return PSA_ERROR_NOT_SUPPORTED ;
678
716
}
679
717
break ;
680
718
#endif
719
+ #ifdef PSA_WANT_ALG_CMAC
681
720
case PSA_ALG_CMAC :
682
721
metadata -> algorithm = METADATA_ALG_CMAC ;
683
722
if (psa_get_key_type (key_attr ) != PSA_KEY_TYPE_AES ) {
684
723
return PSA_ERROR_NOT_SUPPORTED ;
685
724
}
686
725
break ;
687
726
688
- case PSA_ALG_PURE_EDDSA :
727
+ #endif
728
+ #ifdef PSA_WANT_ALG_ED25519PH
729
+ case PSA_ALG_ED25519PH :
689
730
if (PSA_KEY_TYPE_ECC_GET_FAMILY (psa_get_key_type (key_attr )) !=
690
- PSA_ECC_FAMILY_TWISTED_EDWARDS ) {
731
+ PSA_ECC_FAMILY_TWISTED_EDWARDS ) {
691
732
return PSA_ERROR_NOT_SUPPORTED ;
692
733
}
693
734
/* Don't support private keys that are only used for verify */
694
735
if (!can_sign (key_attr ) &&
695
- PSA_KEY_TYPE_IS_ECC_KEY_PAIR (psa_get_key_type (key_attr ))) {
736
+ PSA_KEY_TYPE_IS_ECC_KEY_PAIR (psa_get_key_type (key_attr ))) {
696
737
return PSA_ERROR_NOT_SUPPORTED ;
697
738
}
698
- metadata -> algorithm = METADATA_ALG_ED25519 ;
699
- break ;
700
-
701
- case PSA_ALG_ED25519PH :
739
+ metadata -> algorithm = METADATA_ALG_ED25519PH ;
740
+ break ;
741
+ #endif
742
+ #ifdef PSA_WANT_ALG_PURE_EDDSA
743
+ case PSA_ALG_PURE_EDDSA :
702
744
if (PSA_KEY_TYPE_ECC_GET_FAMILY (psa_get_key_type (key_attr )) !=
703
- PSA_ECC_FAMILY_TWISTED_EDWARDS ) {
745
+ PSA_ECC_FAMILY_TWISTED_EDWARDS ) {
704
746
return PSA_ERROR_NOT_SUPPORTED ;
705
747
}
706
748
/* Don't support private keys that are only used for verify */
707
749
if (!can_sign (key_attr ) &&
708
- PSA_KEY_TYPE_IS_ECC_KEY_PAIR (psa_get_key_type (key_attr ))) {
750
+ PSA_KEY_TYPE_IS_ECC_KEY_PAIR (psa_get_key_type (key_attr ))) {
709
751
return PSA_ERROR_NOT_SUPPORTED ;
710
752
}
711
- metadata -> algorithm = METADATA_ALG_ED25519PH ;
712
- break ;
753
+ metadata -> algorithm = METADATA_ALG_ED25519 ;
754
+ break ;
713
755
756
+ #endif
757
+ #ifdef PSA_WANT_ALG_ECDSA
714
758
case PSA_ALG_ECDSA (PSA_ALG_ANY_HASH ):
715
759
case PSA_ALG_ECDSA (PSA_ALG_SHA_256 ):
716
760
if (PSA_KEY_TYPE_ECC_GET_FAMILY (psa_get_key_type (key_attr )) !=
@@ -725,12 +769,15 @@ static psa_status_t convert_from_psa_attributes(const psa_key_attributes_t *key_
725
769
}
726
770
metadata -> algorithm = METADATA_ALG_ECDSA ;
727
771
break ;
772
+ #endif
773
+ #ifdef PSA_WANT_ALG_HMAC
728
774
case PSA_ALG_HMAC (PSA_ALG_SHA_256 ):
729
775
if (!can_sign (key_attr ) && PSA_ALG_IS_HMAC (psa_get_key_type (key_attr ))) {
730
776
return PSA_ERROR_NOT_SUPPORTED ;
731
777
}
732
778
metadata -> algorithm = METADATA_ALG_HMAC ;
733
779
break ;
780
+ #endif
734
781
default :
735
782
return PSA_ERROR_NOT_SUPPORTED ;
736
783
}
0 commit comments