feat: 초기 프로젝트 설정 및 룰.md 파일 추가
This commit is contained in:
49
api.hyungi.net/node_modules/@simplewebauthn/server/script/services/defaultRootCerts/android-key.d.ts
generated
vendored
Normal file
49
api.hyungi.net/node_modules/@simplewebauthn/server/script/services/defaultRootCerts/android-key.d.ts
generated
vendored
Normal file
@@ -0,0 +1,49 @@
|
||||
/**
|
||||
* Google Hardware Attestation Root 1
|
||||
*
|
||||
* Downloaded from https://developer.android.com/training/articles/security-key-attestation#root_certificate
|
||||
* (first entry)
|
||||
*
|
||||
* Valid until 2026-05-24 @ 09:28 PST
|
||||
*
|
||||
* SHA256 Fingerprint
|
||||
* C1:98:4A:3E:F4:5C:1E:2A:91:85:51:DE:10:60:3C:86:F7:05:1B:22:49:C4:89:1C:AE:32:30:EA:BD:0C:97:D5
|
||||
*/
|
||||
export declare const Google_Hardware_Attestation_Root_1 = "-----BEGIN CERTIFICATE-----\nMIIFYDCCA0igAwIBAgIJAOj6GWMU0voYMA0GCSqGSIb3DQEBCwUAMBsxGTAXBgNV\nBAUTEGY5MjAwOWU4NTNiNmIwNDUwHhcNMTYwNTI2MTYyODUyWhcNMjYwNTI0MTYy\nODUyWjAbMRkwFwYDVQQFExBmOTIwMDllODUzYjZiMDQ1MIICIjANBgkqhkiG9w0B\nAQEFAAOCAg8AMIICCgKCAgEAr7bHgiuxpwHsK7Qui8xUFmOr75gvMsd/dTEDDJdS\nSxtf6An7xyqpRR90PL2abxM1dEqlXnf2tqw1Ne4Xwl5jlRfdnJLmN0pTy/4lj4/7\ntv0Sk3iiKkypnEUtR6WfMgH0QZfKHM1+di+y9TFRtv6y//0rb+T+W8a9nsNL/ggj\nnar86461qO0rOs2cXjp3kOG1FEJ5MVmFmBGtnrKpa73XpXyTqRxB/M0n1n/W9nGq\nC4FSYa04T6N5RIZGBN2z2MT5IKGbFlbC8UrW0DxW7AYImQQcHtGl/m00QLVWutHQ\noVJYnFPlXTcHYvASLu+RhhsbDmxMgJJ0mcDpvsC4PjvB+TxywElgS70vE0XmLD+O\nJtvsBslHZvPBKCOdT0MS+tgSOIfga+z1Z1g7+DVagf7quvmag8jfPioyKvxnK/Eg\nsTUVi2ghzq8wm27ud/mIM7AY2qEORR8Go3TVB4HzWQgpZrt3i5MIlCaY504LzSRi\nigHCzAPlHws+W0rB5N+er5/2pJKnfBSDiCiFAVtCLOZ7gLiMm0jhO2B6tUXHI/+M\nRPjy02i59lINMRRev56GKtcd9qO/0kUJWdZTdA2XoS82ixPvZtXQpUpuL12ab+9E\naDK8Z4RHJYYfCT3Q5vNAXaiWQ+8PTWm2QgBR/bkwSWc+NpUFgNPN9PvQi8WEg5Um\nAGMCAwEAAaOBpjCBozAdBgNVHQ4EFgQUNmHhAHyIBQlRi0RsR/8aTMnqTxIwHwYD\nVR0jBBgwFoAUNmHhAHyIBQlRi0RsR/8aTMnqTxIwDwYDVR0TAQH/BAUwAwEB/zAO\nBgNVHQ8BAf8EBAMCAYYwQAYDVR0fBDkwNzA1oDOgMYYvaHR0cHM6Ly9hbmRyb2lk\nLmdvb2dsZWFwaXMuY29tL2F0dGVzdGF0aW9uL2NybC8wDQYJKoZIhvcNAQELBQAD\nggIBACDIw41L3KlXG0aMiS//cqrG+EShHUGo8HNsw30W1kJtjn6UBwRM6jnmiwfB\nPb8VA91chb2vssAtX2zbTvqBJ9+LBPGCdw/E53Rbf86qhxKaiAHOjpvAy5Y3m00m\nqC0w/Zwvju1twb4vhLaJ5NkUJYsUS7rmJKHHBnETLi8GFqiEsqTWpG/6ibYCv7rY\nDBJDcR9W62BW9jfIoBQcxUCUJouMPH25lLNcDc1ssqvC2v7iUgI9LeoM1sNovqPm\nQUiG9rHli1vXxzCyaMTjwftkJLkf6724DFhuKug2jITV0QkXvaJWF4nUaHOTNA4u\nJU9WDvZLI1j83A+/xnAJUucIv/zGJ1AMH2boHqF8CY16LpsYgBt6tKxxWH00XcyD\nCdW2KlBCeqbQPcsFmWyWugxdcekhYsAWyoSf818NUsZdBWBaR/OukXrNLfkQ79Iy\nZohZbvabO/X+MVT3rriAoKc8oE2Uws6DF+60PV7/WIPjNvXySdqspImSN78mflxD\nqwLqRBYkA3I75qppLGG9rp7UCdRjxMl8ZDBld+7yvHVgt1cVzJx9xnyGCC23Uaic\nMDSXYrB4I4WHXPGjxhZuCuPBLTdOLU8YRvMYdEvYebWHMpvwGCF6bAx3JBpIeOQ1\nwDB5y0USicV3YgYGmi+NZfhA4URSh77Yd6uuJOJENRaNVTzk\n-----END CERTIFICATE-----\n";
|
||||
/**
|
||||
* Google Hardware Attestation Root 2
|
||||
*
|
||||
* Downloaded from https://developer.android.com/training/articles/security-key-attestation#root_certificate
|
||||
* (second entry)
|
||||
*
|
||||
* Valid until 2034-11-18 @ 12:37 PST
|
||||
*
|
||||
* SHA256 Fingerprint
|
||||
* 1E:F1:A0:4B:8B:A5:8A:B9:45:89:AC:49:8C:89:82:A7:83:F2:4E:A7:30:7E:01:59:A0:C3:A7:3B:37:7D:87:CC
|
||||
*/
|
||||
export declare const Google_Hardware_Attestation_Root_2 = "-----BEGIN CERTIFICATE-----\nMIIFHDCCAwSgAwIBAgIJANUP8luj8tazMA0GCSqGSIb3DQEBCwUAMBsxGTAXBgNV\nBAUTEGY5MjAwOWU4NTNiNmIwNDUwHhcNMTkxMTIyMjAzNzU4WhcNMzQxMTE4MjAz\nNzU4WjAbMRkwFwYDVQQFExBmOTIwMDllODUzYjZiMDQ1MIICIjANBgkqhkiG9w0B\nAQEFAAOCAg8AMIICCgKCAgEAr7bHgiuxpwHsK7Qui8xUFmOr75gvMsd/dTEDDJdS\nSxtf6An7xyqpRR90PL2abxM1dEqlXnf2tqw1Ne4Xwl5jlRfdnJLmN0pTy/4lj4/7\ntv0Sk3iiKkypnEUtR6WfMgH0QZfKHM1+di+y9TFRtv6y//0rb+T+W8a9nsNL/ggj\nnar86461qO0rOs2cXjp3kOG1FEJ5MVmFmBGtnrKpa73XpXyTqRxB/M0n1n/W9nGq\nC4FSYa04T6N5RIZGBN2z2MT5IKGbFlbC8UrW0DxW7AYImQQcHtGl/m00QLVWutHQ\noVJYnFPlXTcHYvASLu+RhhsbDmxMgJJ0mcDpvsC4PjvB+TxywElgS70vE0XmLD+O\nJtvsBslHZvPBKCOdT0MS+tgSOIfga+z1Z1g7+DVagf7quvmag8jfPioyKvxnK/Eg\nsTUVi2ghzq8wm27ud/mIM7AY2qEORR8Go3TVB4HzWQgpZrt3i5MIlCaY504LzSRi\nigHCzAPlHws+W0rB5N+er5/2pJKnfBSDiCiFAVtCLOZ7gLiMm0jhO2B6tUXHI/+M\nRPjy02i59lINMRRev56GKtcd9qO/0kUJWdZTdA2XoS82ixPvZtXQpUpuL12ab+9E\naDK8Z4RHJYYfCT3Q5vNAXaiWQ+8PTWm2QgBR/bkwSWc+NpUFgNPN9PvQi8WEg5Um\nAGMCAwEAAaNjMGEwHQYDVR0OBBYEFDZh4QB8iAUJUYtEbEf/GkzJ6k8SMB8GA1Ud\nIwQYMBaAFDZh4QB8iAUJUYtEbEf/GkzJ6k8SMA8GA1UdEwEB/wQFMAMBAf8wDgYD\nVR0PAQH/BAQDAgIEMA0GCSqGSIb3DQEBCwUAA4ICAQBOMaBc8oumXb2voc7XCWnu\nXKhBBK3e2KMGz39t7lA3XXRe2ZLLAkLM5y3J7tURkf5a1SutfdOyXAmeE6SRo83U\nh6WszodmMkxK5GM4JGrnt4pBisu5igXEydaW7qq2CdC6DOGjG+mEkN8/TA6p3cno\nL/sPyz6evdjLlSeJ8rFBH6xWyIZCbrcpYEJzXaUOEaxxXxgYz5/cTiVKN2M1G2ok\nQBUIYSY6bjEL4aUN5cfo7ogP3UvliEo3Eo0YgwuzR2v0KR6C1cZqZJSTnghIC/vA\nD32KdNQ+c3N+vl2OTsUVMC1GiWkngNx1OO1+kXW+YTnnTUOtOIswUP/Vqd5SYgAI\nmMAfY8U9/iIgkQj6T2W6FsScy94IN9fFhE1UtzmLoBIuUFsVXJMTz+Jucth+IqoW\nFua9v1R93/k98p41pjtFX+H8DslVgfP097vju4KDlqN64xV1grw3ZLl4CiOe/A91\noeLm2UHOq6wn3esB4r2EIQKb6jTVGu5sYCcdWpXr0AUVqcABPdgL+H7qJguBw09o\njm6xNIrw2OocrDKsudk/okr/AwqEyPKw9WnMlQgLIKw1rODG2NvU9oR3GVGdMkUB\nZutL8VuFkERQGt6vQ2OCw0sV47VMkuYbacK/xyZFiRcrPJPb41zgbQj9XAEyLKCH\nex0SdDrx+tWUDqG8At2JHA==\n-----END CERTIFICATE-----\n";
|
||||
/**
|
||||
* Google Hardware Attestation Root 3
|
||||
*
|
||||
* Downloaded from https://developer.android.com/training/articles/security-key-attestation#root_certificate
|
||||
* (third entry)
|
||||
*
|
||||
* Valid until 2036-11-13 @ 15:10 PST
|
||||
*
|
||||
* SHA256 Fingerprint
|
||||
* AB:66:41:17:8A:36:E1:79:AA:0C:1C:DD:DF:9A:16:EB:45:FA:20:94:3E:2B:8C:D7:C7:C0:5C:26:CF:8B:48:7A
|
||||
*/
|
||||
export declare const Google_Hardware_Attestation_Root_3 = "\n-----BEGIN CERTIFICATE-----\nMIIFHDCCAwSgAwIBAgIJAMNrfES5rhgxMA0GCSqGSIb3DQEBCwUAMBsxGTAXBgNV\nBAUTEGY5MjAwOWU4NTNiNmIwNDUwHhcNMjExMTE3MjMxMDQyWhcNMzYxMTEzMjMx\nMDQyWjAbMRkwFwYDVQQFExBmOTIwMDllODUzYjZiMDQ1MIICIjANBgkqhkiG9w0B\nAQEFAAOCAg8AMIICCgKCAgEAr7bHgiuxpwHsK7Qui8xUFmOr75gvMsd/dTEDDJdS\nSxtf6An7xyqpRR90PL2abxM1dEqlXnf2tqw1Ne4Xwl5jlRfdnJLmN0pTy/4lj4/7\ntv0Sk3iiKkypnEUtR6WfMgH0QZfKHM1+di+y9TFRtv6y//0rb+T+W8a9nsNL/ggj\nnar86461qO0rOs2cXjp3kOG1FEJ5MVmFmBGtnrKpa73XpXyTqRxB/M0n1n/W9nGq\nC4FSYa04T6N5RIZGBN2z2MT5IKGbFlbC8UrW0DxW7AYImQQcHtGl/m00QLVWutHQ\noVJYnFPlXTcHYvASLu+RhhsbDmxMgJJ0mcDpvsC4PjvB+TxywElgS70vE0XmLD+O\nJtvsBslHZvPBKCOdT0MS+tgSOIfga+z1Z1g7+DVagf7quvmag8jfPioyKvxnK/Eg\nsTUVi2ghzq8wm27ud/mIM7AY2qEORR8Go3TVB4HzWQgpZrt3i5MIlCaY504LzSRi\nigHCzAPlHws+W0rB5N+er5/2pJKnfBSDiCiFAVtCLOZ7gLiMm0jhO2B6tUXHI/+M\nRPjy02i59lINMRRev56GKtcd9qO/0kUJWdZTdA2XoS82ixPvZtXQpUpuL12ab+9E\naDK8Z4RHJYYfCT3Q5vNAXaiWQ+8PTWm2QgBR/bkwSWc+NpUFgNPN9PvQi8WEg5Um\nAGMCAwEAAaNjMGEwHQYDVR0OBBYEFDZh4QB8iAUJUYtEbEf/GkzJ6k8SMB8GA1Ud\nIwQYMBaAFDZh4QB8iAUJUYtEbEf/GkzJ6k8SMA8GA1UdEwEB/wQFMAMBAf8wDgYD\nVR0PAQH/BAQDAgIEMA0GCSqGSIb3DQEBCwUAA4ICAQBTNNZe5cuf8oiq+jV0itTG\nzWVhSTjOBEk2FQvh11J3o3lna0o7rd8RFHnN00q4hi6TapFhh4qaw/iG6Xg+xOan\n63niLWIC5GOPFgPeYXM9+nBb3zZzC8ABypYuCusWCmt6Tn3+Pjbz3MTVhRGXuT/T\nQH4KGFY4PhvzAyXwdjTOCXID+aHud4RLcSySr0Fq/L+R8TWalvM1wJJPhyRjqRCJ\nerGtfBagiALzvhnmY7U1qFcS0NCnKjoO7oFedKdWlZz0YAfu3aGCJd4KHT0MsGiL\nZez9WP81xYSrKMNEsDK+zK5fVzw6jA7cxmpXcARTnmAuGUeI7VVDhDzKeVOctf3a\n0qQLwC+d0+xrETZ4r2fRGNw2YEs2W8Qj6oDcfPvq9JySe7pJ6wcHnl5EZ0lwc4xH\n7Y4Dx9RA1JlfooLMw3tOdJZH0enxPXaydfAD3YifeZpFaUzicHeLzVJLt9dvGB0b\nHQLE4+EqKFgOZv2EoP686DQqbVS1u+9k0p2xbMA105TBIk7npraa8VM0fnrRKi7w\nlZKwdH+aNAyhbXRW9xsnODJ+g8eF452zvbiKKngEKirK5LGieoXBX7tZ9D1GNBH2\nOb3bKOwwIWdEFle/YF/h6zWgdeoaNGDqVBrLr2+0DtWoiB1aDEjLWl9FmyIUyUm7\nmD/vFDkzF+wm7cyWpQpCVQ==\n-----END CERTIFICATE-----\n";
|
||||
/**
|
||||
* Google Hardware Attestation Root 4
|
||||
*
|
||||
* Downloaded from https://developer.android.com/training/articles/security-key-attestation#root_certificate
|
||||
* (fourth entry)
|
||||
*
|
||||
* Valid until 2042-03-15 @ 11:07 PDT
|
||||
*
|
||||
* SHA256 Fingerprint
|
||||
* CE:DB:1C:B6:DC:89:6A:E5:EC:79:73:48:BC:E9:28:67:53:C2:B3:8E:E7:1C:E0:FB:E3:4A:9A:12:48:80:0D:FC
|
||||
*/
|
||||
export declare const Google_Hardware_Attestation_Root_4 = "\n-----BEGIN CERTIFICATE-----\nMIIFHDCCAwSgAwIBAgIJAPHBcqaZ6vUdMA0GCSqGSIb3DQEBCwUAMBsxGTAXBgNV\nBAUTEGY5MjAwOWU4NTNiNmIwNDUwHhcNMjIwMzIwMTgwNzQ4WhcNNDIwMzE1MTgw\nNzQ4WjAbMRkwFwYDVQQFExBmOTIwMDllODUzYjZiMDQ1MIICIjANBgkqhkiG9w0B\nAQEFAAOCAg8AMIICCgKCAgEAr7bHgiuxpwHsK7Qui8xUFmOr75gvMsd/dTEDDJdS\nSxtf6An7xyqpRR90PL2abxM1dEqlXnf2tqw1Ne4Xwl5jlRfdnJLmN0pTy/4lj4/7\ntv0Sk3iiKkypnEUtR6WfMgH0QZfKHM1+di+y9TFRtv6y//0rb+T+W8a9nsNL/ggj\nnar86461qO0rOs2cXjp3kOG1FEJ5MVmFmBGtnrKpa73XpXyTqRxB/M0n1n/W9nGq\nC4FSYa04T6N5RIZGBN2z2MT5IKGbFlbC8UrW0DxW7AYImQQcHtGl/m00QLVWutHQ\noVJYnFPlXTcHYvASLu+RhhsbDmxMgJJ0mcDpvsC4PjvB+TxywElgS70vE0XmLD+O\nJtvsBslHZvPBKCOdT0MS+tgSOIfga+z1Z1g7+DVagf7quvmag8jfPioyKvxnK/Eg\nsTUVi2ghzq8wm27ud/mIM7AY2qEORR8Go3TVB4HzWQgpZrt3i5MIlCaY504LzSRi\nigHCzAPlHws+W0rB5N+er5/2pJKnfBSDiCiFAVtCLOZ7gLiMm0jhO2B6tUXHI/+M\nRPjy02i59lINMRRev56GKtcd9qO/0kUJWdZTdA2XoS82ixPvZtXQpUpuL12ab+9E\naDK8Z4RHJYYfCT3Q5vNAXaiWQ+8PTWm2QgBR/bkwSWc+NpUFgNPN9PvQi8WEg5Um\nAGMCAwEAAaNjMGEwHQYDVR0OBBYEFDZh4QB8iAUJUYtEbEf/GkzJ6k8SMB8GA1Ud\nIwQYMBaAFDZh4QB8iAUJUYtEbEf/GkzJ6k8SMA8GA1UdEwEB/wQFMAMBAf8wDgYD\nVR0PAQH/BAQDAgIEMA0GCSqGSIb3DQEBCwUAA4ICAQB8cMqTllHc8U+qCrOlg3H7\n174lmaCsbo/bJ0C17JEgMLb4kvrqsXZs01U3mB/qABg/1t5Pd5AORHARs1hhqGIC\nW/nKMav574f9rZN4PC2ZlufGXb7sIdJpGiO9ctRhiLuYuly10JccUZGEHpHSYM2G\ntkgYbZba6lsCPYAAP83cyDV+1aOkTf1RCp/lM0PKvmxYN10RYsK631jrleGdcdkx\noSK//mSQbgcWnmAEZrzHoF1/0gso1HZgIn0YLzVhLSA/iXCX4QT2h3J5z3znluKG\n1nv8NQdxei2DIIhASWfu804CA96cQKTTlaae2fweqXjdN1/v2nqOhngNyz1361mF\nmr4XmaKH/ItTwOe72NI9ZcwS1lVaCvsIkTDCEXdm9rCNPAY10iTunIHFXRh+7KPz\nlHGewCq/8TOohBRn0/NNfh7uRslOSZ/xKbN9tMBtw37Z8d2vvnXq/YWdsm1+JLVw\nn6yYD/yacNJBlwpddla8eaVMjsF6nBnIgQOf9zKSe06nSTqvgwUHosgOECZJZ1Eu\nzbH4yswbt02tKtKEFhx+v+OTge/06V+jGsqTWLsfrOCNLuA8H++z+pUENmpqnnHo\nvaI47gC+TNpkgYGkkBT6B/m/U01BuOBBTzhIlMEZq9qkDWuM2cA5kW5V3FJUcfHn\nw1IdYIg2Wxg7yHcQZemFQg==\n-----END CERTIFICATE-----\n";
|
||||
//# sourceMappingURL=android-key.d.ts.map
|
||||
1
api.hyungi.net/node_modules/@simplewebauthn/server/script/services/defaultRootCerts/android-key.d.ts.map
generated
vendored
Normal file
1
api.hyungi.net/node_modules/@simplewebauthn/server/script/services/defaultRootCerts/android-key.d.ts.map
generated
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"android-key.d.ts","sourceRoot":"","sources":["../../../src/services/defaultRootCerts/android-key.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,eAAO,MAAM,kCAAkC,u6DA+B9C,CAAC;AAEF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,kCAAkC,60DA8B9C,CAAC;AAEF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,kCAAkC,+0DA+B9C,CAAC;AAEF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,kCAAkC,+0DA+B9C,CAAC"}
|
||||
174
api.hyungi.net/node_modules/@simplewebauthn/server/script/services/defaultRootCerts/android-key.js
generated
vendored
Normal file
174
api.hyungi.net/node_modules/@simplewebauthn/server/script/services/defaultRootCerts/android-key.js
generated
vendored
Normal file
@@ -0,0 +1,174 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.Google_Hardware_Attestation_Root_4 = exports.Google_Hardware_Attestation_Root_3 = exports.Google_Hardware_Attestation_Root_2 = exports.Google_Hardware_Attestation_Root_1 = void 0;
|
||||
/**
|
||||
* Google Hardware Attestation Root 1
|
||||
*
|
||||
* Downloaded from https://developer.android.com/training/articles/security-key-attestation#root_certificate
|
||||
* (first entry)
|
||||
*
|
||||
* Valid until 2026-05-24 @ 09:28 PST
|
||||
*
|
||||
* SHA256 Fingerprint
|
||||
* C1:98:4A:3E:F4:5C:1E:2A:91:85:51:DE:10:60:3C:86:F7:05:1B:22:49:C4:89:1C:AE:32:30:EA:BD:0C:97:D5
|
||||
*/
|
||||
exports.Google_Hardware_Attestation_Root_1 = `-----BEGIN CERTIFICATE-----
|
||||
MIIFYDCCA0igAwIBAgIJAOj6GWMU0voYMA0GCSqGSIb3DQEBCwUAMBsxGTAXBgNV
|
||||
BAUTEGY5MjAwOWU4NTNiNmIwNDUwHhcNMTYwNTI2MTYyODUyWhcNMjYwNTI0MTYy
|
||||
ODUyWjAbMRkwFwYDVQQFExBmOTIwMDllODUzYjZiMDQ1MIICIjANBgkqhkiG9w0B
|
||||
AQEFAAOCAg8AMIICCgKCAgEAr7bHgiuxpwHsK7Qui8xUFmOr75gvMsd/dTEDDJdS
|
||||
Sxtf6An7xyqpRR90PL2abxM1dEqlXnf2tqw1Ne4Xwl5jlRfdnJLmN0pTy/4lj4/7
|
||||
tv0Sk3iiKkypnEUtR6WfMgH0QZfKHM1+di+y9TFRtv6y//0rb+T+W8a9nsNL/ggj
|
||||
nar86461qO0rOs2cXjp3kOG1FEJ5MVmFmBGtnrKpa73XpXyTqRxB/M0n1n/W9nGq
|
||||
C4FSYa04T6N5RIZGBN2z2MT5IKGbFlbC8UrW0DxW7AYImQQcHtGl/m00QLVWutHQ
|
||||
oVJYnFPlXTcHYvASLu+RhhsbDmxMgJJ0mcDpvsC4PjvB+TxywElgS70vE0XmLD+O
|
||||
JtvsBslHZvPBKCOdT0MS+tgSOIfga+z1Z1g7+DVagf7quvmag8jfPioyKvxnK/Eg
|
||||
sTUVi2ghzq8wm27ud/mIM7AY2qEORR8Go3TVB4HzWQgpZrt3i5MIlCaY504LzSRi
|
||||
igHCzAPlHws+W0rB5N+er5/2pJKnfBSDiCiFAVtCLOZ7gLiMm0jhO2B6tUXHI/+M
|
||||
RPjy02i59lINMRRev56GKtcd9qO/0kUJWdZTdA2XoS82ixPvZtXQpUpuL12ab+9E
|
||||
aDK8Z4RHJYYfCT3Q5vNAXaiWQ+8PTWm2QgBR/bkwSWc+NpUFgNPN9PvQi8WEg5Um
|
||||
AGMCAwEAAaOBpjCBozAdBgNVHQ4EFgQUNmHhAHyIBQlRi0RsR/8aTMnqTxIwHwYD
|
||||
VR0jBBgwFoAUNmHhAHyIBQlRi0RsR/8aTMnqTxIwDwYDVR0TAQH/BAUwAwEB/zAO
|
||||
BgNVHQ8BAf8EBAMCAYYwQAYDVR0fBDkwNzA1oDOgMYYvaHR0cHM6Ly9hbmRyb2lk
|
||||
Lmdvb2dsZWFwaXMuY29tL2F0dGVzdGF0aW9uL2NybC8wDQYJKoZIhvcNAQELBQAD
|
||||
ggIBACDIw41L3KlXG0aMiS//cqrG+EShHUGo8HNsw30W1kJtjn6UBwRM6jnmiwfB
|
||||
Pb8VA91chb2vssAtX2zbTvqBJ9+LBPGCdw/E53Rbf86qhxKaiAHOjpvAy5Y3m00m
|
||||
qC0w/Zwvju1twb4vhLaJ5NkUJYsUS7rmJKHHBnETLi8GFqiEsqTWpG/6ibYCv7rY
|
||||
DBJDcR9W62BW9jfIoBQcxUCUJouMPH25lLNcDc1ssqvC2v7iUgI9LeoM1sNovqPm
|
||||
QUiG9rHli1vXxzCyaMTjwftkJLkf6724DFhuKug2jITV0QkXvaJWF4nUaHOTNA4u
|
||||
JU9WDvZLI1j83A+/xnAJUucIv/zGJ1AMH2boHqF8CY16LpsYgBt6tKxxWH00XcyD
|
||||
CdW2KlBCeqbQPcsFmWyWugxdcekhYsAWyoSf818NUsZdBWBaR/OukXrNLfkQ79Iy
|
||||
ZohZbvabO/X+MVT3rriAoKc8oE2Uws6DF+60PV7/WIPjNvXySdqspImSN78mflxD
|
||||
qwLqRBYkA3I75qppLGG9rp7UCdRjxMl8ZDBld+7yvHVgt1cVzJx9xnyGCC23Uaic
|
||||
MDSXYrB4I4WHXPGjxhZuCuPBLTdOLU8YRvMYdEvYebWHMpvwGCF6bAx3JBpIeOQ1
|
||||
wDB5y0USicV3YgYGmi+NZfhA4URSh77Yd6uuJOJENRaNVTzk
|
||||
-----END CERTIFICATE-----
|
||||
`;
|
||||
/**
|
||||
* Google Hardware Attestation Root 2
|
||||
*
|
||||
* Downloaded from https://developer.android.com/training/articles/security-key-attestation#root_certificate
|
||||
* (second entry)
|
||||
*
|
||||
* Valid until 2034-11-18 @ 12:37 PST
|
||||
*
|
||||
* SHA256 Fingerprint
|
||||
* 1E:F1:A0:4B:8B:A5:8A:B9:45:89:AC:49:8C:89:82:A7:83:F2:4E:A7:30:7E:01:59:A0:C3:A7:3B:37:7D:87:CC
|
||||
*/
|
||||
exports.Google_Hardware_Attestation_Root_2 = `-----BEGIN CERTIFICATE-----
|
||||
MIIFHDCCAwSgAwIBAgIJANUP8luj8tazMA0GCSqGSIb3DQEBCwUAMBsxGTAXBgNV
|
||||
BAUTEGY5MjAwOWU4NTNiNmIwNDUwHhcNMTkxMTIyMjAzNzU4WhcNMzQxMTE4MjAz
|
||||
NzU4WjAbMRkwFwYDVQQFExBmOTIwMDllODUzYjZiMDQ1MIICIjANBgkqhkiG9w0B
|
||||
AQEFAAOCAg8AMIICCgKCAgEAr7bHgiuxpwHsK7Qui8xUFmOr75gvMsd/dTEDDJdS
|
||||
Sxtf6An7xyqpRR90PL2abxM1dEqlXnf2tqw1Ne4Xwl5jlRfdnJLmN0pTy/4lj4/7
|
||||
tv0Sk3iiKkypnEUtR6WfMgH0QZfKHM1+di+y9TFRtv6y//0rb+T+W8a9nsNL/ggj
|
||||
nar86461qO0rOs2cXjp3kOG1FEJ5MVmFmBGtnrKpa73XpXyTqRxB/M0n1n/W9nGq
|
||||
C4FSYa04T6N5RIZGBN2z2MT5IKGbFlbC8UrW0DxW7AYImQQcHtGl/m00QLVWutHQ
|
||||
oVJYnFPlXTcHYvASLu+RhhsbDmxMgJJ0mcDpvsC4PjvB+TxywElgS70vE0XmLD+O
|
||||
JtvsBslHZvPBKCOdT0MS+tgSOIfga+z1Z1g7+DVagf7quvmag8jfPioyKvxnK/Eg
|
||||
sTUVi2ghzq8wm27ud/mIM7AY2qEORR8Go3TVB4HzWQgpZrt3i5MIlCaY504LzSRi
|
||||
igHCzAPlHws+W0rB5N+er5/2pJKnfBSDiCiFAVtCLOZ7gLiMm0jhO2B6tUXHI/+M
|
||||
RPjy02i59lINMRRev56GKtcd9qO/0kUJWdZTdA2XoS82ixPvZtXQpUpuL12ab+9E
|
||||
aDK8Z4RHJYYfCT3Q5vNAXaiWQ+8PTWm2QgBR/bkwSWc+NpUFgNPN9PvQi8WEg5Um
|
||||
AGMCAwEAAaNjMGEwHQYDVR0OBBYEFDZh4QB8iAUJUYtEbEf/GkzJ6k8SMB8GA1Ud
|
||||
IwQYMBaAFDZh4QB8iAUJUYtEbEf/GkzJ6k8SMA8GA1UdEwEB/wQFMAMBAf8wDgYD
|
||||
VR0PAQH/BAQDAgIEMA0GCSqGSIb3DQEBCwUAA4ICAQBOMaBc8oumXb2voc7XCWnu
|
||||
XKhBBK3e2KMGz39t7lA3XXRe2ZLLAkLM5y3J7tURkf5a1SutfdOyXAmeE6SRo83U
|
||||
h6WszodmMkxK5GM4JGrnt4pBisu5igXEydaW7qq2CdC6DOGjG+mEkN8/TA6p3cno
|
||||
L/sPyz6evdjLlSeJ8rFBH6xWyIZCbrcpYEJzXaUOEaxxXxgYz5/cTiVKN2M1G2ok
|
||||
QBUIYSY6bjEL4aUN5cfo7ogP3UvliEo3Eo0YgwuzR2v0KR6C1cZqZJSTnghIC/vA
|
||||
D32KdNQ+c3N+vl2OTsUVMC1GiWkngNx1OO1+kXW+YTnnTUOtOIswUP/Vqd5SYgAI
|
||||
mMAfY8U9/iIgkQj6T2W6FsScy94IN9fFhE1UtzmLoBIuUFsVXJMTz+Jucth+IqoW
|
||||
Fua9v1R93/k98p41pjtFX+H8DslVgfP097vju4KDlqN64xV1grw3ZLl4CiOe/A91
|
||||
oeLm2UHOq6wn3esB4r2EIQKb6jTVGu5sYCcdWpXr0AUVqcABPdgL+H7qJguBw09o
|
||||
jm6xNIrw2OocrDKsudk/okr/AwqEyPKw9WnMlQgLIKw1rODG2NvU9oR3GVGdMkUB
|
||||
ZutL8VuFkERQGt6vQ2OCw0sV47VMkuYbacK/xyZFiRcrPJPb41zgbQj9XAEyLKCH
|
||||
ex0SdDrx+tWUDqG8At2JHA==
|
||||
-----END CERTIFICATE-----
|
||||
`;
|
||||
/**
|
||||
* Google Hardware Attestation Root 3
|
||||
*
|
||||
* Downloaded from https://developer.android.com/training/articles/security-key-attestation#root_certificate
|
||||
* (third entry)
|
||||
*
|
||||
* Valid until 2036-11-13 @ 15:10 PST
|
||||
*
|
||||
* SHA256 Fingerprint
|
||||
* AB:66:41:17:8A:36:E1:79:AA:0C:1C:DD:DF:9A:16:EB:45:FA:20:94:3E:2B:8C:D7:C7:C0:5C:26:CF:8B:48:7A
|
||||
*/
|
||||
exports.Google_Hardware_Attestation_Root_3 = `
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIFHDCCAwSgAwIBAgIJAMNrfES5rhgxMA0GCSqGSIb3DQEBCwUAMBsxGTAXBgNV
|
||||
BAUTEGY5MjAwOWU4NTNiNmIwNDUwHhcNMjExMTE3MjMxMDQyWhcNMzYxMTEzMjMx
|
||||
MDQyWjAbMRkwFwYDVQQFExBmOTIwMDllODUzYjZiMDQ1MIICIjANBgkqhkiG9w0B
|
||||
AQEFAAOCAg8AMIICCgKCAgEAr7bHgiuxpwHsK7Qui8xUFmOr75gvMsd/dTEDDJdS
|
||||
Sxtf6An7xyqpRR90PL2abxM1dEqlXnf2tqw1Ne4Xwl5jlRfdnJLmN0pTy/4lj4/7
|
||||
tv0Sk3iiKkypnEUtR6WfMgH0QZfKHM1+di+y9TFRtv6y//0rb+T+W8a9nsNL/ggj
|
||||
nar86461qO0rOs2cXjp3kOG1FEJ5MVmFmBGtnrKpa73XpXyTqRxB/M0n1n/W9nGq
|
||||
C4FSYa04T6N5RIZGBN2z2MT5IKGbFlbC8UrW0DxW7AYImQQcHtGl/m00QLVWutHQ
|
||||
oVJYnFPlXTcHYvASLu+RhhsbDmxMgJJ0mcDpvsC4PjvB+TxywElgS70vE0XmLD+O
|
||||
JtvsBslHZvPBKCOdT0MS+tgSOIfga+z1Z1g7+DVagf7quvmag8jfPioyKvxnK/Eg
|
||||
sTUVi2ghzq8wm27ud/mIM7AY2qEORR8Go3TVB4HzWQgpZrt3i5MIlCaY504LzSRi
|
||||
igHCzAPlHws+W0rB5N+er5/2pJKnfBSDiCiFAVtCLOZ7gLiMm0jhO2B6tUXHI/+M
|
||||
RPjy02i59lINMRRev56GKtcd9qO/0kUJWdZTdA2XoS82ixPvZtXQpUpuL12ab+9E
|
||||
aDK8Z4RHJYYfCT3Q5vNAXaiWQ+8PTWm2QgBR/bkwSWc+NpUFgNPN9PvQi8WEg5Um
|
||||
AGMCAwEAAaNjMGEwHQYDVR0OBBYEFDZh4QB8iAUJUYtEbEf/GkzJ6k8SMB8GA1Ud
|
||||
IwQYMBaAFDZh4QB8iAUJUYtEbEf/GkzJ6k8SMA8GA1UdEwEB/wQFMAMBAf8wDgYD
|
||||
VR0PAQH/BAQDAgIEMA0GCSqGSIb3DQEBCwUAA4ICAQBTNNZe5cuf8oiq+jV0itTG
|
||||
zWVhSTjOBEk2FQvh11J3o3lna0o7rd8RFHnN00q4hi6TapFhh4qaw/iG6Xg+xOan
|
||||
63niLWIC5GOPFgPeYXM9+nBb3zZzC8ABypYuCusWCmt6Tn3+Pjbz3MTVhRGXuT/T
|
||||
QH4KGFY4PhvzAyXwdjTOCXID+aHud4RLcSySr0Fq/L+R8TWalvM1wJJPhyRjqRCJ
|
||||
erGtfBagiALzvhnmY7U1qFcS0NCnKjoO7oFedKdWlZz0YAfu3aGCJd4KHT0MsGiL
|
||||
Zez9WP81xYSrKMNEsDK+zK5fVzw6jA7cxmpXcARTnmAuGUeI7VVDhDzKeVOctf3a
|
||||
0qQLwC+d0+xrETZ4r2fRGNw2YEs2W8Qj6oDcfPvq9JySe7pJ6wcHnl5EZ0lwc4xH
|
||||
7Y4Dx9RA1JlfooLMw3tOdJZH0enxPXaydfAD3YifeZpFaUzicHeLzVJLt9dvGB0b
|
||||
HQLE4+EqKFgOZv2EoP686DQqbVS1u+9k0p2xbMA105TBIk7npraa8VM0fnrRKi7w
|
||||
lZKwdH+aNAyhbXRW9xsnODJ+g8eF452zvbiKKngEKirK5LGieoXBX7tZ9D1GNBH2
|
||||
Ob3bKOwwIWdEFle/YF/h6zWgdeoaNGDqVBrLr2+0DtWoiB1aDEjLWl9FmyIUyUm7
|
||||
mD/vFDkzF+wm7cyWpQpCVQ==
|
||||
-----END CERTIFICATE-----
|
||||
`;
|
||||
/**
|
||||
* Google Hardware Attestation Root 4
|
||||
*
|
||||
* Downloaded from https://developer.android.com/training/articles/security-key-attestation#root_certificate
|
||||
* (fourth entry)
|
||||
*
|
||||
* Valid until 2042-03-15 @ 11:07 PDT
|
||||
*
|
||||
* SHA256 Fingerprint
|
||||
* CE:DB:1C:B6:DC:89:6A:E5:EC:79:73:48:BC:E9:28:67:53:C2:B3:8E:E7:1C:E0:FB:E3:4A:9A:12:48:80:0D:FC
|
||||
*/
|
||||
exports.Google_Hardware_Attestation_Root_4 = `
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIFHDCCAwSgAwIBAgIJAPHBcqaZ6vUdMA0GCSqGSIb3DQEBCwUAMBsxGTAXBgNV
|
||||
BAUTEGY5MjAwOWU4NTNiNmIwNDUwHhcNMjIwMzIwMTgwNzQ4WhcNNDIwMzE1MTgw
|
||||
NzQ4WjAbMRkwFwYDVQQFExBmOTIwMDllODUzYjZiMDQ1MIICIjANBgkqhkiG9w0B
|
||||
AQEFAAOCAg8AMIICCgKCAgEAr7bHgiuxpwHsK7Qui8xUFmOr75gvMsd/dTEDDJdS
|
||||
Sxtf6An7xyqpRR90PL2abxM1dEqlXnf2tqw1Ne4Xwl5jlRfdnJLmN0pTy/4lj4/7
|
||||
tv0Sk3iiKkypnEUtR6WfMgH0QZfKHM1+di+y9TFRtv6y//0rb+T+W8a9nsNL/ggj
|
||||
nar86461qO0rOs2cXjp3kOG1FEJ5MVmFmBGtnrKpa73XpXyTqRxB/M0n1n/W9nGq
|
||||
C4FSYa04T6N5RIZGBN2z2MT5IKGbFlbC8UrW0DxW7AYImQQcHtGl/m00QLVWutHQ
|
||||
oVJYnFPlXTcHYvASLu+RhhsbDmxMgJJ0mcDpvsC4PjvB+TxywElgS70vE0XmLD+O
|
||||
JtvsBslHZvPBKCOdT0MS+tgSOIfga+z1Z1g7+DVagf7quvmag8jfPioyKvxnK/Eg
|
||||
sTUVi2ghzq8wm27ud/mIM7AY2qEORR8Go3TVB4HzWQgpZrt3i5MIlCaY504LzSRi
|
||||
igHCzAPlHws+W0rB5N+er5/2pJKnfBSDiCiFAVtCLOZ7gLiMm0jhO2B6tUXHI/+M
|
||||
RPjy02i59lINMRRev56GKtcd9qO/0kUJWdZTdA2XoS82ixPvZtXQpUpuL12ab+9E
|
||||
aDK8Z4RHJYYfCT3Q5vNAXaiWQ+8PTWm2QgBR/bkwSWc+NpUFgNPN9PvQi8WEg5Um
|
||||
AGMCAwEAAaNjMGEwHQYDVR0OBBYEFDZh4QB8iAUJUYtEbEf/GkzJ6k8SMB8GA1Ud
|
||||
IwQYMBaAFDZh4QB8iAUJUYtEbEf/GkzJ6k8SMA8GA1UdEwEB/wQFMAMBAf8wDgYD
|
||||
VR0PAQH/BAQDAgIEMA0GCSqGSIb3DQEBCwUAA4ICAQB8cMqTllHc8U+qCrOlg3H7
|
||||
174lmaCsbo/bJ0C17JEgMLb4kvrqsXZs01U3mB/qABg/1t5Pd5AORHARs1hhqGIC
|
||||
W/nKMav574f9rZN4PC2ZlufGXb7sIdJpGiO9ctRhiLuYuly10JccUZGEHpHSYM2G
|
||||
tkgYbZba6lsCPYAAP83cyDV+1aOkTf1RCp/lM0PKvmxYN10RYsK631jrleGdcdkx
|
||||
oSK//mSQbgcWnmAEZrzHoF1/0gso1HZgIn0YLzVhLSA/iXCX4QT2h3J5z3znluKG
|
||||
1nv8NQdxei2DIIhASWfu804CA96cQKTTlaae2fweqXjdN1/v2nqOhngNyz1361mF
|
||||
mr4XmaKH/ItTwOe72NI9ZcwS1lVaCvsIkTDCEXdm9rCNPAY10iTunIHFXRh+7KPz
|
||||
lHGewCq/8TOohBRn0/NNfh7uRslOSZ/xKbN9tMBtw37Z8d2vvnXq/YWdsm1+JLVw
|
||||
n6yYD/yacNJBlwpddla8eaVMjsF6nBnIgQOf9zKSe06nSTqvgwUHosgOECZJZ1Eu
|
||||
zbH4yswbt02tKtKEFhx+v+OTge/06V+jGsqTWLsfrOCNLuA8H++z+pUENmpqnnHo
|
||||
vaI47gC+TNpkgYGkkBT6B/m/U01BuOBBTzhIlMEZq9qkDWuM2cA5kW5V3FJUcfHn
|
||||
w1IdYIg2Wxg7yHcQZemFQg==
|
||||
-----END CERTIFICATE-----
|
||||
`;
|
||||
12
api.hyungi.net/node_modules/@simplewebauthn/server/script/services/defaultRootCerts/android-safetynet.d.ts
generated
vendored
Normal file
12
api.hyungi.net/node_modules/@simplewebauthn/server/script/services/defaultRootCerts/android-safetynet.d.ts
generated
vendored
Normal file
@@ -0,0 +1,12 @@
|
||||
/**
|
||||
* GlobalSign Root CA
|
||||
*
|
||||
* Downloaded from https://pki.goog/roots.pem
|
||||
*
|
||||
* Valid until 2028-01-28 @ 04:00 PST
|
||||
*
|
||||
* SHA256 Fingerprint
|
||||
* EB:D4:10:40:E4:BB:3E:C7:42:C9:E3:81:D3:1E:F2:A4:1A:48:B6:68:5C:96:E7:CE:F3:C1:DF:6C:D4:33:1C:99
|
||||
*/
|
||||
export declare const GlobalSign_Root_CA = "-----BEGIN CERTIFICATE-----\nMIIDdTCCAl2gAwIBAgILBAAAAAABFUtaw5QwDQYJKoZIhvcNAQEFBQAwVzELMAkG\nA1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jv\nb3QgQ0ExGzAZBgNVBAMTEkdsb2JhbFNpZ24gUm9vdCBDQTAeFw05ODA5MDExMjAw\nMDBaFw0yODAxMjgxMjAwMDBaMFcxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9i\nYWxTaWduIG52LXNhMRAwDgYDVQQLEwdSb290IENBMRswGQYDVQQDExJHbG9iYWxT\naWduIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDaDuaZ\njc6j40+Kfvvxi4Mla+pIH/EqsLmVEQS98GPR4mdmzxzdzxtIK+6NiY6arymAZavp\nxy0Sy6scTHAHoT0KMM0VjU/43dSMUBUc71DuxC73/OlS8pF94G3VNTCOXkNz8kHp\n1Wrjsok6Vjk4bwY8iGlbKk3Fp1S4bInMm/k8yuX9ifUSPJJ4ltbcdG6TRGHRjcdG\nsnUOhugZitVtbNV4FpWi6cgKOOvyJBNPc1STE4U6G7weNLWLBYy5d4ux2x8gkasJ\nU26Qzns3dLlwR5EiUWMWea6xrkEmCMgZK9FGqkjWZCrXgzT/LCrBbBlDSgeF59N8\n9iFo7+ryUp9/k5DPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8E\nBTADAQH/MB0GA1UdDgQWBBRge2YaRQ2XyolQL30EzTSo//z9SzANBgkqhkiG9w0B\nAQUFAAOCAQEA1nPnfE920I2/7LqivjTFKDK1fPxsnCwrvQmeU79rXqoRSLblCKOz\nyj1hTdNGCbM+w6DjY1Ub8rrvrTnhQ7k4o+YviiY776BQVvnGCv04zcQLcFGUl5gE\n38NflNUVyRRBnMRddWQVDf9VMOyGj/8N7yy5Y0b2qvzfvGn9LhJIZJrglfCm7ymP\nAbEVtQwdpf5pLGkkeB6zpxxxYu7KyJesF12KwvhHhm4qxFYxldBniYUr+WymXUad\nDKqC5JlR3XC321Y9YeRq4VzW9v493kHMB65jUr9TU/Qr6cf9tveCX4XSQRjbgbME\nHMUfpIBvFSDJ3gyICh3WZlXi/EjJKSZp4A==\n-----END CERTIFICATE-----\n";
|
||||
//# sourceMappingURL=android-safetynet.d.ts.map
|
||||
1
api.hyungi.net/node_modules/@simplewebauthn/server/script/services/defaultRootCerts/android-safetynet.d.ts.map
generated
vendored
Normal file
1
api.hyungi.net/node_modules/@simplewebauthn/server/script/services/defaultRootCerts/android-safetynet.d.ts.map
generated
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"android-safetynet.d.ts","sourceRoot":"","sources":["../../../src/services/defaultRootCerts/android-safetynet.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,eAAO,MAAM,kBAAkB,uwCAqB9B,CAAC"}
|
||||
35
api.hyungi.net/node_modules/@simplewebauthn/server/script/services/defaultRootCerts/android-safetynet.js
generated
vendored
Normal file
35
api.hyungi.net/node_modules/@simplewebauthn/server/script/services/defaultRootCerts/android-safetynet.js
generated
vendored
Normal file
@@ -0,0 +1,35 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.GlobalSign_Root_CA = void 0;
|
||||
/**
|
||||
* GlobalSign Root CA
|
||||
*
|
||||
* Downloaded from https://pki.goog/roots.pem
|
||||
*
|
||||
* Valid until 2028-01-28 @ 04:00 PST
|
||||
*
|
||||
* SHA256 Fingerprint
|
||||
* EB:D4:10:40:E4:BB:3E:C7:42:C9:E3:81:D3:1E:F2:A4:1A:48:B6:68:5C:96:E7:CE:F3:C1:DF:6C:D4:33:1C:99
|
||||
*/
|
||||
exports.GlobalSign_Root_CA = `-----BEGIN CERTIFICATE-----
|
||||
MIIDdTCCAl2gAwIBAgILBAAAAAABFUtaw5QwDQYJKoZIhvcNAQEFBQAwVzELMAkG
|
||||
A1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jv
|
||||
b3QgQ0ExGzAZBgNVBAMTEkdsb2JhbFNpZ24gUm9vdCBDQTAeFw05ODA5MDExMjAw
|
||||
MDBaFw0yODAxMjgxMjAwMDBaMFcxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9i
|
||||
YWxTaWduIG52LXNhMRAwDgYDVQQLEwdSb290IENBMRswGQYDVQQDExJHbG9iYWxT
|
||||
aWduIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDaDuaZ
|
||||
jc6j40+Kfvvxi4Mla+pIH/EqsLmVEQS98GPR4mdmzxzdzxtIK+6NiY6arymAZavp
|
||||
xy0Sy6scTHAHoT0KMM0VjU/43dSMUBUc71DuxC73/OlS8pF94G3VNTCOXkNz8kHp
|
||||
1Wrjsok6Vjk4bwY8iGlbKk3Fp1S4bInMm/k8yuX9ifUSPJJ4ltbcdG6TRGHRjcdG
|
||||
snUOhugZitVtbNV4FpWi6cgKOOvyJBNPc1STE4U6G7weNLWLBYy5d4ux2x8gkasJ
|
||||
U26Qzns3dLlwR5EiUWMWea6xrkEmCMgZK9FGqkjWZCrXgzT/LCrBbBlDSgeF59N8
|
||||
9iFo7+ryUp9/k5DPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8E
|
||||
BTADAQH/MB0GA1UdDgQWBBRge2YaRQ2XyolQL30EzTSo//z9SzANBgkqhkiG9w0B
|
||||
AQUFAAOCAQEA1nPnfE920I2/7LqivjTFKDK1fPxsnCwrvQmeU79rXqoRSLblCKOz
|
||||
yj1hTdNGCbM+w6DjY1Ub8rrvrTnhQ7k4o+YviiY776BQVvnGCv04zcQLcFGUl5gE
|
||||
38NflNUVyRRBnMRddWQVDf9VMOyGj/8N7yy5Y0b2qvzfvGn9LhJIZJrglfCm7ymP
|
||||
AbEVtQwdpf5pLGkkeB6zpxxxYu7KyJesF12KwvhHhm4qxFYxldBniYUr+WymXUad
|
||||
DKqC5JlR3XC321Y9YeRq4VzW9v493kHMB65jUr9TU/Qr6cf9tveCX4XSQRjbgbME
|
||||
HMUfpIBvFSDJ3gyICh3WZlXi/EjJKSZp4A==
|
||||
-----END CERTIFICATE-----
|
||||
`;
|
||||
12
api.hyungi.net/node_modules/@simplewebauthn/server/script/services/defaultRootCerts/apple.d.ts
generated
vendored
Normal file
12
api.hyungi.net/node_modules/@simplewebauthn/server/script/services/defaultRootCerts/apple.d.ts
generated
vendored
Normal file
@@ -0,0 +1,12 @@
|
||||
/**
|
||||
* Apple WebAuthn Root CA
|
||||
*
|
||||
* Downloaded from https://www.apple.com/certificateauthority/Apple_WebAuthn_Root_CA.pem
|
||||
*
|
||||
* Valid until 2045-03-14 @ 17:00 PST
|
||||
*
|
||||
* SHA256 Fingerprint
|
||||
* 09:15:DD:5C:07:A2:8D:B5:49:D1:F6:77:BB:5A:75:D4:BF:BE:95:61:A7:73:42:43:27:76:2E:9E:02:F9:BB:29
|
||||
*/
|
||||
export declare const Apple_WebAuthn_Root_CA = "-----BEGIN CERTIFICATE-----\nMIICEjCCAZmgAwIBAgIQaB0BbHo84wIlpQGUKEdXcTAKBggqhkjOPQQDAzBLMR8w\nHQYDVQQDDBZBcHBsZSBXZWJBdXRobiBSb290IENBMRMwEQYDVQQKDApBcHBsZSBJ\nbmMuMRMwEQYDVQQIDApDYWxpZm9ybmlhMB4XDTIwMDMxODE4MjEzMloXDTQ1MDMx\nNTAwMDAwMFowSzEfMB0GA1UEAwwWQXBwbGUgV2ViQXV0aG4gUm9vdCBDQTETMBEG\nA1UECgwKQXBwbGUgSW5jLjETMBEGA1UECAwKQ2FsaWZvcm5pYTB2MBAGByqGSM49\nAgEGBSuBBAAiA2IABCJCQ2pTVhzjl4Wo6IhHtMSAzO2cv+H9DQKev3//fG59G11k\nxu9eI0/7o6V5uShBpe1u6l6mS19S1FEh6yGljnZAJ+2GNP1mi/YK2kSXIuTHjxA/\npcoRf7XkOtO4o1qlcaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUJtdk\n2cV4wlpn0afeaxLQG2PxxtcwDgYDVR0PAQH/BAQDAgEGMAoGCCqGSM49BAMDA2cA\nMGQCMFrZ+9DsJ1PW9hfNdBywZDsWDbWFp28it1d/5w2RPkRX3Bbn/UbDTNLx7Jr3\njAGGiQIwHFj+dJZYUJR786osByBelJYsVZd2GbHQu209b5RCmGQ21gpSAk9QZW4B\n1bWeT0vT\n-----END CERTIFICATE-----\n";
|
||||
//# sourceMappingURL=apple.d.ts.map
|
||||
1
api.hyungi.net/node_modules/@simplewebauthn/server/script/services/defaultRootCerts/apple.d.ts.map
generated
vendored
Normal file
1
api.hyungi.net/node_modules/@simplewebauthn/server/script/services/defaultRootCerts/apple.d.ts.map
generated
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"apple.d.ts","sourceRoot":"","sources":["../../../src/services/defaultRootCerts/apple.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,eAAO,MAAM,sBAAsB,6xBAclC,CAAC"}
|
||||
28
api.hyungi.net/node_modules/@simplewebauthn/server/script/services/defaultRootCerts/apple.js
generated
vendored
Normal file
28
api.hyungi.net/node_modules/@simplewebauthn/server/script/services/defaultRootCerts/apple.js
generated
vendored
Normal file
@@ -0,0 +1,28 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.Apple_WebAuthn_Root_CA = void 0;
|
||||
/**
|
||||
* Apple WebAuthn Root CA
|
||||
*
|
||||
* Downloaded from https://www.apple.com/certificateauthority/Apple_WebAuthn_Root_CA.pem
|
||||
*
|
||||
* Valid until 2045-03-14 @ 17:00 PST
|
||||
*
|
||||
* SHA256 Fingerprint
|
||||
* 09:15:DD:5C:07:A2:8D:B5:49:D1:F6:77:BB:5A:75:D4:BF:BE:95:61:A7:73:42:43:27:76:2E:9E:02:F9:BB:29
|
||||
*/
|
||||
exports.Apple_WebAuthn_Root_CA = `-----BEGIN CERTIFICATE-----
|
||||
MIICEjCCAZmgAwIBAgIQaB0BbHo84wIlpQGUKEdXcTAKBggqhkjOPQQDAzBLMR8w
|
||||
HQYDVQQDDBZBcHBsZSBXZWJBdXRobiBSb290IENBMRMwEQYDVQQKDApBcHBsZSBJ
|
||||
bmMuMRMwEQYDVQQIDApDYWxpZm9ybmlhMB4XDTIwMDMxODE4MjEzMloXDTQ1MDMx
|
||||
NTAwMDAwMFowSzEfMB0GA1UEAwwWQXBwbGUgV2ViQXV0aG4gUm9vdCBDQTETMBEG
|
||||
A1UECgwKQXBwbGUgSW5jLjETMBEGA1UECAwKQ2FsaWZvcm5pYTB2MBAGByqGSM49
|
||||
AgEGBSuBBAAiA2IABCJCQ2pTVhzjl4Wo6IhHtMSAzO2cv+H9DQKev3//fG59G11k
|
||||
xu9eI0/7o6V5uShBpe1u6l6mS19S1FEh6yGljnZAJ+2GNP1mi/YK2kSXIuTHjxA/
|
||||
pcoRf7XkOtO4o1qlcaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUJtdk
|
||||
2cV4wlpn0afeaxLQG2PxxtcwDgYDVR0PAQH/BAQDAgEGMAoGCCqGSM49BAMDA2cA
|
||||
MGQCMFrZ+9DsJ1PW9hfNdBywZDsWDbWFp28it1d/5w2RPkRX3Bbn/UbDTNLx7Jr3
|
||||
jAGGiQIwHFj+dJZYUJR786osByBelJYsVZd2GbHQu209b5RCmGQ21gpSAk9QZW4B
|
||||
1bWeT0vT
|
||||
-----END CERTIFICATE-----
|
||||
`;
|
||||
12
api.hyungi.net/node_modules/@simplewebauthn/server/script/services/defaultRootCerts/mds.d.ts
generated
vendored
Normal file
12
api.hyungi.net/node_modules/@simplewebauthn/server/script/services/defaultRootCerts/mds.d.ts
generated
vendored
Normal file
@@ -0,0 +1,12 @@
|
||||
/**
|
||||
* GlobalSign Root CA - R3
|
||||
*
|
||||
* Downloaded from https://valid.r3.roots.globalsign.com/
|
||||
*
|
||||
* Valid until 2029-03-18 @ 00:00 PST
|
||||
*
|
||||
* SHA256 Fingerprint
|
||||
* CB:B5:22:D7:B7:F1:27:AD:6A:01:13:86:5B:DF:1C:D4:10:2E:7D:07:59:AF:63:5A:7C:F4:72:0D:C9:63:C5:3B
|
||||
*/
|
||||
export declare const GlobalSign_Root_CA_R3 = "-----BEGIN CERTIFICATE-----\n MIIDXzCCAkegAwIBAgILBAAAAAABIVhTCKIwDQYJKoZIhvcNAQELBQAwTDEgMB4G\n A1UECxMXR2xvYmFsU2lnbiBSb290IENBIC0gUjMxEzARBgNVBAoTCkdsb2JhbFNp\n Z24xEzARBgNVBAMTCkdsb2JhbFNpZ24wHhcNMDkwMzE4MTAwMDAwWhcNMjkwMzE4\n MTAwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxTaWduIFJvb3QgQ0EgLSBSMzETMBEG\n A1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2lnbjCCASIwDQYJKoZI\n hvcNAQEBBQADggEPADCCAQoCggEBAMwldpB5BngiFvXAg7aEyiie/QV2EcWtiHL8\n RgJDx7KKnQRfJMsuS+FggkbhUqsMgUdwbN1k0ev1LKMPgj0MK66X17YUhhB5uzsT\n gHeMCOFJ0mpiLx9e+pZo34knlTifBtc+ycsmWQ1z3rDI6SYOgxXG71uL0gRgykmm\n KPZpO/bLyCiR5Z2KYVc3rHQU3HTgOu5yLy6c+9C7v/U9AOEGM+iCK65TpjoWc4zd\n QQ4gOsC0p6Hpsk+QLjJg6VfLuQSSaGjlOCZgdbKfd/+RFO+uIEn8rUAVSNECMWEZ\n XriX7613t2Saer9fwRPvm2L7DWzgVGkWqQPabumDk3F2xmmFghcCAwEAAaNCMEAw\n DgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFI/wS3+o\n LkUkrk1Q+mOai97i3Ru8MA0GCSqGSIb3DQEBCwUAA4IBAQBLQNvAUKr+yAzv95ZU\n RUm7lgAJQayzE4aGKAczymvmdLm6AC2upArT9fHxD4q/c2dKg8dEe3jgr25sbwMp\n jjM5RcOO5LlXbKr8EpbsU8Yt5CRsuZRj+9xTaGdWPoO4zzUhw8lo/s7awlOqzJCK\n 6fBdRoyV3XpYKBovHd7NADdBj+1EbddTKJd+82cEHhXXipa0095MJ6RMG3NzdvQX\n mcIfeg7jLQitChws/zyrVQ4PkX4268NXSb7hLi18YIvDQVETI53O9zJrlAGomecs\n Mx86OyXShkDOOyyGeMlhLxS67ttVb9+E7gUJTb0o2HLO02JQZR7rkpeDMdmztcpH\n WD9f\n -----END CERTIFICATE-----\n ";
|
||||
//# sourceMappingURL=mds.d.ts.map
|
||||
1
api.hyungi.net/node_modules/@simplewebauthn/server/script/services/defaultRootCerts/mds.d.ts.map
generated
vendored
Normal file
1
api.hyungi.net/node_modules/@simplewebauthn/server/script/services/defaultRootCerts/mds.d.ts.map
generated
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"mds.d.ts","sourceRoot":"","sources":["../../../src/services/defaultRootCerts/mds.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,eAAO,MAAM,qBAAqB,4vCAqBhC,CAAC"}
|
||||
35
api.hyungi.net/node_modules/@simplewebauthn/server/script/services/defaultRootCerts/mds.js
generated
vendored
Normal file
35
api.hyungi.net/node_modules/@simplewebauthn/server/script/services/defaultRootCerts/mds.js
generated
vendored
Normal file
@@ -0,0 +1,35 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.GlobalSign_Root_CA_R3 = void 0;
|
||||
/**
|
||||
* GlobalSign Root CA - R3
|
||||
*
|
||||
* Downloaded from https://valid.r3.roots.globalsign.com/
|
||||
*
|
||||
* Valid until 2029-03-18 @ 00:00 PST
|
||||
*
|
||||
* SHA256 Fingerprint
|
||||
* CB:B5:22:D7:B7:F1:27:AD:6A:01:13:86:5B:DF:1C:D4:10:2E:7D:07:59:AF:63:5A:7C:F4:72:0D:C9:63:C5:3B
|
||||
*/
|
||||
exports.GlobalSign_Root_CA_R3 = `-----BEGIN CERTIFICATE-----
|
||||
MIIDXzCCAkegAwIBAgILBAAAAAABIVhTCKIwDQYJKoZIhvcNAQELBQAwTDEgMB4G
|
||||
A1UECxMXR2xvYmFsU2lnbiBSb290IENBIC0gUjMxEzARBgNVBAoTCkdsb2JhbFNp
|
||||
Z24xEzARBgNVBAMTCkdsb2JhbFNpZ24wHhcNMDkwMzE4MTAwMDAwWhcNMjkwMzE4
|
||||
MTAwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxTaWduIFJvb3QgQ0EgLSBSMzETMBEG
|
||||
A1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2lnbjCCASIwDQYJKoZI
|
||||
hvcNAQEBBQADggEPADCCAQoCggEBAMwldpB5BngiFvXAg7aEyiie/QV2EcWtiHL8
|
||||
RgJDx7KKnQRfJMsuS+FggkbhUqsMgUdwbN1k0ev1LKMPgj0MK66X17YUhhB5uzsT
|
||||
gHeMCOFJ0mpiLx9e+pZo34knlTifBtc+ycsmWQ1z3rDI6SYOgxXG71uL0gRgykmm
|
||||
KPZpO/bLyCiR5Z2KYVc3rHQU3HTgOu5yLy6c+9C7v/U9AOEGM+iCK65TpjoWc4zd
|
||||
QQ4gOsC0p6Hpsk+QLjJg6VfLuQSSaGjlOCZgdbKfd/+RFO+uIEn8rUAVSNECMWEZ
|
||||
XriX7613t2Saer9fwRPvm2L7DWzgVGkWqQPabumDk3F2xmmFghcCAwEAAaNCMEAw
|
||||
DgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFI/wS3+o
|
||||
LkUkrk1Q+mOai97i3Ru8MA0GCSqGSIb3DQEBCwUAA4IBAQBLQNvAUKr+yAzv95ZU
|
||||
RUm7lgAJQayzE4aGKAczymvmdLm6AC2upArT9fHxD4q/c2dKg8dEe3jgr25sbwMp
|
||||
jjM5RcOO5LlXbKr8EpbsU8Yt5CRsuZRj+9xTaGdWPoO4zzUhw8lo/s7awlOqzJCK
|
||||
6fBdRoyV3XpYKBovHd7NADdBj+1EbddTKJd+82cEHhXXipa0095MJ6RMG3NzdvQX
|
||||
mcIfeg7jLQitChws/zyrVQ4PkX4268NXSb7hLi18YIvDQVETI53O9zJrlAGomecs
|
||||
Mx86OyXShkDOOyyGeMlhLxS67ttVb9+E7gUJTb0o2HLO02JQZR7rkpeDMdmztcpH
|
||||
WD9f
|
||||
-----END CERTIFICATE-----
|
||||
`;
|
||||
72
api.hyungi.net/node_modules/@simplewebauthn/server/script/services/metadataService.d.ts
generated
vendored
Normal file
72
api.hyungi.net/node_modules/@simplewebauthn/server/script/services/metadataService.d.ts
generated
vendored
Normal file
@@ -0,0 +1,72 @@
|
||||
import type { MetadataStatement } from '../metadata/mdsTypes.js';
|
||||
/**
|
||||
* Allow MetadataService to accommodate unregistered AAGUIDs (`"permissive"`), or only allow
|
||||
* registered AAGUIDs (`"strict"`). Currently primarily impacts how `getStatement()` operates
|
||||
*/
|
||||
export type VerificationMode = 'permissive' | 'strict';
|
||||
interface MetadataService {
|
||||
/**
|
||||
* Prepare the service to handle remote MDS servers and/or cache local metadata statements.
|
||||
*
|
||||
* **Options:**
|
||||
*
|
||||
* @param opts.mdsServers An array of URLs to FIDO Alliance Metadata Service
|
||||
* (version 3.0)-compatible servers. Defaults to the official FIDO MDS server
|
||||
* @param opts.statements An array of local metadata statements
|
||||
* @param opts.verificationMode How MetadataService will handle unregistered AAGUIDs. Defaults to
|
||||
* `"strict"` which throws errors during registration response verification when an
|
||||
* unregistered AAGUID is encountered. Set to `"permissive"` to allow registration by
|
||||
* authenticators with unregistered AAGUIDs
|
||||
*/
|
||||
initialize(opts?: {
|
||||
mdsServers?: string[];
|
||||
statements?: MetadataStatement[];
|
||||
verificationMode?: VerificationMode;
|
||||
}): Promise<void>;
|
||||
/**
|
||||
* Get a metadata statement for a given AAGUID.
|
||||
*
|
||||
* This method will coordinate updating the cache as per the `nextUpdate` property in the initial
|
||||
* BLOB download.
|
||||
*/
|
||||
getStatement(aaguid: string | Uint8Array): Promise<MetadataStatement | undefined>;
|
||||
}
|
||||
/**
|
||||
* An implementation of `MetadataService` that can download and parse BLOBs, and support on-demand
|
||||
* requesting and caching of individual metadata statements.
|
||||
*
|
||||
* https://fidoalliance.org/metadata/
|
||||
*/
|
||||
export declare class BaseMetadataService implements MetadataService {
|
||||
private mdsCache;
|
||||
private statementCache;
|
||||
private state;
|
||||
private verificationMode;
|
||||
initialize(opts?: {
|
||||
mdsServers?: string[];
|
||||
statements?: MetadataStatement[];
|
||||
verificationMode?: VerificationMode;
|
||||
}): Promise<void>;
|
||||
getStatement(aaguid: string | Uint8Array): Promise<MetadataStatement | undefined>;
|
||||
/**
|
||||
* Download and process the latest BLOB from MDS
|
||||
*/
|
||||
private downloadBlob;
|
||||
/**
|
||||
* A helper method to pause execution until the service is ready
|
||||
*/
|
||||
private pauseUntilReady;
|
||||
/**
|
||||
* Report service status on change
|
||||
*/
|
||||
private setState;
|
||||
}
|
||||
/**
|
||||
* A basic service for coordinating interactions with the FIDO Metadata Service. This includes BLOB
|
||||
* download and parsing, and on-demand requesting and caching of individual metadata statements.
|
||||
*
|
||||
* https://fidoalliance.org/metadata/
|
||||
*/
|
||||
export declare const MetadataService: MetadataService;
|
||||
export {};
|
||||
//# sourceMappingURL=metadataService.d.ts.map
|
||||
1
api.hyungi.net/node_modules/@simplewebauthn/server/script/services/metadataService.d.ts.map
generated
vendored
Normal file
1
api.hyungi.net/node_modules/@simplewebauthn/server/script/services/metadataService.d.ts.map
generated
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"metadataService.d.ts","sourceRoot":"","sources":["../../src/services/metadataService.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAIV,iBAAiB,EAClB,MAAM,yBAAyB,CAAC;AA6BjC;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GAAG,YAAY,GAAG,QAAQ,CAAC;AAIvD,UAAU,eAAe;IACvB;;;;;;;;;;;;OAYG;IACH,UAAU,CAAC,IAAI,CAAC,EAAE;QAChB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;QACtB,UAAU,CAAC,EAAE,iBAAiB,EAAE,CAAC;QACjC,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;KACrC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClB;;;;;OAKG;IACH,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,GAAG,OAAO,CAAC,iBAAiB,GAAG,SAAS,CAAC,CAAC;CACnF;AAED;;;;;GAKG;AACH,qBAAa,mBAAoB,YAAW,eAAe;IACzD,OAAO,CAAC,QAAQ,CAAoC;IACpD,OAAO,CAAC,cAAc,CAA6C;IACnE,OAAO,CAAC,KAAK,CAAyC;IACtD,OAAO,CAAC,gBAAgB,CAA8B;IAEhD,UAAU,CACd,IAAI,GAAE;QACJ,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;QACtB,UAAU,CAAC,EAAE,iBAAiB,EAAE,CAAC;QACjC,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;KAChC,GACL,OAAO,CAAC,IAAI,CAAC;IA+DV,YAAY,CAChB,MAAM,EAAE,MAAM,GAAG,UAAU,GAC1B,OAAO,CAAC,iBAAiB,GAAG,SAAS,CAAC;IA6DzC;;OAEG;YACW,YAAY;IAoE1B;;OAEG;IACH,OAAO,CAAC,eAAe;IAgCvB;;OAEG;IACH,OAAO,CAAC,QAAQ;CAWjB;AAED;;;;;GAKG;AACH,eAAO,MAAM,eAAe,EAAE,eAA2C,CAAC"}
|
||||
263
api.hyungi.net/node_modules/@simplewebauthn/server/script/services/metadataService.js
generated
vendored
Normal file
263
api.hyungi.net/node_modules/@simplewebauthn/server/script/services/metadataService.js
generated
vendored
Normal file
@@ -0,0 +1,263 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.MetadataService = exports.BaseMetadataService = void 0;
|
||||
const validateCertificatePath_js_1 = require("../helpers/validateCertificatePath.js");
|
||||
const convertCertBufferToPEM_js_1 = require("../helpers/convertCertBufferToPEM.js");
|
||||
const convertAAGUIDToString_js_1 = require("../helpers/convertAAGUIDToString.js");
|
||||
const settingsService_js_1 = require("./settingsService.js");
|
||||
const logging_js_1 = require("../helpers/logging.js");
|
||||
const convertPEMToBytes_js_1 = require("../helpers/convertPEMToBytes.js");
|
||||
const fetch_js_1 = require("../helpers/fetch.js");
|
||||
const parseJWT_js_1 = require("../metadata/parseJWT.js");
|
||||
const verifyJWT_js_1 = require("../metadata/verifyJWT.js");
|
||||
const defaultURLMDS = 'https://mds.fidoalliance.org/'; // v3
|
||||
var SERVICE_STATE;
|
||||
(function (SERVICE_STATE) {
|
||||
SERVICE_STATE[SERVICE_STATE["DISABLED"] = 0] = "DISABLED";
|
||||
SERVICE_STATE[SERVICE_STATE["REFRESHING"] = 1] = "REFRESHING";
|
||||
SERVICE_STATE[SERVICE_STATE["READY"] = 2] = "READY";
|
||||
})(SERVICE_STATE || (SERVICE_STATE = {}));
|
||||
const log = (0, logging_js_1.getLogger)('MetadataService');
|
||||
/**
|
||||
* An implementation of `MetadataService` that can download and parse BLOBs, and support on-demand
|
||||
* requesting and caching of individual metadata statements.
|
||||
*
|
||||
* https://fidoalliance.org/metadata/
|
||||
*/
|
||||
class BaseMetadataService {
|
||||
constructor() {
|
||||
Object.defineProperty(this, "mdsCache", {
|
||||
enumerable: true,
|
||||
configurable: true,
|
||||
writable: true,
|
||||
value: {}
|
||||
});
|
||||
Object.defineProperty(this, "statementCache", {
|
||||
enumerable: true,
|
||||
configurable: true,
|
||||
writable: true,
|
||||
value: {}
|
||||
});
|
||||
Object.defineProperty(this, "state", {
|
||||
enumerable: true,
|
||||
configurable: true,
|
||||
writable: true,
|
||||
value: SERVICE_STATE.DISABLED
|
||||
});
|
||||
Object.defineProperty(this, "verificationMode", {
|
||||
enumerable: true,
|
||||
configurable: true,
|
||||
writable: true,
|
||||
value: 'strict'
|
||||
});
|
||||
}
|
||||
async initialize(opts = {}) {
|
||||
const { mdsServers = [defaultURLMDS], statements, verificationMode } = opts;
|
||||
this.setState(SERVICE_STATE.REFRESHING);
|
||||
// If metadata statements are provided, load them into the cache first
|
||||
if (statements?.length) {
|
||||
let statementsAdded = 0;
|
||||
statements.forEach((statement) => {
|
||||
// Only cache statements that are for FIDO2-compatible authenticators
|
||||
if (statement.aaguid) {
|
||||
this.statementCache[statement.aaguid] = {
|
||||
entry: {
|
||||
metadataStatement: statement,
|
||||
statusReports: [],
|
||||
timeOfLastStatusChange: '1970-01-01',
|
||||
},
|
||||
url: '',
|
||||
};
|
||||
statementsAdded += 1;
|
||||
}
|
||||
});
|
||||
log(`Cached ${statementsAdded} local statements`);
|
||||
}
|
||||
// If MDS servers are provided, then process them and add their statements to the cache
|
||||
if (mdsServers?.length) {
|
||||
// Get a current count so we know how many new statements we've added from MDS servers
|
||||
const currentCacheCount = Object.keys(this.statementCache).length;
|
||||
let numServers = mdsServers.length;
|
||||
for (const url of mdsServers) {
|
||||
try {
|
||||
await this.downloadBlob({
|
||||
url,
|
||||
no: 0,
|
||||
nextUpdate: new Date(0),
|
||||
});
|
||||
}
|
||||
catch (err) {
|
||||
// Notify of the error and move on
|
||||
log(`Could not download BLOB from ${url}:`, err);
|
||||
numServers -= 1;
|
||||
}
|
||||
}
|
||||
// Calculate the difference to get the total number of new statements we successfully added
|
||||
const newCacheCount = Object.keys(this.statementCache).length;
|
||||
const cacheDiff = newCacheCount - currentCacheCount;
|
||||
log(`Cached ${cacheDiff} statements from ${numServers} metadata server(s)`);
|
||||
}
|
||||
if (verificationMode) {
|
||||
this.verificationMode = verificationMode;
|
||||
}
|
||||
this.setState(SERVICE_STATE.READY);
|
||||
}
|
||||
async getStatement(aaguid) {
|
||||
if (this.state === SERVICE_STATE.DISABLED) {
|
||||
return;
|
||||
}
|
||||
if (!aaguid) {
|
||||
return;
|
||||
}
|
||||
if (aaguid instanceof Uint8Array) {
|
||||
aaguid = (0, convertAAGUIDToString_js_1.convertAAGUIDToString)(aaguid);
|
||||
}
|
||||
// If a cache refresh is in progress then pause this until the service is ready
|
||||
await this.pauseUntilReady();
|
||||
// Try to grab a cached statement
|
||||
const cachedStatement = this.statementCache[aaguid];
|
||||
if (!cachedStatement) {
|
||||
if (this.verificationMode === 'strict') {
|
||||
// FIDO conformance requires RP's to only support registered AAGUID's
|
||||
throw new Error(`No metadata statement found for aaguid "${aaguid}"`);
|
||||
}
|
||||
// Allow registration verification to continue without using metadata
|
||||
return;
|
||||
}
|
||||
// If the statement points to an MDS API, check the MDS' nextUpdate to see if we need to refresh
|
||||
if (cachedStatement.url) {
|
||||
const mds = this.mdsCache[cachedStatement.url];
|
||||
const now = new Date();
|
||||
if (now > mds.nextUpdate) {
|
||||
try {
|
||||
this.setState(SERVICE_STATE.REFRESHING);
|
||||
await this.downloadBlob(mds);
|
||||
}
|
||||
finally {
|
||||
this.setState(SERVICE_STATE.READY);
|
||||
}
|
||||
}
|
||||
}
|
||||
const { entry } = cachedStatement;
|
||||
// Check to see if the this aaguid has a status report with a "compromised" status
|
||||
for (const report of entry.statusReports) {
|
||||
const { status } = report;
|
||||
if (status === 'USER_VERIFICATION_BYPASS' ||
|
||||
status === 'ATTESTATION_KEY_COMPROMISE' ||
|
||||
status === 'USER_KEY_REMOTE_COMPROMISE' ||
|
||||
status === 'USER_KEY_PHYSICAL_COMPROMISE') {
|
||||
throw new Error(`Detected compromised aaguid "${aaguid}"`);
|
||||
}
|
||||
}
|
||||
return entry.metadataStatement;
|
||||
}
|
||||
/**
|
||||
* Download and process the latest BLOB from MDS
|
||||
*/
|
||||
async downloadBlob(mds) {
|
||||
const { url, no } = mds;
|
||||
// Get latest "BLOB" (FIDO's terminology, not mine)
|
||||
const resp = await (0, fetch_js_1.fetch)(url);
|
||||
const data = await resp.text();
|
||||
// Parse the JWT
|
||||
const parsedJWT = (0, parseJWT_js_1.parseJWT)(data);
|
||||
const header = parsedJWT[0];
|
||||
const payload = parsedJWT[1];
|
||||
if (payload.no <= no) {
|
||||
// From FIDO MDS docs: "also ignore the file if its number (no) is less or equal to the
|
||||
// number of the last BLOB cached locally."
|
||||
throw new Error(`Latest BLOB no. "${payload.no}" is not greater than previous ${no}`);
|
||||
}
|
||||
const headerCertsPEM = header.x5c.map(convertCertBufferToPEM_js_1.convertCertBufferToPEM);
|
||||
try {
|
||||
// Validate the certificate chain
|
||||
const rootCerts = settingsService_js_1.SettingsService.getRootCertificates({
|
||||
identifier: 'mds',
|
||||
});
|
||||
await (0, validateCertificatePath_js_1.validateCertificatePath)(headerCertsPEM, rootCerts);
|
||||
}
|
||||
catch (error) {
|
||||
const _error = error;
|
||||
// From FIDO MDS docs: "ignore the file if the chain cannot be verified or if one of the
|
||||
// chain certificates is revoked"
|
||||
throw new Error(`BLOB certificate path could not be validated: ${_error.message}`);
|
||||
}
|
||||
// Verify the BLOB JWT signature
|
||||
const leafCert = headerCertsPEM[0];
|
||||
const verified = await (0, verifyJWT_js_1.verifyJWT)(data, (0, convertPEMToBytes_js_1.convertPEMToBytes)(leafCert));
|
||||
if (!verified) {
|
||||
// From FIDO MDS docs: "The FIDO Server SHOULD ignore the file if the signature is invalid."
|
||||
throw new Error('BLOB signature could not be verified');
|
||||
}
|
||||
// Cache statements for FIDO2 devices
|
||||
for (const entry of payload.entries) {
|
||||
// Only cache entries with an `aaguid`
|
||||
if (entry.aaguid) {
|
||||
this.statementCache[entry.aaguid] = { entry, url };
|
||||
}
|
||||
}
|
||||
// Remember info about the server so we can refresh later
|
||||
const [year, month, day] = payload.nextUpdate.split('-');
|
||||
this.mdsCache[url] = {
|
||||
...mds,
|
||||
// Store the payload `no` to make sure we're getting the next BLOB in the sequence
|
||||
no: payload.no,
|
||||
// Convert the nextUpdate property into a Date so we can determine when to re-download
|
||||
nextUpdate: new Date(parseInt(year, 10),
|
||||
// Months need to be zero-indexed
|
||||
parseInt(month, 10) - 1, parseInt(day, 10)),
|
||||
};
|
||||
}
|
||||
/**
|
||||
* A helper method to pause execution until the service is ready
|
||||
*/
|
||||
pauseUntilReady() {
|
||||
if (this.state === SERVICE_STATE.READY) {
|
||||
return new Promise((resolve) => {
|
||||
resolve();
|
||||
});
|
||||
}
|
||||
// State isn't ready, so set up polling
|
||||
const readyPromise = new Promise((resolve, reject) => {
|
||||
const totalTimeoutMS = 70000;
|
||||
const intervalMS = 100;
|
||||
let iterations = totalTimeoutMS / intervalMS;
|
||||
// Check service state every `intervalMS` milliseconds
|
||||
const intervalID = globalThis.setInterval(() => {
|
||||
if (iterations < 1) {
|
||||
clearInterval(intervalID);
|
||||
reject(`State did not become ready in ${totalTimeoutMS / 1000} seconds`);
|
||||
}
|
||||
else if (this.state === SERVICE_STATE.READY) {
|
||||
clearInterval(intervalID);
|
||||
resolve();
|
||||
}
|
||||
iterations -= 1;
|
||||
}, intervalMS);
|
||||
});
|
||||
return readyPromise;
|
||||
}
|
||||
/**
|
||||
* Report service status on change
|
||||
*/
|
||||
setState(newState) {
|
||||
this.state = newState;
|
||||
if (newState === SERVICE_STATE.DISABLED) {
|
||||
log('MetadataService is DISABLED');
|
||||
}
|
||||
else if (newState === SERVICE_STATE.REFRESHING) {
|
||||
log('MetadataService is REFRESHING');
|
||||
}
|
||||
else if (newState === SERVICE_STATE.READY) {
|
||||
log('MetadataService is READY');
|
||||
}
|
||||
}
|
||||
}
|
||||
exports.BaseMetadataService = BaseMetadataService;
|
||||
/**
|
||||
* A basic service for coordinating interactions with the FIDO Metadata Service. This includes BLOB
|
||||
* download and parsing, and on-demand requesting and caching of individual metadata statements.
|
||||
*
|
||||
* https://fidoalliance.org/metadata/
|
||||
*/
|
||||
exports.MetadataService = new BaseMetadataService();
|
||||
38
api.hyungi.net/node_modules/@simplewebauthn/server/script/services/settingsService.d.ts
generated
vendored
Normal file
38
api.hyungi.net/node_modules/@simplewebauthn/server/script/services/settingsService.d.ts
generated
vendored
Normal file
@@ -0,0 +1,38 @@
|
||||
import type { AttestationFormat } from '../helpers/decodeAttestationObject.js';
|
||||
export type RootCertIdentifier = AttestationFormat | 'mds';
|
||||
interface SettingsService {
|
||||
/**
|
||||
* Set potential root certificates for attestation formats that use them. Root certs will be tried
|
||||
* one-by-one when validating a certificate path.
|
||||
*
|
||||
* Certificates can be specified as a raw `Buffer`, or as a PEM-formatted string. If a
|
||||
* `Buffer` is passed in it will be converted to PEM format.
|
||||
*/
|
||||
setRootCertificates(opts: {
|
||||
identifier: RootCertIdentifier;
|
||||
certificates: (Uint8Array | string)[];
|
||||
}): void;
|
||||
/**
|
||||
* Get any registered root certificates for the specified attestation format
|
||||
*/
|
||||
getRootCertificates(opts: {
|
||||
identifier: RootCertIdentifier;
|
||||
}): string[];
|
||||
}
|
||||
/**
|
||||
* A basic service for specifying acceptable root certificates for all supported attestation
|
||||
* statement formats.
|
||||
*
|
||||
* In addition, default root certificates are included for the following statement formats:
|
||||
*
|
||||
* - `'android-key'`
|
||||
* - `'android-safetynet'`
|
||||
* - `'apple'`
|
||||
* - `'android-mds'`
|
||||
*
|
||||
* These can be overwritten as needed by setting alternative root certificates for their format
|
||||
* identifier using `setRootCertificates()`.
|
||||
*/
|
||||
export declare const SettingsService: SettingsService;
|
||||
export {};
|
||||
//# sourceMappingURL=settingsService.d.ts.map
|
||||
1
api.hyungi.net/node_modules/@simplewebauthn/server/script/services/settingsService.d.ts.map
generated
vendored
Normal file
1
api.hyungi.net/node_modules/@simplewebauthn/server/script/services/settingsService.d.ts.map
generated
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"settingsService.d.ts","sourceRoot":"","sources":["../../src/services/settingsService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAa/E,MAAM,MAAM,kBAAkB,GAAG,iBAAiB,GAAG,KAAK,CAAC;AAE3D,UAAU,eAAe;IACvB;;;;;;OAMG;IACH,mBAAmB,CAAC,IAAI,EAAE;QACxB,UAAU,EAAE,kBAAkB,CAAC;QAC/B,YAAY,EAAE,CAAC,UAAU,GAAG,MAAM,CAAC,EAAE,CAAC;KACvC,GAAG,IAAI,CAAC;IAET;;OAEG;IACH,mBAAmB,CAAC,IAAI,EAAE;QAAE,UAAU,EAAE,kBAAkB,CAAA;KAAE,GAAG,MAAM,EAAE,CAAC;CACzE;AAkCD;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,eAAe,EAAE,eAA2C,CAAC"}
|
||||
74
api.hyungi.net/node_modules/@simplewebauthn/server/script/services/settingsService.js
generated
vendored
Normal file
74
api.hyungi.net/node_modules/@simplewebauthn/server/script/services/settingsService.js
generated
vendored
Normal file
@@ -0,0 +1,74 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.SettingsService = void 0;
|
||||
const convertCertBufferToPEM_js_1 = require("../helpers/convertCertBufferToPEM.js");
|
||||
const android_safetynet_js_1 = require("./defaultRootCerts/android-safetynet.js");
|
||||
const android_key_js_1 = require("./defaultRootCerts/android-key.js");
|
||||
const apple_js_1 = require("./defaultRootCerts/apple.js");
|
||||
const mds_js_1 = require("./defaultRootCerts/mds.js");
|
||||
class BaseSettingsService {
|
||||
constructor() {
|
||||
// Certificates are stored as PEM-formatted strings
|
||||
Object.defineProperty(this, "pemCertificates", {
|
||||
enumerable: true,
|
||||
configurable: true,
|
||||
writable: true,
|
||||
value: void 0
|
||||
});
|
||||
this.pemCertificates = new Map();
|
||||
}
|
||||
setRootCertificates(opts) {
|
||||
const { identifier, certificates } = opts;
|
||||
const newCertificates = [];
|
||||
for (const cert of certificates) {
|
||||
if (cert instanceof Uint8Array) {
|
||||
newCertificates.push((0, convertCertBufferToPEM_js_1.convertCertBufferToPEM)(cert));
|
||||
}
|
||||
else {
|
||||
newCertificates.push(cert);
|
||||
}
|
||||
}
|
||||
this.pemCertificates.set(identifier, newCertificates);
|
||||
}
|
||||
getRootCertificates(opts) {
|
||||
const { identifier } = opts;
|
||||
return this.pemCertificates.get(identifier) ?? [];
|
||||
}
|
||||
}
|
||||
/**
|
||||
* A basic service for specifying acceptable root certificates for all supported attestation
|
||||
* statement formats.
|
||||
*
|
||||
* In addition, default root certificates are included for the following statement formats:
|
||||
*
|
||||
* - `'android-key'`
|
||||
* - `'android-safetynet'`
|
||||
* - `'apple'`
|
||||
* - `'android-mds'`
|
||||
*
|
||||
* These can be overwritten as needed by setting alternative root certificates for their format
|
||||
* identifier using `setRootCertificates()`.
|
||||
*/
|
||||
exports.SettingsService = new BaseSettingsService();
|
||||
// Initialize default certificates
|
||||
exports.SettingsService.setRootCertificates({
|
||||
identifier: 'android-key',
|
||||
certificates: [
|
||||
android_key_js_1.Google_Hardware_Attestation_Root_1,
|
||||
android_key_js_1.Google_Hardware_Attestation_Root_2,
|
||||
android_key_js_1.Google_Hardware_Attestation_Root_3,
|
||||
android_key_js_1.Google_Hardware_Attestation_Root_4,
|
||||
],
|
||||
});
|
||||
exports.SettingsService.setRootCertificates({
|
||||
identifier: 'android-safetynet',
|
||||
certificates: [android_safetynet_js_1.GlobalSign_Root_CA],
|
||||
});
|
||||
exports.SettingsService.setRootCertificates({
|
||||
identifier: 'apple',
|
||||
certificates: [apple_js_1.Apple_WebAuthn_Root_CA],
|
||||
});
|
||||
exports.SettingsService.setRootCertificates({
|
||||
identifier: 'mds',
|
||||
certificates: [mds_js_1.GlobalSign_Root_CA_R3],
|
||||
});
|
||||
Reference in New Issue
Block a user