nrfxlib API 3.3.99
Loading...
Searching...
No Matches
ocrypto_srp.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2016 - 2025 Nordic Semiconductor ASA
3 * Copyright (c) since 2013 Oberon microsystems AG
4 *
5 * SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
6 */
7
8
63#ifndef OCRYPTO_SRP_H
64#define OCRYPTO_SRP_H
65
66#include "ocrypto_types_srp.h"
67
68
69#ifdef __cplusplus
70extern "C" {
71#endif
72
73
77#define ocrypto_srp_SALT_BYTES (16)
78
82#define ocrypto_srp_VERIFIER_BYTES (384)
83
87#define ocrypto_srp_SECRET_KEY_BYTES (32)
88
92#define ocrypto_srp_PUBLIC_KEY_BYTES (384)
93
97#define ocrypto_srp_SCRAMBLING_PARAMETER_BYTES (64)
98
102#define ocrypto_srp_PREMASTER_SECRET_BYTES (384)
103
107#define ocrypto_srp_SESSION_KEY_BYTES (64)
108
112#define ocrypto_srp_PROOF_BYTES (64)
113
114
138 const uint8_t salt[ocrypto_srp_SALT_BYTES],
139 const uint8_t *user, size_t user_len,
140 const uint8_t *pass, size_t pass_len);
161 uint8_t pub_b[ocrypto_srp_PUBLIC_KEY_BYTES],
162 const uint8_t priv_b[ocrypto_srp_SECRET_KEY_BYTES],
163 const uint8_t v[ocrypto_srp_VERIFIER_BYTES]);
175 uint8_t pub_b[ocrypto_srp_PUBLIC_KEY_BYTES],
176 const uint8_t priv_b[ocrypto_srp_SECRET_KEY_BYTES],
177 const uint8_t k[ocrypto_srp_PUBLIC_KEY_BYTES],
178 const uint8_t v[ocrypto_srp_VERIFIER_BYTES]);
179
188 unsigned char pub_a[ocrypto_srp_PUBLIC_KEY_BYTES],
189 const unsigned char *priv_a, size_t a_len);
190
212 const uint8_t pub_a[ocrypto_srp_PUBLIC_KEY_BYTES],
213 const uint8_t pub_b[ocrypto_srp_PUBLIC_KEY_BYTES]);
214
235 const uint8_t pub_a[ocrypto_srp_PUBLIC_KEY_BYTES],
236 const uint8_t priv_b[ocrypto_srp_SECRET_KEY_BYTES],
238 const uint8_t v[ocrypto_srp_VERIFIER_BYTES]);
239
261 const uint8_t pub_a[ocrypto_srp_PUBLIC_KEY_BYTES],
262 const uint8_t priv_b[ocrypto_srp_SECRET_KEY_BYTES],
263 const uint8_t *u, size_t u_len,
264 const uint8_t v[ocrypto_srp_VERIFIER_BYTES]);
265
282 const uint8_t priv_a[ocrypto_srp_SECRET_KEY_BYTES],
283 const uint8_t pub_b[ocrypto_srp_PUBLIC_KEY_BYTES],
284 const uint8_t k[ocrypto_srp_PUBLIC_KEY_BYTES],
285 const uint8_t *u,
286 const uint8_t *h, size_t h_len);
287
299 const uint8_t s[ocrypto_srp_PREMASTER_SECRET_BYTES]);
328 uint8_t m1[ocrypto_srp_PROOF_BYTES],
329 const uint8_t *user, size_t user_len,
330 const uint8_t salt[ocrypto_srp_SALT_BYTES],
331 const uint8_t pub_a[ocrypto_srp_PUBLIC_KEY_BYTES],
332 const uint8_t pub_b[ocrypto_srp_PUBLIC_KEY_BYTES],
333 const uint8_t k[ocrypto_srp_SESSION_KEY_BYTES]);
334
350 uint8_t m2[ocrypto_srp_PROOF_BYTES],
351 const uint8_t pub_a[ocrypto_srp_PUBLIC_KEY_BYTES],
352 const uint8_t m1[ocrypto_srp_PROOF_BYTES],
353 const uint8_t k[ocrypto_srp_SESSION_KEY_BYTES]);
380 ocrypto_srp_ctx *ctx,
382 const uint8_t salt[ocrypto_srp_SALT_BYTES],
383 const uint8_t *user, size_t user_len,
384 const uint8_t *pass, size_t pass_len);
406 ocrypto_srp_ctx *ctx,
407 uint8_t pub_b[ocrypto_srp_PUBLIC_KEY_BYTES],
408 const uint8_t priv_b[ocrypto_srp_SECRET_KEY_BYTES],
409 const uint8_t v[ocrypto_srp_VERIFIER_BYTES]);
433 ocrypto_srp_ctx *ctx,
435 const uint8_t pub_a[ocrypto_srp_PUBLIC_KEY_BYTES],
436 const uint8_t pub_b[ocrypto_srp_PUBLIC_KEY_BYTES]);
437
458 ocrypto_srp_ctx *ctx,
460 const uint8_t pub_a[ocrypto_srp_PUBLIC_KEY_BYTES],
461 const uint8_t priv_b[ocrypto_srp_SECRET_KEY_BYTES],
463 const uint8_t v[ocrypto_srp_VERIFIER_BYTES]);
464
476 ocrypto_srp_ctx *ctx,
478 const uint8_t s[ocrypto_srp_PREMASTER_SECRET_BYTES]);
508 ocrypto_srp_ctx *ctx,
509 uint8_t m1[ocrypto_srp_PROOF_BYTES],
510 const uint8_t *user, size_t user_len,
511 const uint8_t salt[ocrypto_srp_SALT_BYTES],
512 const uint8_t pub_a[ocrypto_srp_PUBLIC_KEY_BYTES],
513 const uint8_t pub_b[ocrypto_srp_PUBLIC_KEY_BYTES],
514 const uint8_t k[ocrypto_srp_SESSION_KEY_BYTES]);
515
532 ocrypto_srp_ctx *ctx,
533 uint8_t m2[ocrypto_srp_PROOF_BYTES],
534 const uint8_t pub_a[ocrypto_srp_PUBLIC_KEY_BYTES],
535 const uint8_t m1[ocrypto_srp_PROOF_BYTES],
536 const uint8_t k[ocrypto_srp_SESSION_KEY_BYTES]);
539#ifdef __cplusplus
540}
541#endif
542
543#endif
544
void ocrypto_srp_server_public_key(uint8_t pub_b[(384)], const uint8_t priv_b[(32)], const uint8_t k[(384)], const uint8_t v[(384)])
#define ocrypto_srp_SCRAMBLING_PARAMETER_BYTES
Definition ocrypto_srp.h:97
#define ocrypto_srp_SECRET_KEY_BYTES
Definition ocrypto_srp.h:87
void ocrypto_srp_proof_m2(uint8_t m2[(64)], const uint8_t pub_a[(384)], const uint8_t m1[(64)], const uint8_t k[(64)])
#define ocrypto_srp_VERIFIER_BYTES
Definition ocrypto_srp.h:82
int ocrypto_srp_client_premaster_secret(uint8_t s[(384)], const uint8_t priv_a[(32)], const uint8_t pub_b[(384)], const uint8_t k[(384)], const uint8_t *u, const uint8_t *h, size_t h_len)
void ocrypto_srp_public_key_ctx(ocrypto_srp_ctx *ctx, uint8_t pub_b[(384)], const uint8_t priv_b[(32)], const uint8_t v[(384)])
void ocrypto_srp_session_key_ctx(ocrypto_srp_ctx *ctx, uint8_t k[(64)], const uint8_t s[(384)])
void ocrypto_srp_scrambling_parameter_ctx(ocrypto_srp_ctx *ctx, uint8_t u[(64)], const uint8_t pub_a[(384)], const uint8_t pub_b[(384)])
int ocrypto_srp_premaster_secret(uint8_t s[(384)], const uint8_t pub_a[(384)], const uint8_t priv_b[(32)], const uint8_t u[(64)], const uint8_t v[(384)])
int ocrypto_srp_premaster_secret_ctx(ocrypto_srp_ctx *ctx, uint8_t s[(384)], const uint8_t pub_a[(384)], const uint8_t priv_b[(32)], const uint8_t u[(64)], const uint8_t v[(384)])
void ocrypto_srp_proof_m2_ctx(ocrypto_srp_ctx *ctx, uint8_t m2[(64)], const uint8_t pub_a[(384)], const uint8_t m1[(64)], const uint8_t k[(64)])
#define ocrypto_srp_PUBLIC_KEY_BYTES
Definition ocrypto_srp.h:92
void ocrypto_srp_scrambling_parameter(uint8_t u[(64)], const uint8_t pub_a[(384)], const uint8_t pub_b[(384)])
#define ocrypto_srp_SALT_BYTES
Definition ocrypto_srp.h:77
void ocrypto_srp_proof_m1(uint8_t m1[(64)], const uint8_t *user, size_t user_len, const uint8_t salt[(16)], const uint8_t pub_a[(384)], const uint8_t pub_b[(384)], const uint8_t k[(64)])
void ocrypto_srp_verifier_ctx(ocrypto_srp_ctx *ctx, uint8_t v[(384)], const uint8_t salt[(16)], const uint8_t *user, size_t user_len, const uint8_t *pass, size_t pass_len)
#define ocrypto_srp_PROOF_BYTES
Definition ocrypto_srp.h:112
#define ocrypto_srp_PREMASTER_SECRET_BYTES
Definition ocrypto_srp.h:102
void ocrypto_srp_client_public_key(unsigned char pub_a[(384)], const unsigned char *priv_a, size_t a_len)
#define ocrypto_srp_SESSION_KEY_BYTES
Definition ocrypto_srp.h:107
void ocrypto_srp_public_key(uint8_t pub_b[(384)], const uint8_t priv_b[(32)], const uint8_t v[(384)])
int ocrypto_srp_server_premaster_secret(uint8_t s[(384)], const uint8_t pub_a[(384)], const uint8_t priv_b[(32)], const uint8_t *u, size_t u_len, const uint8_t v[(384)])
void ocrypto_srp_session_key(uint8_t k[(64)], const uint8_t s[(384)])
void ocrypto_srp_proof_m1_ctx(ocrypto_srp_ctx *ctx, uint8_t m1[(64)], const uint8_t *user, size_t user_len, const uint8_t salt[(16)], const uint8_t pub_a[(384)], const uint8_t pub_b[(384)], const uint8_t k[(64)])
void ocrypto_srp_verifier(uint8_t v[(384)], const uint8_t salt[(16)], const uint8_t *user, size_t user_len, const uint8_t *pass, size_t pass_len)
Declaration of internal types used in public interfaces.
Definition ocrypto_types_srp.h:54