@jmlq/auth 0.0.1-alpha.1 → 0.0.1-alpha.2
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/README.md +259 -306
- package/dist/application/dtos/index.d.ts +3 -0
- package/dist/application/dtos/index.js +19 -0
- package/dist/application/dtos/request/index.d.ts +4 -0
- package/dist/{src/application/dtos → application/dtos/request}/index.js +4 -4
- package/dist/{src/application/dtos/login.dto.d.ts → application/dtos/request/login.request.d.ts} +0 -4
- package/dist/application/dtos/request/logout.request.d.ts +3 -0
- package/dist/application/dtos/request/refresh-token.request.d.ts +3 -0
- package/dist/application/dtos/request/register-user.request.d.ts +6 -0
- package/dist/application/dtos/response/index.d.ts +4 -0
- package/dist/application/dtos/response/index.js +20 -0
- package/dist/application/dtos/response/login.response.d.ts +4 -0
- package/dist/{src/application/dtos/logout.dto.d.ts → application/dtos/response/logout.response.d.ts} +0 -3
- package/dist/{src/application/dtos/refresh-token.dto.d.ts → application/dtos/response/refresh-token.response.d.ts} +0 -3
- package/dist/application/dtos/response/register-user.response.d.ts +7 -0
- package/dist/application/dtos/type/index.d.ts +1 -0
- package/dist/{src/shared/constants → application/dtos/type}/index.js +1 -1
- package/dist/application/dtos/type/user-role.type.d.ts +4 -0
- package/dist/application/factories/auth-service.factory.d.ts +11 -0
- package/dist/application/factories/auth-service.factory.js +40 -0
- package/dist/{src/application → application}/index.d.ts +1 -0
- package/dist/{src/application → application}/index.js +1 -0
- package/dist/application/types/auth-service-factory-options.type.d.ts +5 -0
- package/dist/application/types/index.d.ts +1 -0
- package/dist/{src/infrastructure/jwt/factory → application/types}/index.js +1 -1
- package/dist/{src/application → application}/use-cases/login-with-password.use-case.d.ts +2 -2
- package/dist/{src/application → application}/use-cases/login-with-password.use-case.js +6 -5
- package/dist/{src/application → application}/use-cases/logout.use-case.d.ts +2 -2
- package/dist/{src/application → application}/use-cases/logout.use-case.js +2 -2
- package/dist/{src/application → application}/use-cases/refresh-token.use-case.d.ts +2 -2
- package/dist/{src/application → application}/use-cases/refresh-token.use-case.js +2 -2
- package/dist/application/use-cases/register-user.use-case.d.ts +12 -0
- package/dist/{src/application → application}/use-cases/register-user.use-case.js +27 -1
- package/dist/{src/domain → domain}/errors/auth.errors.d.ts +1 -14
- package/dist/{src/domain → domain}/errors/auth.errors.js +1 -15
- package/dist/{src/domain → domain}/index.d.ts +0 -1
- package/dist/{src/domain → domain}/index.js +0 -1
- package/dist/domain/ports/auth/index.d.ts +2 -0
- package/dist/domain/ports/auth/index.js +18 -0
- package/dist/{src/domain/ports/auth/password-hasher.d.ts → domain/ports/auth/password-hasher.port.d.ts} +1 -1
- package/dist/{src/domain → domain}/ports/auth/password-policy.port.d.ts +1 -1
- package/dist/domain/ports/index.d.ts +4 -0
- package/dist/{src/infrastructure/jwt → domain/ports}/index.js +3 -2
- package/dist/domain/ports/jwt/index.d.ts +1 -0
- package/dist/{src/shared/types → domain/ports/jwt}/index.js +1 -1
- package/dist/domain/ports/jwt/payload/index.d.ts +1 -0
- package/dist/domain/ports/jwt/payload/index.js +17 -0
- package/dist/{src/domain → domain}/ports/repository/credential.repository.d.ts +1 -1
- package/dist/{src/domain → domain}/ports/repository/index.d.ts +1 -1
- package/dist/{src/domain → domain}/ports/repository/index.js +1 -1
- package/dist/{src/domain/ports/repository/user.repository.d.ts → domain/ports/repository/user-repository.port.d.ts} +1 -1
- package/dist/domain/ports/token/index.d.ts +2 -0
- package/dist/domain/ports/token/index.js +18 -0
- package/dist/{src/domain → domain}/ports/token/token-session.port.d.ts +2 -2
- package/dist/{src/domain → domain}/ports/token/token.service.port.d.ts +2 -2
- package/dist/{src/domain → domain}/props/jwt/generate-access-token.props.d.ts +0 -2
- package/dist/{src/domain → domain}/props/jwt/generate-refresh-token.props.d.ts +0 -2
- package/dist/{src/domain/props/services → domain/props/jwt}/index.d.ts +1 -0
- package/dist/{src/domain/props/services → domain/props/jwt}/index.js +1 -0
- package/dist/{src/domain → domain}/services/password-policy.service.d.ts +2 -2
- package/dist/{src/infrastructure/repositories/test → in-memory}/in-memory-credential.repository.d.ts +2 -2
- package/dist/{src/infrastructure/repositories/test → in-memory}/in-memory-credential.repository.js +12 -2
- package/dist/{src/infrastructure/repositories/test → in-memory}/in-memory-user.repository.d.ts +2 -2
- package/dist/index.d.ts +4 -1
- package/dist/index.js +11 -1
- package/dist/infrastructure/index.js +1 -0
- package/dist/{src/infrastructure → infrastructure}/security/bcrypt-password-hasher.d.ts +7 -2
- package/dist/{src/infrastructure → infrastructure}/security/bcrypt-password-hasher.js +7 -2
- package/dist/{src/infrastructure → infrastructure}/services/index.d.ts +0 -1
- package/dist/{src/infrastructure → infrastructure}/services/index.js +0 -1
- package/dist/infrastructure/services/token-session.service.d.ts +22 -0
- package/dist/{src/infrastructure/services/default-token-session.service.js → infrastructure/services/token-session.service.js} +30 -31
- package/dist/infrastructure/types/auth-service-container.d.ts +14 -0
- package/dist/shared/index.d.ts +1 -0
- package/dist/{src/infrastructure/repositories → shared}/index.js +1 -1
- package/package.json +5 -8
- package/dist/examples/bcrypt-password-hasher.example.d.ts +0 -3
- package/dist/examples/bcrypt-password-hasher.example.js +0 -78
- package/dist/examples/entity-object.example.d.ts +0 -39
- package/dist/examples/entity-object.example.js +0 -411
- package/dist/examples/factory-auth-service-example.d.ts +0 -3
- package/dist/examples/factory-auth-service-example.js +0 -84
- package/dist/examples/index.example.d.ts +0 -12
- package/dist/examples/index.example.js +0 -171
- package/dist/examples/jwt-algoritm.example.d.ts +0 -47
- package/dist/examples/jwt-algoritm.example.js +0 -447
- package/dist/examples/jwt-token-generator.example.d.ts +0 -6
- package/dist/examples/jwt-token-generator.example.js +0 -49
- package/dist/examples/jwt-verifier.example.d.ts +0 -3
- package/dist/examples/jwt-verifier.example.js +0 -80
- package/dist/examples/password-policy.example.d.ts +0 -7
- package/dist/examples/password-policy.example.js +0 -57
- package/dist/examples/service-jwt-token.example.d.ts +0 -3
- package/dist/examples/service-jwt-token.example.js +0 -154
- package/dist/examples/service-token-session.example.d.ts +0 -3
- package/dist/examples/service-token-session.example.js +0 -139
- package/dist/examples/use-case-login-with-password.example.d.ts +0 -6
- package/dist/examples/use-case-login-with-password.example.js +0 -105
- package/dist/examples/use-case-logout.example.d.ts +0 -7
- package/dist/examples/use-case-logout.example.js +0 -134
- package/dist/examples/use-case-refresh-token.example.d.ts +0 -11
- package/dist/examples/use-case-refresh-token.example.js +0 -164
- package/dist/examples/use-case-register-user.example.d.ts +0 -9
- package/dist/examples/use-case-register-user.example.js +0 -110
- package/dist/src/application/dtos/index.d.ts +0 -4
- package/dist/src/application/dtos/register-user.dto.d.ts +0 -16
- package/dist/src/application/factories/auth-service.factory.d.ts +0 -5
- package/dist/src/application/factories/auth-service.factory.js +0 -51
- package/dist/src/application/use-cases/register-user.use-case.d.ts +0 -10
- package/dist/src/domain/errors/auth-domain-error.d.ts +0 -82
- package/dist/src/domain/errors/auth-domain-error.js +0 -112
- package/dist/src/domain/ports/auth/password-policy-config.port.js +0 -10
- package/dist/src/domain/ports/config/auth-config.port.d.ts +0 -19
- package/dist/src/domain/ports/config/auth-config.port.js +0 -3
- package/dist/src/domain/ports/index.d.ts +0 -9
- package/dist/src/domain/ports/index.js +0 -25
- package/dist/src/domain/ports/jwt/factory/signature-strategy-factory.port.d.ts +0 -14
- package/dist/src/domain/ports/jwt/signature-strategy-factory.port.d.ts +0 -14
- package/dist/src/domain/ports/jwt/signature-strategy.d.ts +0 -30
- package/dist/src/domain/ports/jwt/signature-strategy.js +0 -4
- package/dist/src/domain/ports/jwt/signature-strategy.port.d.ts +0 -31
- package/dist/src/domain/ports/jwt/signature-strategy.port.js +0 -4
- package/dist/src/domain/ports/jwt/strategy/signature-strategy.port.d.ts +0 -31
- package/dist/src/domain/ports/jwt/strategy/signature-strategy.port.js +0 -4
- package/dist/src/domain/props/create-payload-props.port.d.ts +0 -0
- package/dist/src/domain/props/create-payload-props.port.js +0 -8
- package/dist/src/domain/props/jwt/create-payload.props.d.ts +0 -9
- package/dist/src/domain/props/jwt/generate-token.props.d.ts +0 -10
- package/dist/src/domain/props/jwt/generate-token.props.js +0 -2
- package/dist/src/domain/props/jwt/index.d.ts +0 -5
- package/dist/src/domain/props/jwt/index.js +0 -21
- package/dist/src/domain/props/jwt/jwt-subject.d.ts +0 -7
- package/dist/src/domain/props/jwt/jwt-subject.js +0 -2
- package/dist/src/domain/props/services/generate-access-token.props.d.ts +0 -8
- package/dist/src/domain/props/services/generate-refresh-token.props.d.ts +0 -8
- package/dist/src/domain/services/token.service.port.d.ts +0 -9
- package/dist/src/index.d.ts +0 -78
- package/dist/src/index.js +0 -94
- package/dist/src/infrastructure/index.d.ts +0 -5
- package/dist/src/infrastructure/index.js +0 -21
- package/dist/src/infrastructure/jwt/factory/index.d.ts +0 -1
- package/dist/src/infrastructure/jwt/factory/signature-strategy.factory.d.ts +0 -21
- package/dist/src/infrastructure/jwt/factory/signature-strategy.factory.js +0 -61
- package/dist/src/infrastructure/jwt/index.d.ts +0 -3
- package/dist/src/infrastructure/jwt/signature-strategy.factory.d.ts +0 -21
- package/dist/src/infrastructure/jwt/signature-strategy.factory.js +0 -61
- package/dist/src/infrastructure/jwt/strategies/ecdsa-signature-strategy.d.ts +0 -47
- package/dist/src/infrastructure/jwt/strategies/ecdsa-signature-strategy.js +0 -124
- package/dist/src/infrastructure/jwt/strategies/ecdsa-signature.strategy.d.ts +0 -47
- package/dist/src/infrastructure/jwt/strategies/ecdsa-signature.strategy.js +0 -124
- package/dist/src/infrastructure/jwt/strategies/hmac-signature-strategy.d.ts +0 -54
- package/dist/src/infrastructure/jwt/strategies/hmac-signature-strategy.js +0 -129
- package/dist/src/infrastructure/jwt/strategies/hmac-signature.strategy.d.ts +0 -54
- package/dist/src/infrastructure/jwt/strategies/hmac-signature.strategy.js +0 -129
- package/dist/src/infrastructure/jwt/strategies/index.d.ts +0 -3
- package/dist/src/infrastructure/jwt/strategies/index.js +0 -19
- package/dist/src/infrastructure/jwt/strategies/rsa-signature-strategy.d.ts +0 -47
- package/dist/src/infrastructure/jwt/strategies/rsa-signature-strategy.js +0 -124
- package/dist/src/infrastructure/jwt/strategies/rsa-signature.strategy.d.ts +0 -47
- package/dist/src/infrastructure/jwt/strategies/rsa-signature.strategy.js +0 -124
- package/dist/src/infrastructure/jwt/token/actions/jwt-token-generator.d.ts +0 -57
- package/dist/src/infrastructure/jwt/token/actions/jwt-token-generator.js +0 -123
- package/dist/src/infrastructure/jwt/token/actions/jwt-token-verifier.d.ts +0 -59
- package/dist/src/infrastructure/jwt/token/actions/jwt-token-verifier.js +0 -100
- package/dist/src/infrastructure/jwt/token/index.d.ts +0 -5
- package/dist/src/infrastructure/jwt/token/index.js +0 -21
- package/dist/src/infrastructure/jwt/token/jwt-signer.d.ts +0 -33
- package/dist/src/infrastructure/jwt/token/jwt-signer.js +0 -46
- package/dist/src/infrastructure/jwt/token/jwt-token-parser.d.ts +0 -29
- package/dist/src/infrastructure/jwt/token/jwt-token-parser.js +0 -57
- package/dist/src/infrastructure/jwt/token/jwt-token-validator.d.ts +0 -32
- package/dist/src/infrastructure/jwt/token/jwt-token-validator.js +0 -77
- package/dist/src/infrastructure/jwt/token/tools/jwt-signer.d.ts +0 -33
- package/dist/src/infrastructure/jwt/token/tools/jwt-signer.js +0 -46
- package/dist/src/infrastructure/jwt/token/tools/jwt-token-parser.d.ts +0 -30
- package/dist/src/infrastructure/jwt/token/tools/jwt-token-parser.js +0 -57
- package/dist/src/infrastructure/jwt/token/tools/jwt-token-validator.d.ts +0 -32
- package/dist/src/infrastructure/jwt/token/tools/jwt-token-validator.js +0 -77
- package/dist/src/infrastructure/repositories/index.d.ts +0 -1
- package/dist/src/infrastructure/repositories/test/in-memory-token-session.repository.d.ts +0 -67
- package/dist/src/infrastructure/repositories/test/in-memory-token-session.repository.js +0 -128
- package/dist/src/infrastructure/services/default-token-session.service.d.ts +0 -18
- package/dist/src/infrastructure/services/jwt-token.service.d.ts +0 -15
- package/dist/src/infrastructure/services/jwt-token.service.js +0 -44
- package/dist/src/infrastructure/services/simple-jwt-token.service.d.ts +0 -15
- package/dist/src/infrastructure/services/simple-jwt-token.service.js +0 -46
- package/dist/src/infrastructure/services/token-session.service.d.ts +0 -24
- package/dist/src/infrastructure/services/token-session.service.js +0 -131
- package/dist/src/infrastructure/types/auth-service-container.d.ts +0 -14
- package/dist/src/shared/constants/index.d.ts +0 -1
- package/dist/src/shared/constants/jwt-algorithms.d.ts +0 -17
- package/dist/src/shared/constants/jwt-algorithms.js +0 -23
- package/dist/src/shared/encoders/base64-url-encoder.d.ts +0 -29
- package/dist/src/shared/encoders/base64-url-encoder.js +0 -45
- package/dist/src/shared/encoders/index.d.ts +0 -1
- package/dist/src/shared/encoders/index.js +0 -17
- package/dist/src/shared/index.d.ts +0 -4
- package/dist/src/shared/index.js +0 -20
- package/dist/src/shared/types/index.d.ts +0 -1
- package/dist/src/shared/types/jwt.d.ts +0 -25
- package/dist/src/shared/types/jwt.js +0 -2
- package/dist/src/shared/types/jwt.types.d.ts +0 -39
- package/dist/src/shared/types/jwt.types.js +0 -2
- package/dist/tests/application/factory/auth-service-factory.spec.d.ts +0 -1
- package/dist/tests/application/factory/auth-service-factory.spec.js +0 -97
- package/dist/tests/application/use-cases/login-with-password.integration.spec.d.ts +0 -1
- package/dist/tests/application/use-cases/login-with-password.integration.spec.js +0 -140
- package/dist/tests/application/use-cases/logout-use-case.spec.d.ts +0 -1
- package/dist/tests/application/use-cases/logout-use-case.spec.js +0 -40
- package/dist/tests/application/use-cases/refresh-token-use-case.spec.d.ts +0 -1
- package/dist/tests/application/use-cases/refresh-token-use-case.spec.js +0 -116
- package/dist/tests/application/use-cases/register-user.usecase.spec.d.ts +0 -1
- package/dist/tests/application/use-cases/register-user.usecase.spec.js +0 -151
- package/dist/tests/domain/entities/credential.spec.d.ts +0 -1
- package/dist/tests/domain/entities/credential.spec.js +0 -93
- package/dist/tests/domain/entities/user.spec.d.ts +0 -1
- package/dist/tests/domain/entities/user.spec.js +0 -93
- package/dist/tests/domain/object-values/email.spec.d.ts +0 -1
- package/dist/tests/domain/object-values/email.spec.js +0 -77
- package/dist/tests/domain/object-values/hashed-password.spec.d.ts +0 -1
- package/dist/tests/domain/object-values/hashed-password.spec.js +0 -54
- package/dist/tests/domain/object-values/id.spec.d.ts +0 -1
- package/dist/tests/domain/object-values/id.spec.js +0 -48
- package/dist/tests/domain/object-values/permission.spec.d.ts +0 -1
- package/dist/tests/domain/object-values/permission.spec.js +0 -75
- package/dist/tests/domain/object-values/role.spec.d.ts +0 -1
- package/dist/tests/domain/object-values/role.spec.js +0 -139
- package/dist/tests/domain/services/default-password-policy.spec.d.ts +0 -1
- package/dist/tests/domain/services/default-password-policy.spec.js +0 -69
- package/dist/tests/doman/entities/credential.spec.d.ts +0 -1
- package/dist/tests/doman/entities/credential.spec.js +0 -93
- package/dist/tests/doman/entities/user.spec.d.ts +0 -1
- package/dist/tests/doman/entities/user.spec.js +0 -93
- package/dist/tests/doman/object-values/email.spec.d.ts +0 -1
- package/dist/tests/doman/object-values/email.spec.js +0 -77
- package/dist/tests/doman/object-values/hashed-password.spec.d.ts +0 -1
- package/dist/tests/doman/object-values/hashed-password.spec.js +0 -54
- package/dist/tests/doman/object-values/id.spec.d.ts +0 -1
- package/dist/tests/doman/object-values/id.spec.js +0 -48
- package/dist/tests/doman/object-values/permission.spec.d.ts +0 -1
- package/dist/tests/doman/object-values/permission.spec.js +0 -75
- package/dist/tests/doman/object-values/role.spec.d.ts +0 -1
- package/dist/tests/doman/object-values/role.spec.js +0 -139
- package/dist/tests/helpers/make-jwt-subject.d.ts +0 -7
- package/dist/tests/helpers/make-jwt-subject.js +0 -16
- package/dist/tests/helpers/make-jwt-user.d.ts +0 -7
- package/dist/tests/helpers/make-jwt-user.js +0 -16
- package/dist/tests/helpers/make-user.d.ts +0 -2
- package/dist/tests/helpers/make-user.js +0 -15
- package/dist/tests/infrastructure/jwt/signature-strategy-factory.spec.d.ts +0 -1
- package/dist/tests/infrastructure/jwt/signature-strategy-factory.spec.js +0 -127
- package/dist/tests/infrastructure/jwt/strategies/ecdsa-signature-strategy.spec.d.ts +0 -1
- package/dist/tests/infrastructure/jwt/strategies/ecdsa-signature-strategy.spec.js +0 -157
- package/dist/tests/infrastructure/jwt/strategies/hmac-signature-strategy.spec.d.ts +0 -1
- package/dist/tests/infrastructure/jwt/strategies/hmac-signature-strategy.spec.js +0 -150
- package/dist/tests/infrastructure/jwt/strategies/rsa-signature-strategy..spec.d.ts +0 -1
- package/dist/tests/infrastructure/jwt/strategies/rsa-signature-strategy..spec.js +0 -156
- package/dist/tests/infrastructure/jwt/token/actions/jwt-token-generator.spec.d.ts +0 -1
- package/dist/tests/infrastructure/jwt/token/actions/jwt-token-generator.spec.js +0 -179
- package/dist/tests/infrastructure/jwt/token/actions/jwt-token-verifier.spec.d.ts +0 -1
- package/dist/tests/infrastructure/jwt/token/actions/jwt-token-verifier.spec.js +0 -142
- package/dist/tests/infrastructure/jwt/token/jwt-signer.spec.d.ts +0 -1
- package/dist/tests/infrastructure/jwt/token/jwt-signer.spec.js +0 -125
- package/dist/tests/infrastructure/jwt/token/jwt-token-parser.spec.d.ts +0 -1
- package/dist/tests/infrastructure/jwt/token/jwt-token-parser.spec.js +0 -116
- package/dist/tests/infrastructure/jwt/token/jwt-token-validator.spec.d.ts +0 -1
- package/dist/tests/infrastructure/jwt/token/jwt-token-validator.spec.js +0 -88
- package/dist/tests/infrastructure/jwt/token/tools/jwt-signer.spec.d.ts +0 -1
- package/dist/tests/infrastructure/jwt/token/tools/jwt-signer.spec.js +0 -126
- package/dist/tests/infrastructure/jwt/token/tools/jwt-token-parser.spec.d.ts +0 -1
- package/dist/tests/infrastructure/jwt/token/tools/jwt-token-parser.spec.js +0 -116
- package/dist/tests/infrastructure/jwt/token/tools/jwt-token-validator.spec.d.ts +0 -1
- package/dist/tests/infrastructure/jwt/token/tools/jwt-token-validator.spec.js +0 -88
- package/dist/tests/infrastructure/security/security/bcrypt-password-hasher.spec.d.ts +0 -1
- package/dist/tests/infrastructure/security/security/bcrypt-password-hasher.spec.js +0 -37
- package/dist/tests/infrastructure/services/jwt-token-service.spec.d.ts +0 -1
- package/dist/tests/infrastructure/services/jwt-token-service.spec.js +0 -145
- package/dist/tests/infrastructure/services/token-session.service.spec.d.ts +0 -1
- package/dist/tests/infrastructure/services/token-session.service.spec.js +0 -269
- package/dist/tests/shared/constants/jwt-algorithms.spec.d.ts +0 -1
- package/dist/tests/shared/constants/jwt-algorithms.spec.js +0 -27
- package/dist/tests/shared/encoders/base64-url-encoder.spec.d.ts +0 -1
- package/dist/tests/shared/encoders/base64-url-encoder.spec.js +0 -70
- package/dist/tests/shared/utils/time-parser.spec.d.ts +0 -1
- package/dist/tests/shared/utils/time-parser.spec.js +0 -80
- package/dist/utils/index.d.ts +0 -1
- package/dist/utils/index.js +0 -17
- package/dist/utils/time-parser.d.ts +0 -28
- package/dist/utils/time-parser.js +0 -76
- /package/dist/{src/application/dtos/login.dto.js → application/dtos/request/login.request.js} +0 -0
- /package/dist/{src/application/dtos/logout.dto.js → application/dtos/request/logout.request.js} +0 -0
- /package/dist/{src/application/dtos/refresh-token.dto.js → application/dtos/request/refresh-token.request.js} +0 -0
- /package/dist/{src/application/dtos/register-user.dto.js → application/dtos/request/register-user.request.js} +0 -0
- /package/dist/{src/domain/ports/auth/password-hasher.js → application/dtos/response/login.response.js} +0 -0
- /package/dist/{src/domain/ports/auth/password-policy.port.js → application/dtos/response/logout.response.js} +0 -0
- /package/dist/{src/domain/ports/jwt/factory/signature-strategy-factory.port.js → application/dtos/response/refresh-token.response.js} +0 -0
- /package/dist/{src/domain/ports/jwt/payload/jwt-payload.port.js → application/dtos/response/register-user.response.js} +0 -0
- /package/dist/{src/domain/ports/jwt/signature-strategy-factory.port.js → application/dtos/type/user-role.type.js} +0 -0
- /package/dist/{src/application → application}/factories/index.d.ts +0 -0
- /package/dist/{src/application → application}/factories/index.js +0 -0
- /package/dist/{src/domain/ports/repository/credential.repository.js → application/types/auth-service-factory-options.type.js} +0 -0
- /package/dist/{src/application → application}/use-cases/index.d.ts +0 -0
- /package/dist/{src/application → application}/use-cases/index.js +0 -0
- /package/dist/{src/domain → domain}/entities/credential.entity.d.ts +0 -0
- /package/dist/{src/domain → domain}/entities/credential.entity.js +0 -0
- /package/dist/{src/domain → domain}/entities/index.d.ts +0 -0
- /package/dist/{src/domain → domain}/entities/index.js +0 -0
- /package/dist/{src/domain → domain}/entities/user.entity.d.ts +0 -0
- /package/dist/{src/domain → domain}/entities/user.entity.js +0 -0
- /package/dist/{src/domain → domain}/errors/identity.errors.d.ts +0 -0
- /package/dist/{src/domain → domain}/errors/identity.errors.js +0 -0
- /package/dist/{src/domain → domain}/errors/index.d.ts +0 -0
- /package/dist/{src/domain → domain}/errors/index.js +0 -0
- /package/dist/{src/domain → domain}/object-values/email.d.ts +0 -0
- /package/dist/{src/domain → domain}/object-values/email.js +0 -0
- /package/dist/{src/domain → domain}/object-values/hashed-password.d.ts +0 -0
- /package/dist/{src/domain → domain}/object-values/hashed-password.js +0 -0
- /package/dist/{src/domain → domain}/object-values/id.d.ts +0 -0
- /package/dist/{src/domain → domain}/object-values/id.js +0 -0
- /package/dist/{src/domain → domain}/object-values/index.d.ts +0 -0
- /package/dist/{src/domain → domain}/object-values/index.js +0 -0
- /package/dist/{src/domain → domain}/object-values/permission.d.ts +0 -0
- /package/dist/{src/domain → domain}/object-values/permission.js +0 -0
- /package/dist/{src/domain → domain}/object-values/role.d.ts +0 -0
- /package/dist/{src/domain → domain}/object-values/role.js +0 -0
- /package/dist/{src/domain/ports/repository/user.repository.js → domain/ports/auth/password-hasher.port.js} +0 -0
- /package/dist/{src/domain/ports/token/token-session.port.js → domain/ports/auth/password-policy.port.js} +0 -0
- /package/dist/{src/domain → domain}/ports/jwt/payload/jwt-payload.port.d.ts +0 -0
- /package/dist/{src/domain/ports/token/token.service.port.js → domain/ports/jwt/payload/jwt-payload.port.js} +0 -0
- /package/dist/{src/domain/props/entities/credential.props.js → domain/ports/repository/credential.repository.js} +0 -0
- /package/dist/{src/domain/props/entities/user.props.js → domain/ports/repository/user-repository.port.js} +0 -0
- /package/dist/{src/domain/props/jwt/create-payload.props.js → domain/ports/token/token-session.port.js} +0 -0
- /package/dist/{src/domain/services → domain/ports/token}/token.service.port.js +0 -0
- /package/dist/{src/domain → domain}/props/entities/credential.props.d.ts +0 -0
- /package/dist/{src/domain/props/jwt/generate-access-token.props.js → domain/props/entities/credential.props.js} +0 -0
- /package/dist/{src/domain → domain}/props/entities/index.d.ts +0 -0
- /package/dist/{src/domain → domain}/props/entities/index.js +0 -0
- /package/dist/{src/domain → domain}/props/entities/user.props.d.ts +0 -0
- /package/dist/{src/domain/props/jwt/generate-refresh-token.props.js → domain/props/entities/user.props.js} +0 -0
- /package/dist/{src/domain → domain}/props/index.d.ts +0 -0
- /package/dist/{src/domain → domain}/props/index.js +0 -0
- /package/dist/{src/domain/props/services → domain/props/jwt}/generate-access-token.props.js +0 -0
- /package/dist/{src/domain/props/services → domain/props/jwt}/generate-refresh-token.props.js +0 -0
- /package/dist/{src/domain → domain}/props/jwt/jwt-user.d.ts +0 -0
- /package/dist/{src/domain → domain}/props/jwt/jwt-user.js +0 -0
- /package/dist/{src/domain → domain}/services/index.d.ts +0 -0
- /package/dist/{src/domain → domain}/services/index.js +0 -0
- /package/dist/{src/domain → domain}/services/password-policy.service.js +0 -0
- /package/dist/{src/infrastructure/repositories/test → in-memory}/in-memory-user.repository.js +0 -0
- /package/dist/{src/infrastructure/repositories/test → in-memory}/index.d.ts +0 -0
- /package/dist/{src/infrastructure/repositories/test → in-memory}/index.js +0 -0
- /package/dist/{src/domain/ports/auth/password-policy-config.port.d.ts → infrastructure/index.d.ts} +0 -0
- /package/dist/{src/infrastructure → infrastructure}/security/index.d.ts +0 -0
- /package/dist/{src/infrastructure → infrastructure}/security/index.js +0 -0
- /package/dist/{src/infrastructure → infrastructure}/types/auth-service-container.js +0 -0
- /package/dist/{src/infrastructure → infrastructure}/types/index.d.ts +0 -0
- /package/dist/{src/infrastructure → infrastructure}/types/index.js +0 -0
- /package/dist/{src/shared → shared}/utils/index.d.ts +0 -0
- /package/dist/{src/shared → shared}/utils/index.js +0 -0
- /package/dist/{src/shared → shared}/utils/time-parser.d.ts +0 -0
- /package/dist/{src/shared → shared}/utils/time-parser.js +0 -0
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { ISignatureStrategy, ISignatureStrategyFactory } from "../../../domain/ports";
|
|
2
|
-
import { AlgorithmName, AnyAlgorithm, Base64UrlEncoder } from "../../../shared";
|
|
3
|
-
/**
|
|
4
|
-
* Selector de estrategia de firma JWT (HMAC, RSA, ECDSA).
|
|
5
|
-
* Infraestructura: implementa el port del dominio.
|
|
6
|
-
*/
|
|
7
|
-
export declare class SignatureStrategyFactory implements ISignatureStrategyFactory {
|
|
8
|
-
private readonly encoder;
|
|
9
|
-
constructor(encoder?: Base64UrlEncoder);
|
|
10
|
-
/**
|
|
11
|
-
* Devuelve la lista de algoritmos soportados por este factory.
|
|
12
|
-
*/
|
|
13
|
-
supported(): ReadonlyArray<AlgorithmName>;
|
|
14
|
-
/**
|
|
15
|
-
* Crea la estrategia adecuada según el algoritmo (HS*, RS*, ES*).
|
|
16
|
-
*/
|
|
17
|
-
create(algorithm: AnyAlgorithm): ISignatureStrategy;
|
|
18
|
-
private isHmacAlgorithm;
|
|
19
|
-
private isRsaAlgorithm;
|
|
20
|
-
private isEcdsaAlgorithm;
|
|
21
|
-
}
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.SignatureStrategyFactory = void 0;
|
|
4
|
-
const domain_1 = require("../../../domain");
|
|
5
|
-
const shared_1 = require("../../../shared");
|
|
6
|
-
const strategies_1 = require("../strategies");
|
|
7
|
-
// Prepara sets para membership rápido (evita recalcular Object.values en cada llamada)
|
|
8
|
-
const HMAC_SET = new Set(Object.values(shared_1.algorithms.hmac));
|
|
9
|
-
const RSA_SET = new Set([
|
|
10
|
-
...Object.values(shared_1.algorithms.rsa),
|
|
11
|
-
// Si soportas PSS (PS256, PS384, PS512), añádelos aquí:
|
|
12
|
-
// ...Object.values(algoritms.rsaPss),
|
|
13
|
-
]);
|
|
14
|
-
const ECDSA_SET = new Set(Object.values(shared_1.algorithms.ecdsa));
|
|
15
|
-
/**
|
|
16
|
-
* Selector de estrategia de firma JWT (HMAC, RSA, ECDSA).
|
|
17
|
-
* Infraestructura: implementa el port del dominio.
|
|
18
|
-
*/
|
|
19
|
-
class SignatureStrategyFactory {
|
|
20
|
-
constructor(encoder = new shared_1.Base64UrlEncoder()) {
|
|
21
|
-
this.encoder = encoder;
|
|
22
|
-
}
|
|
23
|
-
/**
|
|
24
|
-
* Devuelve la lista de algoritmos soportados por este factory.
|
|
25
|
-
*/
|
|
26
|
-
supported() {
|
|
27
|
-
return [
|
|
28
|
-
...Object.values(shared_1.algorithms.hmac),
|
|
29
|
-
...Object.values(shared_1.algorithms.rsa),
|
|
30
|
-
...Object.values(shared_1.algorithms.ecdsa),
|
|
31
|
-
// Si más adelante agregas PSS:
|
|
32
|
-
// ...Object.values(algorithms.rsaPss),
|
|
33
|
-
];
|
|
34
|
-
}
|
|
35
|
-
/**
|
|
36
|
-
* Crea la estrategia adecuada según el algoritmo (HS*, RS*, ES*).
|
|
37
|
-
*/
|
|
38
|
-
create(algorithm) {
|
|
39
|
-
const alg = algorithm.toUpperCase(); // defensivo
|
|
40
|
-
if (this.isHmacAlgorithm(alg)) {
|
|
41
|
-
return new strategies_1.HmacSignatureStrategy(alg, this.encoder);
|
|
42
|
-
}
|
|
43
|
-
if (this.isRsaAlgorithm(alg)) {
|
|
44
|
-
return new strategies_1.RsaSignatureStrategy(alg, this.encoder);
|
|
45
|
-
}
|
|
46
|
-
if (this.isEcdsaAlgorithm(alg)) {
|
|
47
|
-
return new strategies_1.EcdsaSignatureStrategy(alg, this.encoder);
|
|
48
|
-
}
|
|
49
|
-
throw new domain_1.UnsupportedAlgorithmError(`Unsupported algorithm: ${algorithm}`);
|
|
50
|
-
}
|
|
51
|
-
isHmacAlgorithm(algorithm) {
|
|
52
|
-
return HMAC_SET.has(algorithm);
|
|
53
|
-
}
|
|
54
|
-
isRsaAlgorithm(algorithm) {
|
|
55
|
-
return RSA_SET.has(algorithm);
|
|
56
|
-
}
|
|
57
|
-
isEcdsaAlgorithm(algorithm) {
|
|
58
|
-
return ECDSA_SET.has(algorithm);
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
exports.SignatureStrategyFactory = SignatureStrategyFactory;
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { ISignatureStrategy, ISignatureStrategyFactory } from "../../domain/ports";
|
|
2
|
-
import { AlgorithmName, AnyAlgorithm, Base64UrlEncoder } from "../../shared";
|
|
3
|
-
/**
|
|
4
|
-
* Selector de estrategia de firma JWT (HMAC, RSA, ECDSA).
|
|
5
|
-
* Infraestructura: implementa el port del dominio.
|
|
6
|
-
*/
|
|
7
|
-
export declare class SignatureStrategyFactory implements ISignatureStrategyFactory {
|
|
8
|
-
private readonly encoder;
|
|
9
|
-
constructor(encoder?: Base64UrlEncoder);
|
|
10
|
-
/**
|
|
11
|
-
* Devuelve la lista de algoritmos soportados por este factory.
|
|
12
|
-
*/
|
|
13
|
-
supported(): ReadonlyArray<AlgorithmName>;
|
|
14
|
-
/**
|
|
15
|
-
* Crea la estrategia adecuada según el algoritmo (HS*, RS*, ES*).
|
|
16
|
-
*/
|
|
17
|
-
create(algorithm: AnyAlgorithm): ISignatureStrategy;
|
|
18
|
-
private isHmacAlgorithm;
|
|
19
|
-
private isRsaAlgorithm;
|
|
20
|
-
private isEcdsaAlgorithm;
|
|
21
|
-
}
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.SignatureStrategyFactory = void 0;
|
|
4
|
-
const domain_1 = require("../../domain");
|
|
5
|
-
const shared_1 = require("../../shared");
|
|
6
|
-
const strategies_1 = require("./strategies");
|
|
7
|
-
// Prepara sets para membership rápido (evita recalcular Object.values en cada llamada)
|
|
8
|
-
const HMAC_SET = new Set(Object.values(shared_1.algorithms.hmac));
|
|
9
|
-
const RSA_SET = new Set([
|
|
10
|
-
...Object.values(shared_1.algorithms.rsa),
|
|
11
|
-
// Si soportas PSS (PS256, PS384, PS512), añádelos aquí:
|
|
12
|
-
// ...Object.values(algoritms.rsaPss),
|
|
13
|
-
]);
|
|
14
|
-
const ECDSA_SET = new Set(Object.values(shared_1.algorithms.ecdsa));
|
|
15
|
-
/**
|
|
16
|
-
* Selector de estrategia de firma JWT (HMAC, RSA, ECDSA).
|
|
17
|
-
* Infraestructura: implementa el port del dominio.
|
|
18
|
-
*/
|
|
19
|
-
class SignatureStrategyFactory {
|
|
20
|
-
constructor(encoder = new shared_1.Base64UrlEncoder()) {
|
|
21
|
-
this.encoder = encoder;
|
|
22
|
-
}
|
|
23
|
-
/**
|
|
24
|
-
* Devuelve la lista de algoritmos soportados por este factory.
|
|
25
|
-
*/
|
|
26
|
-
supported() {
|
|
27
|
-
return [
|
|
28
|
-
...Object.values(shared_1.algorithms.hmac),
|
|
29
|
-
...Object.values(shared_1.algorithms.rsa),
|
|
30
|
-
...Object.values(shared_1.algorithms.ecdsa),
|
|
31
|
-
// Si más adelante agregas PSS:
|
|
32
|
-
// ...Object.values(algorithms.rsaPss),
|
|
33
|
-
];
|
|
34
|
-
}
|
|
35
|
-
/**
|
|
36
|
-
* Crea la estrategia adecuada según el algoritmo (HS*, RS*, ES*).
|
|
37
|
-
*/
|
|
38
|
-
create(algorithm) {
|
|
39
|
-
const alg = algorithm.toUpperCase(); // defensivo
|
|
40
|
-
if (this.isHmacAlgorithm(alg)) {
|
|
41
|
-
return new strategies_1.HmacSignatureStrategy(alg, this.encoder);
|
|
42
|
-
}
|
|
43
|
-
if (this.isRsaAlgorithm(alg)) {
|
|
44
|
-
return new strategies_1.RsaSignatureStrategy(alg, this.encoder);
|
|
45
|
-
}
|
|
46
|
-
if (this.isEcdsaAlgorithm(alg)) {
|
|
47
|
-
return new strategies_1.EcdsaSignatureStrategy(alg, this.encoder);
|
|
48
|
-
}
|
|
49
|
-
throw new domain_1.UnsupportedAlgorithmError(`Unsupported algorithm: ${algorithm}`);
|
|
50
|
-
}
|
|
51
|
-
isHmacAlgorithm(algorithm) {
|
|
52
|
-
return HMAC_SET.has(algorithm);
|
|
53
|
-
}
|
|
54
|
-
isRsaAlgorithm(algorithm) {
|
|
55
|
-
return RSA_SET.has(algorithm);
|
|
56
|
-
}
|
|
57
|
-
isEcdsaAlgorithm(algorithm) {
|
|
58
|
-
return ECDSA_SET.has(algorithm);
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
exports.SignatureStrategyFactory = SignatureStrategyFactory;
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
import { SignatureStrategy } from "../../../domain/ports";
|
|
2
|
-
import { Base64UrlEncoder, EcdsaAlgorithm } from "../../../shared";
|
|
3
|
-
/**
|
|
4
|
-
*Esta clase implementa la estrategia de firma digital usando ECDSA (Elliptic Curve Digital Signature Algorithm) para JWT.
|
|
5
|
-
*Maneja la firma y verificación de tokens JWT usando algoritmos ECDSA con curvas elípticas, que son más eficientes que RSA para el mismo nivel de seguridad.
|
|
6
|
-
*/
|
|
7
|
-
export declare class EcdsaSignatureStrategy implements SignatureStrategy {
|
|
8
|
-
private readonly algorithm;
|
|
9
|
-
private readonly encoder;
|
|
10
|
-
/**
|
|
11
|
-
* Mapea los algoritmos JWT ECDSA a los algoritmos hash de Node.js crypto.
|
|
12
|
-
* Por ejemplo, 'ES256' → 'sha256'
|
|
13
|
-
*/
|
|
14
|
-
private static readonly ALGORITHM_MAP;
|
|
15
|
-
/**
|
|
16
|
-
* Crea una nueva instancia de EcdsaSignatureStrategy
|
|
17
|
-
* @param algorithm El algoritmo ECDSA a usar (por ejemplo, 'ES256')
|
|
18
|
-
* @param encoder El codificador Base64 URL-safe a usar
|
|
19
|
-
*/
|
|
20
|
-
constructor(algorithm: EcdsaAlgorithm, encoder: Base64UrlEncoder);
|
|
21
|
-
/**
|
|
22
|
-
* Firma digitalmente los datos usando la clave privada ECDSA
|
|
23
|
-
* @param data Los datos a firmar (normalmente el header + payload del JWT)
|
|
24
|
-
* @param privateKey La clave privada para firmar
|
|
25
|
-
* @returns La firma digital como string codificado
|
|
26
|
-
*/
|
|
27
|
-
sign(data: string, privateKey: string): string;
|
|
28
|
-
/**
|
|
29
|
-
* Verifica si una firma es válida para los datos dados usando la clave pública ECDSA
|
|
30
|
-
* @param data Los datos a firmar (normalmente el header + payload del JWT)
|
|
31
|
-
* @param signature La firma digital a verificar
|
|
32
|
-
* @param publicKey La clave pública para verificar
|
|
33
|
-
* @returns true si la firma es válida, false si no
|
|
34
|
-
*/
|
|
35
|
-
verify(data: string, signature: string, publicKey: string): boolean;
|
|
36
|
-
/**
|
|
37
|
-
* Retorna el algoritmo que soporta esta estrategia específica.
|
|
38
|
-
* @returns El nombre del algoritmo soportado
|
|
39
|
-
*/
|
|
40
|
-
getSupportedAlgorithm(): string;
|
|
41
|
-
/**
|
|
42
|
-
* Convierte el algoritmo JWT ECDSA (como 'ES256') al algoritmo hash correspondiente que entiende Node.js crypto (como 'sha256').
|
|
43
|
-
* @returns El algoritmo hash correspondiente
|
|
44
|
-
* @throws Error si el algoritmo ECDSA no es soportado
|
|
45
|
-
*/
|
|
46
|
-
private getHashAlgorithm;
|
|
47
|
-
}
|
|
@@ -1,124 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
exports.EcdsaSignatureStrategy = void 0;
|
|
37
|
-
const crypto = __importStar(require("crypto"));
|
|
38
|
-
const shared_1 = require("../../../shared");
|
|
39
|
-
/**
|
|
40
|
-
*Esta clase implementa la estrategia de firma digital usando ECDSA (Elliptic Curve Digital Signature Algorithm) para JWT.
|
|
41
|
-
*Maneja la firma y verificación de tokens JWT usando algoritmos ECDSA con curvas elípticas, que son más eficientes que RSA para el mismo nivel de seguridad.
|
|
42
|
-
*/
|
|
43
|
-
class EcdsaSignatureStrategy {
|
|
44
|
-
/**
|
|
45
|
-
* Crea una nueva instancia de EcdsaSignatureStrategy
|
|
46
|
-
* @param algorithm El algoritmo ECDSA a usar (por ejemplo, 'ES256')
|
|
47
|
-
* @param encoder El codificador Base64 URL-safe a usar
|
|
48
|
-
*/
|
|
49
|
-
constructor(algorithm, encoder) {
|
|
50
|
-
this.algorithm = algorithm;
|
|
51
|
-
this.encoder = encoder;
|
|
52
|
-
}
|
|
53
|
-
/**
|
|
54
|
-
* Firma digitalmente los datos usando la clave privada ECDSA
|
|
55
|
-
* @param data Los datos a firmar (normalmente el header + payload del JWT)
|
|
56
|
-
* @param privateKey La clave privada para firmar
|
|
57
|
-
* @returns La firma digital como string codificado
|
|
58
|
-
*/
|
|
59
|
-
sign(data, privateKey) {
|
|
60
|
-
// Obtiene el algoritmo hash correspondiente (sha256, sha384, sha512)
|
|
61
|
-
const hashAlgorithm = this.getHashAlgorithm();
|
|
62
|
-
// Crea un firmador
|
|
63
|
-
const sign = crypto.createSign(hashAlgorithm);
|
|
64
|
-
// Alimenta los datos al firmador
|
|
65
|
-
sign.update(data);
|
|
66
|
-
// Genera la firma usando la clave privada ECDSA
|
|
67
|
-
const signature = sign.sign(privateKey, "base64");
|
|
68
|
-
// Codifica en Base64URL para JWT
|
|
69
|
-
return this.encoder.encode(signature);
|
|
70
|
-
}
|
|
71
|
-
/**
|
|
72
|
-
* Verifica si una firma es válida para los datos dados usando la clave pública ECDSA
|
|
73
|
-
* @param data Los datos a firmar (normalmente el header + payload del JWT)
|
|
74
|
-
* @param signature La firma digital a verificar
|
|
75
|
-
* @param publicKey La clave pública para verificar
|
|
76
|
-
* @returns true si la firma es válida, false si no
|
|
77
|
-
*/
|
|
78
|
-
verify(data, signature, publicKey) {
|
|
79
|
-
try {
|
|
80
|
-
// Decodifica la firma desde Base64URL
|
|
81
|
-
const hashAlgorithm = this.getHashAlgorithm();
|
|
82
|
-
// Crea un verificador
|
|
83
|
-
const verify = crypto.createVerify(hashAlgorithm);
|
|
84
|
-
// Alimenta los datos originales
|
|
85
|
-
verify.update(data);
|
|
86
|
-
// Verifica usando la clave pública ECDSA
|
|
87
|
-
const decodedSignature = this.encoder.decode(signature);
|
|
88
|
-
// Retorna true si válida, false si no
|
|
89
|
-
return verify.verify(publicKey, decodedSignature, "base64");
|
|
90
|
-
}
|
|
91
|
-
catch (error) {
|
|
92
|
-
return false;
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
/**
|
|
96
|
-
* Retorna el algoritmo que soporta esta estrategia específica.
|
|
97
|
-
* @returns El nombre del algoritmo soportado
|
|
98
|
-
*/
|
|
99
|
-
getSupportedAlgorithm() {
|
|
100
|
-
return this.algorithm;
|
|
101
|
-
}
|
|
102
|
-
/**
|
|
103
|
-
* Convierte el algoritmo JWT ECDSA (como 'ES256') al algoritmo hash correspondiente que entiende Node.js crypto (como 'sha256').
|
|
104
|
-
* @returns El algoritmo hash correspondiente
|
|
105
|
-
* @throws Error si el algoritmo ECDSA no es soportado
|
|
106
|
-
*/
|
|
107
|
-
getHashAlgorithm() {
|
|
108
|
-
const hashAlgorithm = EcdsaSignatureStrategy.ALGORITHM_MAP[this.algorithm];
|
|
109
|
-
if (!hashAlgorithm) {
|
|
110
|
-
throw new Error(`Unsupported ECDSA algorithm: ${this.algorithm}`);
|
|
111
|
-
}
|
|
112
|
-
return hashAlgorithm;
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
exports.EcdsaSignatureStrategy = EcdsaSignatureStrategy;
|
|
116
|
-
/**
|
|
117
|
-
* Mapea los algoritmos JWT ECDSA a los algoritmos hash de Node.js crypto.
|
|
118
|
-
* Por ejemplo, 'ES256' → 'sha256'
|
|
119
|
-
*/
|
|
120
|
-
EcdsaSignatureStrategy.ALGORITHM_MAP = {
|
|
121
|
-
[shared_1.algorithms.ecdsa.ES256]: "sha256",
|
|
122
|
-
[shared_1.algorithms.ecdsa.ES384]: "sha384",
|
|
123
|
-
[shared_1.algorithms.ecdsa.ES512]: "sha512",
|
|
124
|
-
};
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
import { ISignatureStrategy } from "../../../domain/ports";
|
|
2
|
-
import { Base64UrlEncoder, EcdsaAlgorithm, AlgorithmName } from "../../../shared";
|
|
3
|
-
/**
|
|
4
|
-
*Esta clase implementa la estrategia de firma digital usando ECDSA (Elliptic Curve Digital Signature Algorithm) para JWT.
|
|
5
|
-
*Maneja la firma y verificación de tokens JWT usando algoritmos ECDSA con curvas elípticas, que son más eficientes que RSA para el mismo nivel de seguridad.
|
|
6
|
-
*/
|
|
7
|
-
export declare class EcdsaSignatureStrategy implements ISignatureStrategy {
|
|
8
|
-
private readonly algorithm;
|
|
9
|
-
private readonly encoder;
|
|
10
|
-
/**
|
|
11
|
-
* Mapea los algoritmos JWT ECDSA a los algoritmos hash de Node.js crypto.
|
|
12
|
-
* Por ejemplo, 'ES256' → 'sha256'
|
|
13
|
-
*/
|
|
14
|
-
private static readonly ALGORITHM_MAP;
|
|
15
|
-
/**
|
|
16
|
-
* Crea una nueva instancia de EcdsaSignatureStrategy
|
|
17
|
-
* @param algorithm El algoritmo ECDSA a usar (por ejemplo, 'ES256')
|
|
18
|
-
* @param encoder El codificador Base64 URL-safe a usar
|
|
19
|
-
*/
|
|
20
|
-
constructor(algorithm: EcdsaAlgorithm, encoder: Base64UrlEncoder);
|
|
21
|
-
/**
|
|
22
|
-
* Firma digitalmente los datos usando la clave privada ECDSA
|
|
23
|
-
* @param data Los datos a firmar (normalmente el header + payload del JWT)
|
|
24
|
-
* @param privateKey La clave privada para firmar
|
|
25
|
-
* @returns La firma digital como string codificado
|
|
26
|
-
*/
|
|
27
|
-
sign(data: string, privateKey: string): string;
|
|
28
|
-
/**
|
|
29
|
-
* Verifica si una firma es válida para los datos dados usando la clave pública ECDSA
|
|
30
|
-
* @param data Los datos a firmar (normalmente el header + payload del JWT)
|
|
31
|
-
* @param signature La firma digital a verificar
|
|
32
|
-
* @param publicKey La clave pública para verificar
|
|
33
|
-
* @returns true si la firma es válida, false si no
|
|
34
|
-
*/
|
|
35
|
-
verify(data: string, signature: string, publicKey: string): boolean;
|
|
36
|
-
/**
|
|
37
|
-
* Retorna el algoritmo que soporta esta estrategia específica.
|
|
38
|
-
* @returns El nombre del algoritmo soportado
|
|
39
|
-
*/
|
|
40
|
-
getSupportedAlgorithm(): AlgorithmName;
|
|
41
|
-
/**
|
|
42
|
-
* Convierte el algoritmo JWT ECDSA (como 'ES256') al algoritmo hash correspondiente que entiende Node.js crypto (como 'sha256').
|
|
43
|
-
* @returns El algoritmo hash correspondiente
|
|
44
|
-
* @throws Error si el algoritmo ECDSA no es soportado
|
|
45
|
-
*/
|
|
46
|
-
private getHashAlgorithm;
|
|
47
|
-
}
|
|
@@ -1,124 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
exports.EcdsaSignatureStrategy = void 0;
|
|
37
|
-
const crypto = __importStar(require("crypto"));
|
|
38
|
-
const shared_1 = require("../../../shared");
|
|
39
|
-
/**
|
|
40
|
-
*Esta clase implementa la estrategia de firma digital usando ECDSA (Elliptic Curve Digital Signature Algorithm) para JWT.
|
|
41
|
-
*Maneja la firma y verificación de tokens JWT usando algoritmos ECDSA con curvas elípticas, que son más eficientes que RSA para el mismo nivel de seguridad.
|
|
42
|
-
*/
|
|
43
|
-
class EcdsaSignatureStrategy {
|
|
44
|
-
/**
|
|
45
|
-
* Crea una nueva instancia de EcdsaSignatureStrategy
|
|
46
|
-
* @param algorithm El algoritmo ECDSA a usar (por ejemplo, 'ES256')
|
|
47
|
-
* @param encoder El codificador Base64 URL-safe a usar
|
|
48
|
-
*/
|
|
49
|
-
constructor(algorithm, encoder) {
|
|
50
|
-
this.algorithm = algorithm;
|
|
51
|
-
this.encoder = encoder;
|
|
52
|
-
}
|
|
53
|
-
/**
|
|
54
|
-
* Firma digitalmente los datos usando la clave privada ECDSA
|
|
55
|
-
* @param data Los datos a firmar (normalmente el header + payload del JWT)
|
|
56
|
-
* @param privateKey La clave privada para firmar
|
|
57
|
-
* @returns La firma digital como string codificado
|
|
58
|
-
*/
|
|
59
|
-
sign(data, privateKey) {
|
|
60
|
-
// Obtiene el algoritmo hash correspondiente (sha256, sha384, sha512)
|
|
61
|
-
const hashAlgorithm = this.getHashAlgorithm();
|
|
62
|
-
// Crea un firmador
|
|
63
|
-
const sign = crypto.createSign(hashAlgorithm);
|
|
64
|
-
// Alimenta los datos al firmador
|
|
65
|
-
sign.update(data);
|
|
66
|
-
// Genera la firma usando la clave privada ECDSA
|
|
67
|
-
const signature = sign.sign(privateKey, "base64");
|
|
68
|
-
// Codifica en Base64URL para JWT
|
|
69
|
-
return this.encoder.encode(signature);
|
|
70
|
-
}
|
|
71
|
-
/**
|
|
72
|
-
* Verifica si una firma es válida para los datos dados usando la clave pública ECDSA
|
|
73
|
-
* @param data Los datos a firmar (normalmente el header + payload del JWT)
|
|
74
|
-
* @param signature La firma digital a verificar
|
|
75
|
-
* @param publicKey La clave pública para verificar
|
|
76
|
-
* @returns true si la firma es válida, false si no
|
|
77
|
-
*/
|
|
78
|
-
verify(data, signature, publicKey) {
|
|
79
|
-
try {
|
|
80
|
-
// Decodifica la firma desde Base64URL
|
|
81
|
-
const hashAlgorithm = this.getHashAlgorithm();
|
|
82
|
-
// Crea un verificador
|
|
83
|
-
const verify = crypto.createVerify(hashAlgorithm);
|
|
84
|
-
// Alimenta los datos originales
|
|
85
|
-
verify.update(data);
|
|
86
|
-
// Verifica usando la clave pública ECDSA
|
|
87
|
-
const decodedSignature = this.encoder.decode(signature);
|
|
88
|
-
// Retorna true si válida, false si no
|
|
89
|
-
return verify.verify(publicKey, decodedSignature, "base64");
|
|
90
|
-
}
|
|
91
|
-
catch (error) {
|
|
92
|
-
return false;
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
/**
|
|
96
|
-
* Retorna el algoritmo que soporta esta estrategia específica.
|
|
97
|
-
* @returns El nombre del algoritmo soportado
|
|
98
|
-
*/
|
|
99
|
-
getSupportedAlgorithm() {
|
|
100
|
-
return this.algorithm;
|
|
101
|
-
}
|
|
102
|
-
/**
|
|
103
|
-
* Convierte el algoritmo JWT ECDSA (como 'ES256') al algoritmo hash correspondiente que entiende Node.js crypto (como 'sha256').
|
|
104
|
-
* @returns El algoritmo hash correspondiente
|
|
105
|
-
* @throws Error si el algoritmo ECDSA no es soportado
|
|
106
|
-
*/
|
|
107
|
-
getHashAlgorithm() {
|
|
108
|
-
const hashAlgorithm = EcdsaSignatureStrategy.ALGORITHM_MAP[this.algorithm];
|
|
109
|
-
if (!hashAlgorithm) {
|
|
110
|
-
throw new Error(`Unsupported ECDSA algorithm: ${this.algorithm}`);
|
|
111
|
-
}
|
|
112
|
-
return hashAlgorithm;
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
exports.EcdsaSignatureStrategy = EcdsaSignatureStrategy;
|
|
116
|
-
/**
|
|
117
|
-
* Mapea los algoritmos JWT ECDSA a los algoritmos hash de Node.js crypto.
|
|
118
|
-
* Por ejemplo, 'ES256' → 'sha256'
|
|
119
|
-
*/
|
|
120
|
-
EcdsaSignatureStrategy.ALGORITHM_MAP = {
|
|
121
|
-
[shared_1.algorithms.ecdsa.ES256]: "sha256",
|
|
122
|
-
[shared_1.algorithms.ecdsa.ES384]: "sha384",
|
|
123
|
-
[shared_1.algorithms.ecdsa.ES512]: "sha512",
|
|
124
|
-
};
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
import { SignatureStrategy } from "../../../domain/ports";
|
|
2
|
-
import { Base64UrlEncoder, HmacAlgorithm } from "../../../shared";
|
|
3
|
-
/**
|
|
4
|
-
*Esta clase implementa la estrategia de firma digital usando HMAC (Hash-based Message Authentication Code) para JWT.
|
|
5
|
-
*Maneja la firma y verificación de tokens JWT usando algoritmos HMAC con funciones hash SHA, que utilizan una clave secreta compartida.
|
|
6
|
-
*/
|
|
7
|
-
export declare class HmacSignatureStrategy implements SignatureStrategy {
|
|
8
|
-
private readonly algorithm;
|
|
9
|
-
private readonly encoder;
|
|
10
|
-
/**
|
|
11
|
-
* Mapea los algoritmos JWT HMAC a los algoritmos hash de Node.js crypto.
|
|
12
|
-
* Por ejemplo, 'HS256' → 'sha256'
|
|
13
|
-
*/
|
|
14
|
-
private static readonly ALGORITHM_MAP;
|
|
15
|
-
/**
|
|
16
|
-
* Crea una nueva instancia de HmacSignatureStrategy
|
|
17
|
-
* @param algorithm El algoritmo HMAC a usar (por ejemplo, 'HS256')
|
|
18
|
-
* @param encoder El codificador Base64 URL-safe a usar
|
|
19
|
-
*/
|
|
20
|
-
constructor(algorithm: HmacAlgorithm, encoder: Base64UrlEncoder);
|
|
21
|
-
/**
|
|
22
|
-
* Firma digitalmente los datos usando la clave secreta HMAC
|
|
23
|
-
* @param data Los datos a firmar (normalmente el header + payload del JWT)
|
|
24
|
-
* @param secret La clave secreta para firmar
|
|
25
|
-
* @returns La firma digital como string codificado
|
|
26
|
-
*/
|
|
27
|
-
sign(data: string, secret: string): string;
|
|
28
|
-
/**
|
|
29
|
-
* Verifica si una firma es válida para los datos dados usando la clave secreta HMAC
|
|
30
|
-
* @param data Los datos a firmar (normalmente el header + payload del JWT)
|
|
31
|
-
* @param signature La firma digital a verificar
|
|
32
|
-
* @param secret La clave secreta para verificar
|
|
33
|
-
* @returns true si la firma es válida, false si no
|
|
34
|
-
*/
|
|
35
|
-
verify(data: string, signature: string, secret: string): boolean;
|
|
36
|
-
/**
|
|
37
|
-
* Retorna el algoritmo que soporta esta estrategia específica.
|
|
38
|
-
* @returns El nombre del algoritmo soportado
|
|
39
|
-
*/
|
|
40
|
-
getSupportedAlgorithm(): string;
|
|
41
|
-
/**
|
|
42
|
-
* Convierte el algoritmo JWT HMAC (como 'HS256') al algoritmo hash correspondiente que entiende Node.js crypto (como 'sha256').
|
|
43
|
-
* @returns El algoritmo hash correspondiente
|
|
44
|
-
* @throws Error si el algoritmo HMAC no es soportado
|
|
45
|
-
*/
|
|
46
|
-
private getHashAlgorithm;
|
|
47
|
-
/**
|
|
48
|
-
* Compara dos strings de forma segura para evitar timing attacks
|
|
49
|
-
* @param a El primer string a comparar
|
|
50
|
-
* @param b El segundo string a comparar
|
|
51
|
-
* @returns true si son iguales, false si no lo son
|
|
52
|
-
*/
|
|
53
|
-
private secureCompare;
|
|
54
|
-
}
|