(format, key)
| 691 | } |
| 692 | |
| 693 | function exportKeySync(format, key) { |
| 694 | const algorithm = getCryptoKeyAlgorithm(key); |
| 695 | try { |
| 696 | normalizeAlgorithm(algorithm, 'exportKey'); |
| 697 | } catch { |
| 698 | throw lazyDOMException( |
| 699 | `${algorithm.name} key export is not supported`, 'NotSupportedError'); |
| 700 | } |
| 701 | |
| 702 | if (!getCryptoKeyExtractable(key)) |
| 703 | throw lazyDOMException('key is not extractable', 'InvalidAccessError'); |
| 704 | |
| 705 | const type = getCryptoKeyType(key); |
| 706 | let result; |
| 707 | switch (format) { |
| 708 | case 'spki': { |
| 709 | if (type === 'public') { |
| 710 | result = exportKeySpki(key); |
| 711 | } |
| 712 | break; |
| 713 | } |
| 714 | case 'pkcs8': { |
| 715 | if (type === 'private') { |
| 716 | result = exportKeyPkcs8(key); |
| 717 | } |
| 718 | break; |
| 719 | } |
| 720 | case 'jwk': { |
| 721 | result = exportKeyJWK(key); |
| 722 | break; |
| 723 | } |
| 724 | case 'raw-secret': { |
| 725 | if (type === 'secret') { |
| 726 | result = exportKeyRawSecret(key, format); |
| 727 | } |
| 728 | break; |
| 729 | } |
| 730 | case 'raw-public': { |
| 731 | if (type === 'public') { |
| 732 | result = exportKeyRawPublic(key, format); |
| 733 | } |
| 734 | break; |
| 735 | } |
| 736 | case 'raw-seed': { |
| 737 | if (type === 'private') { |
| 738 | result = exportKeyRawSeed(key); |
| 739 | } |
| 740 | break; |
| 741 | } |
| 742 | case 'raw': { |
| 743 | if (type === 'secret') { |
| 744 | result = exportKeyRawSecret(key, format); |
| 745 | } else if (type === 'public') { |
| 746 | result = exportKeyRawPublic(key, format); |
| 747 | } |
| 748 | break; |
| 749 | } |
| 750 | } |
no test coverage detected
searching dependent graphs…