@mridang/webhint-hint-plumbline 0.4.0 → 0.6.0

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.
@@ -1,28 +1,34 @@
1
1
  import type { EphemeralKey } from './evaluate.js';
2
2
  import type { TlsConnect } from './client.js';
3
- /** The certificate facts the prober reads, named as Node names them. */
3
+ /** A certificate name, as the prober writes it. */
4
+ export interface RemoteName {
5
+ common_name?: string;
6
+ organization?: string;
7
+ country?: string;
8
+ }
9
+ /** The certificate facts the prober reads. */
4
10
  export interface RemoteCertificate {
5
- subject: Record<string, string>;
6
- issuer: Record<string, string>;
7
- subjectaltname: string;
11
+ subject: RemoteName;
12
+ issuer: RemoteName;
13
+ subject_alt_names: string;
8
14
  valid_from: string;
9
15
  valid_to: string;
10
- serialNumber: string;
16
+ serial_number: string;
11
17
  fingerprint256: string;
12
- keyType: string;
18
+ key_type: string;
13
19
  bits?: number;
14
- asn1Curve?: string;
15
- signatureAlgorithm: string;
20
+ asn1_curve?: string;
21
+ signature_algorithm: string;
16
22
  }
17
23
  /** What the prober answers. */
18
24
  export interface RemoteHandshake {
19
25
  protocol: string;
20
26
  cipher: {
21
27
  name: string;
22
- standardName: string;
28
+ standard_name: string;
23
29
  };
24
30
  authorized: boolean;
25
- authorizationError: string | null;
31
+ authorization_error: string | null;
26
32
  ephemeral: EphemeralKey | null;
27
33
  /** DER, base64, leaf first. */
28
34
  chain: string[] | null;
@@ -36,15 +42,15 @@ export interface RemoteRequest {
36
42
  host: string;
37
43
  port: number;
38
44
  starttls?: 'smtp';
39
- minVersion?: string;
40
- maxVersion?: string;
45
+ min_version?: string;
46
+ max_version?: string;
41
47
  /** An OpenSSL cipher list. */
42
48
  ciphers?: string;
43
49
  /** An OpenSSL signature algorithm list. */
44
50
  sigalgs?: string;
45
51
  /** Colon separated key exchange groups. */
46
- ecdhCurve?: string;
47
- requestOCSP?: boolean;
52
+ ecdh_curve?: string;
53
+ request_ocsp?: boolean;
48
54
  }
49
55
  /** Makes one request to the prober; rejects when the handshake failed. */
50
56
  export type RemoteCall = (request: RemoteRequest) => Promise<RemoteHandshake>;
@@ -3,19 +3,27 @@ import { TLS_VERSIONS } from './constants.js';
3
3
  function bytesOf(base64) {
4
4
  return Buffer.from(base64, 'base64');
5
5
  }
6
+ /** A name as Node shows it: `CN`, `O` and `C`. */
7
+ function nodeName(name) {
8
+ return {
9
+ ...(name?.common_name ? { CN: name.common_name } : {}),
10
+ ...(name?.organization ? { O: name.organization } : {}),
11
+ ...(name?.country ? { C: name.country } : {}),
12
+ };
13
+ }
6
14
  /** The leaf certificate as Node shows it, from what the prober read. */
7
15
  function peerOf(certs, chain) {
8
16
  const leaf = certs[0];
9
17
  return {
10
- subject: leaf?.subject ?? {},
11
- issuer: leaf?.issuer ?? {},
12
- subjectaltname: leaf?.subjectaltname,
18
+ subject: nodeName(leaf?.subject),
19
+ issuer: nodeName(leaf?.issuer),
20
+ subjectaltname: leaf?.subject_alt_names,
13
21
  valid_from: leaf?.valid_from,
14
22
  valid_to: leaf?.valid_to,
15
- serialNumber: leaf?.serialNumber,
23
+ serialNumber: leaf?.serial_number,
16
24
  fingerprint256: leaf?.fingerprint256,
17
25
  bits: leaf?.bits,
18
- asn1Curve: leaf?.asn1Curve,
26
+ asn1Curve: leaf?.asn1_curve,
19
27
  raw: chain[0],
20
28
  };
21
29
  }
@@ -26,12 +34,12 @@ export function remoteConnect(call) {
26
34
  host: target.host,
27
35
  port: target.port,
28
36
  ...(target.starttls ? { starttls: target.starttls } : {}),
29
- ...(options.minVersion ? { minVersion: options.minVersion } : {}),
30
- ...(options.maxVersion ? { maxVersion: options.maxVersion } : {}),
37
+ ...(options.minVersion ? { min_version: options.minVersion } : {}),
38
+ ...(options.maxVersion ? { max_version: options.maxVersion } : {}),
31
39
  ...(options.ciphers ? { ciphers: options.ciphers } : {}),
32
40
  ...(options.sigalgs ? { sigalgs: options.sigalgs } : {}),
33
- ...(options.ecdhCurve ? { ecdhCurve: options.ecdhCurve } : {}),
34
- ...(options.requestOCSP ? { requestOCSP: true } : {}),
41
+ ...(options.ecdhCurve ? { ecdh_curve: options.ecdhCurve } : {}),
42
+ ...(options.requestOCSP ? { request_ocsp: true } : {}),
35
43
  });
36
44
  const chain = (answer.chain ?? []).map(bytesOf);
37
45
  const protocol = TLS_VERSIONS.includes(answer.protocol)
@@ -39,10 +47,13 @@ export function remoteConnect(call) {
39
47
  : null;
40
48
  const result = {
41
49
  protocol,
42
- cipher: answer.cipher,
50
+ cipher: {
51
+ name: answer.cipher.name,
52
+ standardName: answer.cipher.standard_name,
53
+ },
43
54
  ephemeral: answer.ephemeral,
44
55
  authorized: answer.authorized,
45
- authorizationError: answer.authorizationError,
56
+ authorizationError: answer.authorization_error,
46
57
  chain,
47
58
  peerCertificate: peerOf(answer.certificates ?? [], chain),
48
59
  ocspResponse: answer.ocsp ? bytesOf(answer.ocsp) : null,
@@ -1 +1 @@
1
- {"version":3,"file":"remote.js","sourceRoot":"","sources":["../../../src/lib/tls/remote.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"remote.js","sourceRoot":"","sources":["../../../src/lib/tls/remote.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mridang/webhint-hint-plumbline",
3
- "version": "0.4.0",
3
+ "version": "0.6.0",
4
4
  "type": "module",
5
5
  "scripts": {
6
6
  "prepack": "tsc --build",