File tree Expand file tree Collapse file tree 3 files changed +30
-0
lines changed Expand file tree Collapse file tree 3 files changed +30
-0
lines changed Original file line number Diff line number Diff line change @@ -21,6 +21,7 @@ Integrity](https://w3c.github.io/webappsec/specs/subresourceintegrity/) hashes.
21
21
* [ ` Integrity#concat ` ] ( #integrity-concat )
22
22
* [ ` Integrity#toString ` ] ( #integrity-to-string )
23
23
* [ ` Integrity#pickAlgorithm ` ] ( #integrity-pick-algorithm )
24
+ * [ ` IntegrityMetadata#hexDigest ` ] ( #integrity-metadata-hex-digest )
24
25
* Integrity Generation
25
26
* [ ` fromData ` ] ( #from-data )
26
27
* [ ` fromStream ` ] ( #from-stream )
@@ -215,6 +216,17 @@ may intentionally deprioritize algorithms with known vulnerabilities.
215
216
ssri .parse (' sha1-WEakDigEST sha512-yzd8ELD1piyANiWnmdnpCL5F52f10UfUdEkHywVZeqTt0ymgrxR63Qz0GB7TKPoeeZQmWCaz7T1' ).pickAlgorithm () // sha512
216
217
```
217
218
219
+ #### <a name =" integrity-metadata-hex-digest " ></a > ` > IntegrityMetadata#hexDigest() -> String `
220
+
221
+ Called on an * individual* ` IntegrityMetadata ` object, will convert its ` digest `
222
+ to a hex representation of the base64 data.
223
+
224
+ ##### Example
225
+
226
+ ``` javascript
227
+ ssri .parse (' sha1-deadbeef' , {single: true }).hexDigest () // '75e69d6de79f'
228
+ ```
229
+
218
230
#### <a name =" from-data " ></a > ` > ssri.fromData(data, [opts]) -> Integrity `
219
231
220
232
Creates an ` Integrity ` object from either string or ` Buffer ` data, calculating
Original file line number Diff line number Diff line change @@ -29,6 +29,13 @@ class IntegrityMetadata {
29
29
const rawOpts = match [ 3 ]
30
30
this . options = rawOpts ? rawOpts . slice ( 1 ) . split ( '?' ) : [ ]
31
31
}
32
+ hexDigest ( ) {
33
+ return this . digest && (
34
+ Buffer . from
35
+ ? Buffer . from ( this . digest , 'base64' )
36
+ : new Buffer ( this . digest , 'base64' )
37
+ ) . toString ( 'hex' )
38
+ }
32
39
toString ( opts ) {
33
40
if ( opts && opts . strict ) {
34
41
// Strict mode enforces the standard as close to the foot of the
Original file line number Diff line number Diff line change @@ -81,6 +81,17 @@ test('pickAlgorithm()', t => {
81
81
t . done ( )
82
82
} )
83
83
84
+ test ( 'IntegrityMetadata.hexDigest()' , t => {
85
+ const sri = ssri . parse ( 'sha512-bar' , { single : true } )
86
+ t . equal (
87
+ sri . hexDigest ( ) ,
88
+ (
89
+ Buffer . from ? Buffer . from ( 'bar' , 'base64' ) : new Buffer ( 'bar' , 'base64' )
90
+ ) . toString ( 'hex' ) ,
91
+ 'returned hex version of base64 digest' )
92
+ t . done ( )
93
+ } )
94
+
84
95
test ( 'semi-private' , t => {
85
96
t . equal ( ssri . Integrity , undefined , 'Integrity class is module-private.' )
86
97
t . done ( )
You can’t perform that action at this time.
0 commit comments