File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -944,14 +944,31 @@ function getCryptoKeyAlgorithm(key) {
944944 return getSlots ( key ) [ kSlotAlgorithm ] ;
945945}
946946
947+ /**
948+ * Returns the CryptoKey's native `[[usages]]` mask.
949+ * @param {CryptoKey } key
950+ * @returns {number }
951+ */
947952function getCryptoKeyUsagesMask ( key ) {
948953 return getSlots ( key ) [ kSlotUsagesMask ] ;
949954}
950955
956+ /**
957+ * Returns whether a CryptoKey's `[[usages]]` contains `usage`.
958+ * @param {CryptoKey } key
959+ * @param {string } usage
960+ * @returns {boolean }
961+ */
951962function hasCryptoKeyUsage ( key , usage ) {
952963 return hasUsage ( getCryptoKeyUsagesMask ( key ) , usage ) ;
953964}
954965
966+ /**
967+ * Returns the CryptoKey's cached canonical usages array for internal
968+ * consumers, expanding it from the native usage mask on first access.
969+ * @param {Array } slots
970+ * @returns {string[] }
971+ */
955972function getCryptoKeyUsagesFromSlots ( slots ) {
956973 let usages = slots [ kSlotUsages ] ;
957974 if ( usages === undefined ) {
@@ -963,7 +980,8 @@ function getCryptoKeyUsagesFromSlots(slots) {
963980
964981/**
965982 * Returns the CryptoKey's `[[usages]]` internal slot, bypassing the
966- * public `usages` getter (which returns a cloned array).
983+ * public `usages` getter (which returns a cloned array). The internal
984+ * array is expanded lazily from the native usage mask.
967985 * @param {CryptoKey } key
968986 * @returns {string[] }
969987 */
Original file line number Diff line number Diff line change @@ -717,6 +717,12 @@ function getStringOption(options, key) {
717717 return value ;
718718}
719719
720+ /**
721+ * Returns the requested usages that are present in `usageSet`.
722+ * @param {SafeSet<string> } usageSet
723+ * @param {...string } usages
724+ * @returns {SafeSet<string> }
725+ */
720726function getUsagesUnion ( usageSet , ...usages ) {
721727 const newset = new SafeSet ( ) ;
722728 for ( let n = 0 ; n < usages . length ; n ++ ) {
@@ -768,6 +774,12 @@ function getUsagesMask(usageSet) {
768774 return mask ;
769775}
770776
777+ /**
778+ * Returns whether `mask` contains `usage`.
779+ * @param {number } mask
780+ * @param {string } usage
781+ * @returns {boolean }
782+ */
771783function hasUsage ( mask , usage ) {
772784 return ( mask & kUsageMasks [ usage ] ) !== 0 ;
773785}
You can’t perform that action at this time.
0 commit comments