@microsoft/ccf-app 4.0.6 → 5.0.0-dev0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/crypto.d.ts +1 -1
- package/endpoints.d.ts +10 -2
- package/global.d.ts +6 -3
- package/package.json +2 -2
- package/polyfill.js +11 -1
package/crypto.d.ts
CHANGED
|
@@ -29,7 +29,7 @@ export declare const verifySignature: (algorithm: import("./global.js").SigningA
|
|
|
29
29
|
/**
|
|
30
30
|
* @inheritDoc global!CCFCrypto.digest
|
|
31
31
|
*/
|
|
32
|
-
export declare const digest: (algorithm: "
|
|
32
|
+
export declare const digest: (algorithm: import("./global.js").DigestAlgorithm, plaintext: ArrayBuffer) => ArrayBuffer;
|
|
33
33
|
/**
|
|
34
34
|
* @inheritDoc global!CCFCrypto.isValidX509CertBundle
|
|
35
35
|
*/
|
package/endpoints.d.ts
CHANGED
|
@@ -120,10 +120,18 @@ export interface UserCertAuthnIdentity extends UserMemberAuthnIdentityCommon {
|
|
|
120
120
|
export interface MemberCertAuthnIdentity extends UserMemberAuthnIdentityCommon {
|
|
121
121
|
policy: "member_cert";
|
|
122
122
|
}
|
|
123
|
-
|
|
123
|
+
interface UserMemberCOSEAuthIdentityCommon {
|
|
124
|
+
cose: {
|
|
125
|
+
/**
|
|
126
|
+
* COSE content
|
|
127
|
+
*/
|
|
128
|
+
content: ArrayBuffer;
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
export interface MemberCOSESign1AuthnIdentity extends UserMemberAuthnIdentityCommon, UserMemberCOSEAuthIdentityCommon {
|
|
124
132
|
policy: "member_cose_sign1";
|
|
125
133
|
}
|
|
126
|
-
export interface UserCOSESign1AuthnIdentity extends UserMemberAuthnIdentityCommon {
|
|
134
|
+
export interface UserCOSESign1AuthnIdentity extends UserMemberAuthnIdentityCommon, UserMemberCOSEAuthIdentityCommon {
|
|
127
135
|
policy: "user_cose_sign1";
|
|
128
136
|
}
|
|
129
137
|
export interface JwtAuthnIdentity extends AuthnIdentityCommon {
|
package/global.d.ts
CHANGED
|
@@ -172,12 +172,12 @@ export interface CryptoKeyPair {
|
|
|
172
172
|
*/
|
|
173
173
|
publicKey: string;
|
|
174
174
|
}
|
|
175
|
-
export type AlgorithmName = "RSASSA-PKCS1-v1_5" | "ECDSA" | "EdDSA";
|
|
176
|
-
export type DigestAlgorithm = "SHA-256";
|
|
175
|
+
export type AlgorithmName = "RSASSA-PKCS1-v1_5" | "ECDSA" | "EdDSA" | "HMAC";
|
|
176
|
+
export type DigestAlgorithm = "SHA-256" | "SHA-384" | "SHA-512";
|
|
177
177
|
export interface SigningAlgorithm {
|
|
178
178
|
name: AlgorithmName;
|
|
179
179
|
/**
|
|
180
|
-
* Digest algorithm. It's necessary for "RSASSA-PKCS1-v1_5" and "
|
|
180
|
+
* Digest algorithm. It's necessary for "RSASSA-PKCS1-v1_5", "ECDSA", and "HMAC"
|
|
181
181
|
*/
|
|
182
182
|
hash?: DigestAlgorithm;
|
|
183
183
|
}
|
|
@@ -496,6 +496,9 @@ export interface CCF {
|
|
|
496
496
|
strToBuf(v: string): ArrayBuffer;
|
|
497
497
|
/**
|
|
498
498
|
* Convert an ArrayBuffer into a string.
|
|
499
|
+
*
|
|
500
|
+
* Note that this function does not perform any encoding validation, and may produce
|
|
501
|
+
* an invalid JS string if the input is not valid UTF-8.
|
|
499
502
|
*/
|
|
500
503
|
bufToStr(v: ArrayBuffer): string;
|
|
501
504
|
/**
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@microsoft/ccf-app",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "5.0.0-dev0",
|
|
4
4
|
"description": "CCF app support package",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"files": [
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
"devDependencies": {
|
|
21
21
|
"@types/chai": "^4.2.15",
|
|
22
22
|
"@types/mocha": "^10.0.0",
|
|
23
|
-
"@types/node": "^
|
|
23
|
+
"@types/node": "^20.1.0",
|
|
24
24
|
"@types/node-forge": "^1.0.0",
|
|
25
25
|
"chai": "^4.3.4",
|
|
26
26
|
"colors": "1.4.0",
|
package/polyfill.js
CHANGED
|
@@ -92,6 +92,14 @@ class CCFPolyfill {
|
|
|
92
92
|
};
|
|
93
93
|
this.crypto = {
|
|
94
94
|
sign(algorithm, key, data) {
|
|
95
|
+
if (algorithm.name === "HMAC") {
|
|
96
|
+
const hashAlg = algorithm.hash
|
|
97
|
+
.replace("-", "")
|
|
98
|
+
.toLowerCase();
|
|
99
|
+
const hmac = jscrypto.createHmac(hashAlg, key);
|
|
100
|
+
hmac.update(new Uint8Array(data));
|
|
101
|
+
return hmac.digest();
|
|
102
|
+
}
|
|
95
103
|
let padding = undefined;
|
|
96
104
|
const privKey = jscrypto.createPrivateKey(key);
|
|
97
105
|
if (privKey.asymmetricKeyType == "rsa") {
|
|
@@ -425,8 +433,10 @@ class CCFPolyfill {
|
|
|
425
433
|
strToBuf(s) {
|
|
426
434
|
return typedArrToArrBuf(new TextEncoder().encode(s));
|
|
427
435
|
}
|
|
436
|
+
// Note: this is stricter than CCF's bufToStr, as it will
|
|
437
|
+
// reject buffers that are not valid UTF-8.
|
|
428
438
|
bufToStr(v) {
|
|
429
|
-
return new TextDecoder().decode(v);
|
|
439
|
+
return new TextDecoder("utf-8", { fatal: true }).decode(v);
|
|
430
440
|
}
|
|
431
441
|
jsonCompatibleToBuf(v) {
|
|
432
442
|
return this.strToBuf(JSON.stringify(v));
|