# Copyright lowRISC contributors.
# Licensed under the Apache License, Version 2.0, see LICENSE for details.
# SPDX-License-Identifier: Apache-2.0

sw_otbn_sources += {
  'barrett384': files(
    'barrett384.s',
  ),
  'modexp': files(
    'modexp.s'
  ),
  'p256': files(
    'p256.s'
  ),
  'loop': files(
    'loop.s',
  ),
  'mul256': files(
    'mul256.s',
  ),
  'mul384': files(
    'mul384.s',
  ),
  'pseudo-ops': files(
    'pseudo-ops.s',
  ),
  'rsa_1024_dec_test': files(
    'rsa_1024_dec_test.s',
    'modexp.s',
  ),
  'rsa_1024_enc_test': files(
    'rsa_1024_enc_test.s',
    'modexp.s',
  ),
  'err_test': files(
    'err_test.s',
  ),
  'p256_isoncurve_test': files(
    'p256_isoncurve_test.s',
    'p256.s',
  ),
  'p256_scalar_mult_test': files(
    'p256_scalar_mult_test.s',
    'p256.s',
  ),
  'p256_ecdsa_sign_test': files(
    'p256_ecdsa_sign_test.s',
    'p256.s',
  ),
  'p256_ecdsa_verify_test': files(
    'p256_ecdsa_verify_test.s',
    'p256.s',
  ),
  'rsa': files(
    'rsa.s',
    'modexp.s',
  ),
  'p256_ecdsa': files(
    'p256_ecdsa.s',
    'p256.s',
  ),
}
