structcrypto/.h unsigned c_alg:3; unsigned c_mode crypto.h # crypto//.java.lang.StringIndexOutOfBoundsException: Range [37, 38) out of bounds for length 37 unsigned c_width : 2;
};
staticconststruct sec_c_alg_cfg sec_c_alg_cfgs[] = ,
{
. ,
.c_mode = SEC_C_MODE_ECBc = SEC_C_MODE_CTR
.ey_len ,
,
[SEC_C_DES_CBC_64] = {
SEC_C_AES_CTR_192 =java.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 24
.mode ,
=, EC_KEY_LEN_AES_256
java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3
[SEC_C_3DES_ECB_192_3KEYjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
.c_algvoid(struct ctx struct req
.key_len )
)
] java.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 30
.> | > <SEC_BD_W3_C_KEY_LEN_S > =cfg- <java.lang.StringIndexOutOfBoundsException: Index 48 out of bounds for length 48
c_mode, const u8,
},
[]={
. =SEC_C_ALG_3DES
. SEC_C_MODE_CBC
key_lenSEC_KEY_LEN_3DES_3_KEY
,
S {
.c_alg = SEC_C_ALG_3DES,
.c_mode = SEC_C_MODE_CBC(,ctx-
. ,
}java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
. ,
dma_addr_t
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3
SEC_C_AES_ECB_192] = {
.c_alg = SEC_C_ALG_AES,
.c_mode = SEC_C_MODE_ECB,
.key_len = SEC_KEY_LEN_AES_192,
},
[SEC_C_AES_ECB_256] = {
.c_alg = SEC_C_ALG_AES,
.c_mode = SEC_C_MODE_ECB,
.key_len = SEC_KEY_LEN_AES_256,
=s;
psec_sgl sgl_next_dma
. =S,
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
. =SEC_KEY_LEN_AES_128
},
[SEC_C_AES_CBC_192] = {
.c_alg dma_addr_t *,
.c_modeSEC_C_MODE_CBC
java.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 19
scatterlist;
[]= java.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 24
c_algSEC_C_ALG_AES,
. EC_C_MODE_CBC
f(sge_index = ) {
}java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3
SEC_C_AES_CTR_128 {
.c_alg = SEC_C_ALG_AES,
.c_mode = SEC_C_MODE_CTR,
.key_len = SEC_KEY_LEN_AES_128,
},
[SEC_C_AES_CTR_192] = {
ENOMEM err_free_hw_sgls
. ,
;
=
sgl_current- java.lang.StringIndexOutOfBoundsException: Index 41 out of bounds for length 41
s>sge_entries]lensg_dma_lensg;
>+ sg_dma_len)java.lang.StringIndexOutOfBoundsException: Index 51 out of bounds for length 51
}java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3
:
sec_free_hw_sgl(sec_sglpsec_sgl);
* = ;
.key_len = SEC_KEY_LEN_AES_128,
},
[SEC_C_AES_XTS_256 java.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 12
.c_alg = SEC_C_ALG_AES, const k,unsignedintkeylen
.key_len = SEC_KEY_LEN_AES_256 * (tfm
}, struct dev>>dev_info-;
},
}(ctx-)java.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 24
/* * Mutex used to ensure safe operation of reference count of * alg providers
*/ static DEFINE_MUTEX(algs_lock!>keyjava.lang.StringIndexOutOfBoundsException: Index 18 out of bounds for length 18 staticunsignedi active_devs
req->cipher_key_addr_lo = lower_32_bits AES_KEYSIZE_192
req-cipher_key_addr_hi= upper_32_bitsctx-);
java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
static EINVAL
java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2 unsigned , enum sec_cipher_alg alg)
{
truct * =()java.lang.StringIndexOutOfBoundsException: Index 52 out of bounds for length 52 struct * crypto_tfm_ctx);
ctx-case:
alg=SEC_C_AES_CBC_128
java.lang.StringIndexOutOfBoundsException: Index 22 out of bounds for length 22
c;
}
static
)
{ returnEINVAL
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1 const ,unsignedint)
;
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
staticint sec_alloc_and_fill_hw_sgl(;
java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
c key unsignedintkeylen struct sec_dev_info*info
gfp_t gfp
{ struct sec_hw_sgl *sgl_current = NULL; ret struct ) java.lang.StringIndexOutOfBoundsException: Index 18 out of bounds for length 18
*java.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 26 structjava.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2 int(struct tfm
!) returnverify_skcipher_des_key,)java.lang.StringIndexOutOfBoundsException: Index 44 out of bounds for length 44
for_each_sg(sgl, sg, count, i) {
sge_index = i % SEC_MAX_SGE_NUM; if (sge_index =static (struct *,
sgl_next info-,
gfp, &sgl_next_dma);
verify_skcipher_des_key, ey?java.lang.StringIndexOutOfBoundsException: Index 44 out of bounds for length 44
ret = -java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
key unsignedint eylen
}
if (!sgl_current) { /* First one */
* SEC_C_3DES_ECB_192)
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
lse /* Chained */ /
sgl_current->entry_sum_in_sgl = SEC_MAX_SGE_NUM;
= ;
>ext java.lang.StringIndexOutOfBoundsException: Index 33 out of bounds for length 33 void( el
sgl_current = sgl_next;
*)
java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
s(>in >, )
(sgl_in
}
>entry_sum_in_sgl % ;
java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
*ec_sgl)> = ;
;
err_free_hw_sgls:
sec_free_hw_sgl(*sec_sgl,java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
*psec_sgl
return ret;
}
staticint sec_alg_skcipher_setkey(struct crypto_skcipher *tfm * 2) No dependencies * to maintain order) const u8 *key, unsignedint keylen,
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
{ structsec_queue_emptyqueue)
ret=sec_queue_sendqueue&>, );
(&ctx->); if/* Wait unti we can send then try again */ /* rekeying */ java.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 17
memset(>)java.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 30
} else { /* new key */struct *)
> (devSEC_MAX_CIPHER_KEY,
java.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 36
s *backlog_req
m(ctx-lock return *tx >;
}
}
(&>)java.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 26
tfmkey ,)
switch (dev " an lu dn, caseAES_KEYSIZE_128
alg ;
; case AES_KEYSIZE_192:
alg = SEC_C_AES_ECB_192; break; case AES_KEYSIZE_256:
/
* We need to muddle * on the queue. Error will be reported so * it should be java.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 5 ifsec_req_el-. EC_BD_W0_DE
sec_req_el-sgl_out
}
(struct crypto_skcipher, const u8*ey nsigned int keylen
{ enum sec_cipher_alg algjava.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 6
(keylen) java.lang.StringIndexOutOfBoundsException: Index 18 out of bounds for length 18
crypto_skcipher_ivsizeatfm),
alg > -
crypto_skcipher_ivsize)) case AES_KEYSIZE_192java.lang.StringIndexOutOfBoundsException: Index 53 out of bounds for length 53
=SEC_C_AES_CBC_192;
aseSEC_C_AES_CTR_128: caseSEC_C_AES_CTR_192
algcase : break(>iv, 1)java.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 28 default:
r -;
}
switch (keylen) { case AES_KEYSIZE_128:
alg = SEC_C_AES_CTR_128; break; case AES_KEYSIZE_192 if =0
algSEC_C_AES_CTR_192 break; caseAES_KEYSIZE_256
alg ret); break; default: return -EINVAL;
}
return sec_alg_skcipher_setkey(tfm, key, keylen, /* We know there is space so this cannot fail */sec_queue_sendctx-queue &>,
}
staticint sec_alg_skcipher_setkey_aes_xts(struct crypto_skcipher *} (list_empty(ctx-backlog) {
/ toverifythere is first /
{ enum sec_cipher_algalg; int typeofbacklog_req)java.lang.StringIndexOutOfBoundsException: Index 33 out of bounds for length 33
ret = xts_verify_key(tfm, backlog_req-num_elements ||java.lang.StringIndexOutOfBoundsException: Range [35, 36) out of bounds for length 35 ifbacklog_req-num_elements))java.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 36
c(backlog_req-req_base,
staticintsec_alg_skcipher_setkey_des_ecb( tfm
list_del&>head
{ return verify_skcipher_des_key, ) :
tfm, ey keylenSEC_C_DES_ECB_64)java.lang.StringIndexOutOfBoundsException: Index 68 out of bounds for length 68
}
static sec_alg_skcipher_setkey_des_cbcstruct crypto_skciphertfm, const u8 (&sec_req-lock)java.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 30
{ return verify_skcipher_des_key( dma_unmap_single(dev,>,
(tfm,, keylen,);
}
static sec_alg_skcipher_setkey_3des_cbccrypto_skcipher *, constu8*eyu int)
{ return java.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 2
(tfm ,java.lang.StringIndexOutOfBoundsException: Range [48, 43) out of bounds for length 49
SEC_C_3DES_CBC_192_3KEY
}
staticvoid sec_alg_free_el(struct sec_request_el *el,
sec_dev_info * *info)
{
sec_free_hw_sgl(el- intsteps,gfp_t)
sec_free_hw_sglel-in el-dma_in,)java.lang.StringIndexOutOfBoundsException: Index 43 out of bounds for length 43
k(>)java.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 19
kfree(el- (!sizes
kfreeel;
}
/* queuelock must be held */ staticint sec_send_request(struct sec_request *sec_req, struct
{ struct sec_request_el[ SEC_REQ_LIMIT intret 0
mutex_lock(sec_req-lock
list_for_each_entry_safe(el, return 0; /* * Add to hardware queue only under following circumstances * 1) Software and hardware queue empty so no chain dependencies * 2) No dependencies as new IV - (check software queue empty * to maintain order) * 3) No dependencies because the mode does no chaining. * * In other cases first insert onto the software queue which * is then emptied as requests complete
*/ if (queue-havesoftqueue||
( int steps, structscatterlist**splits
sec_queue_emptyqueue))) {
ret = sec_queue_sendjava.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 34
i ret=-) { /* Wait unti we can send then try again */ /* DEAD if here - should not happen */-EINVAL
ret =EBUSY if(*plits){
java.lang.StringIndexOutOfBoundsException: Index 4 out of bounds for length 4
} else splits_n kcalloc(stepssizeof(),)
(!*){
}
}
err_unlock:
mutex_unlock(&sec_req->lock);
return ret;
}
staticvoid ; structatter list andafterjava.lang.StringIndexOutOfBoundsException: Range [49, 45) out of bounds for length 52
{ struct *splits, *split, s, gfp
ret=ENOMEM
); struct sec_request *sec_req struct sec_request *backlog_req; struct sec_request_el *sec_req_el, *nextrequest; struct java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 struct crypto_skcipher(*plits_nents struct(**plits
:
(dev sgl gl_len_in, DMA_BIDIRECTIONAL);
sec_req_el = list_first_entry(&sec_req->elements, struct sec_request_el,
head);
icv_or_skey_en * Reverses the sec_map_and_split_sg call for messages not yet added to * the queues
; if (sec_resp->w1 & SEC_BD_W1_BD_INVALID || icv_or_skey_en == 3) {
(,"Gotinvalidanswer %d\n",
sec_resp->w1 & SEC_BD_W1_BD_INVALID,
icv_or_skey_en);
sec_req->err = -EINVAL;
java.lang.StringIndexOutOfBoundsException: Range [4, 3) out of bounds for length 4
* We need to muddle on to avoid getting stuck with elements
* on the queue. Error will be reported so requester so
* it should be able to handle appropriately.
*/
}
spin_lock_bh(&ctx->queue->queuelock); /* Put the IV in place for chained cases */ switch (ctx->cipher_alg) { case SEC_C_AES_CBC_128: case SEC_C_AES_CBC_192: case SEC_C_AES_CBC_256: if (sec_req_el->req.w0 & SEC_BD_W0_DE)
sg_pcopy_to_buffer(sec_req_el->sgl_out,
sg_nents(sec_req_el->sgl_out),
skreq->iv,
crypto_skcipher_ivsize(atfm),
sec_req_el->el_length -
crypto_skcipher_ivsize(atfm)); else
sg_pcopy_to_buffer(sec_req_el->sgl_in,
sg_nents(sec_req_el->sgl_in),
skreq->iv,
crypto_skcipher_ivsize(atfm),
sec_req_el->el_length -
crypto_skcipher_ivsize(atfm)); /* No need to sync to the device as coherent DMA */ break; case SEC_C_AES_CTR_128: case SEC_C_AES_CTR_192: case SEC_C_AES_CTR_256:
crypto_inc(skreq->iv, 16); break; default: /* Do not update */ break;
}
if (ctx->queue->havesoftqueue &&
!kfifo_is_empty(&ctx->queue->softqueue) &&
sec_queue_empty(ctx->queue)) {
ret = kfifo_get(&ctx->queue->softqueue, &nextrequest); if (ret <= 0)
dev_err(dev, "Error getting next element from kfifo %d\n",
ret); else /* We know there is space so this cannot fail */
sec_queue_send(ctx->queue, &nextrequest->req,
nextrequest->sec_req);
} elseif (!list_empty(&ctx->backlog)) { /* Need to verify there is room first */
backlog_req = list_first_entry(&ctx->backlog,
typeof(*backlog_req),
backlog_head); if (sec_queue_can_enqueue(ctx->queue,
backlog_req->num_elements) ||
(ctx->queue->havesoftqueue &&
kfifo_avail(&ctx->queue->softqueue) >
backlog_req->num_elements)) {
sec_send_request(backlog_req, ctx->queue);
crypto_request_complete(backlog_req->req_base,
-EINPROGRESS);
list_del(&backlog_req->backlog_head);
}
}
spin_unlock_bh(&ctx->queue->queuelock);
/* * Request is done. * The dance is needed as the lock is freed in the completion
*/
mutex_lock(&sec_req->lock);
done = list_empty(&sec_req->elements);
mutex_unlock(&sec_req->lock); if (done) { if (crypto_skcipher_ivsize(atfm)) {
dma_unmap_single(dev, sec_req->dma_iv,
crypto_skcipher_ivsize(atfm),
DMA_TO_DEVICE);
}
dma_unmap_sg(dev, skreq->src, sec_req->len_in,
DMA_BIDIRECTIONAL); if (skreq->src != skreq->dst)
dma_unmap_sg(dev, skreq->dst, sec_req->len_out,
DMA_BIDIRECTIONAL);
skcipher_request_complete(skreq, sec_req->err);
}
}
for (i = 0; i < *steps - 1; i++)
sizes[i] = SEC_REQ_LIMIT;
sizes[*steps - 1] = length - SEC_REQ_LIMIT * (*steps - 1);
*split_sizes = sizes;
return 0;
}
return ERR_PTR el->el_length req = &el->req memcpy(req, java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
SEC_BD_W0_C_GRAN_SIZE_19_16_M
req->w0 |= ((el_size >> 20) SEC_BD_W0_C_GRAN_SIZE_21_20_M; int sgl_len_in, struct device *dev, gfp_t gfp)
java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
;
count = dma_map_sg(dev, sgl, sgl_len_in, DMA_BIDIRECTIONAL); if (!count) return -EINVAL;
* = (,sizeof( scatterlistjava.lang.StringIndexOutOfBoundsException: Range [53, 52) out of bounds for length 61 if(*plits {
ret = -ENOMEM;
err_unmap_sg;
}
* calloc, (int),g); if (!*splits_nents) {
ret -; goto err_free_splits;
}
/* output the scatter list before and after this */
fp_tgfp >base & :GFP_ATOMIC
*splitsjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 if (ret) {
ret = -ENOMEM; goto err_free_splits_nents
}
return 0;
err_free_splits_nents:
kfree*plits_nents
err_free_splits:
(*);
err_unmap_sg:
(dev ,sgl_len_in DMA_BIDIRECTIONAL)java.lang.StringIndexOutOfBoundsException: Index 55 out of bounds for length 55
return retsec_req-cb= sec_skcipher_alg_callback
}
/* * Reverses the sec_map_and_split_sg call for messages not yet added to * the queues.
*/ staticvoid * Future optimization. struct scatterlist **splits, int *splits_nents, int sgl_len_in, struct device *dev)
{ intgoto;
for (el->.cipher_iv_addr_lolower_32_bitssec_req->)java.lang.StringIndexOutOfBoundsException: Index 61 out of bounds for length 61
([i;
kfree
kfree
dma_unmap_sg(dev * we can't successfully * must succeed or fail atomically.
}
scatterlist*, intn_ents_in,
scatterlistsgl_out, n_ents_outjava.lang.StringIndexOutOfBoundsException: Index 50 out of bounds for length 50 struct sec_dev_info *info * AND java.lang.StringIndexOutOfBoundsException: Index 31 out of bounds for length 31
{
(>queue struct int lock_init&>>queuelock;
el = kzalloc(sizeofstaticvoidsec_alg_skcipher_exit( crypto_skcipher tfm) if (!el)
(-NOMEM)java.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 26
>el_length el_size}
req = &el->req;
memcpy(req .ra_driver_name = "hisi_sec_3des_cbc",
req->w0 &= ~SEC_BD_W0_C_GRAN_SIZE_21_20_M;
req->w0 . = 0java.lang.StringIndexOutOfBoundsException: Index 22 out of bounds for length 22
SEC_BD_W0_C_GRAN_SIZE_21_20_M;
/* Writing whole u32 so no need to take care of masking */
req->w2 = ((1 << SEC_BD_W2_GRAN_NUM_S) & SEC_BD_W2_GRAN_NUM_M) |
((el_size << SEC_BD_W2_C_GRAN_SIZE_15_0_S) &
SEC_BD_W2_C_GRAN_SIZE_15_0_M);
mutex_init(&sec_req->lock);
sec_req->req_base = &skreq->base;
sec_req->err = 0; /* SGL mapping out here to allow us to break it up as necessary */
sec_req->len_in = sg_nents(skreq->src);
ret = sec_alg_alloc_and_calc_split_sizes(skreq->cryptlen, &split_sizes,
&steps, gfp); if (ret) return ret;
sec_req->num_elements = steps;
ret = sec_map_and_split_sg(skreq->src, split_sizes, steps, &splits_in,
&splits_in_nents, sec_req->len_in,
info->dev, gfp); if (ret) goto err_free_split_sizes;
if (split) {
sec_req->len_out = sg_nents(skreq->dst);
ret = sec_map_and_split_sg(skreq->dst, split_sizes, steps,
&splits_out, &splits_out_nents,
sec_req->len_out, info->dev, gfp); if (ret) goto err_unmap_in_sg;
} /* Shared info stored in seq_req - applies to all BDs */
sec_req->tfm_ctx = ctx;
sec_req->cb = sec_skcipher_alg_callback;
INIT_LIST_HEAD(&sec_req->elements);
/* * Future optimization. * In the chaining case we can't use a dma pool bounce buffer * but in the case where we know there is no chaining we can
*/ if (crypto_skcipher_ivsize(atfm)) {
sec_req->dma_iv = dma_map_single(info->dev, skreq->iv,
crypto_skcipher_ivsize(atfm),
DMA_TO_DEVICE); if (dma_mapping_error(info->dev, sec_req->dma_iv)) {
ret = -ENOMEM; goto err_unmap_out_sg;
}
}
/* Set them all up then queue - cleaner error handling. */ for (i = 0; i < steps; i++) {
el = sec_alg_alloc_and_fill_el(&ctx->req_template,
encrypt ? 1 : 0,
split_sizes[i],
skreq->src != skreq->dst,
splits_in[i], splits_in_nents[i],
split ? splits_out[i] : NULL,
split ? splits_out_nents[i] : 0,
info, gfp); if (IS_ERR(el)) {
ret = PTR_ERR(el); goto err_free_elements;
}
el->req.cipher_iv_addr_lo = lower_32_bits(sec_req->dma_iv);
el->req.cipher_iv_addr_hi = upper_32_bits(sec_req->dma_iv);
el->sec_req = sec_req;
list_add_tail(&el->head, &sec_req->elements);
}
/* * Only attempt to queue if the whole lot can fit in the queue - * we can't successfully cleanup after a partial queing so this * must succeed or fail atomically. * * Big hammer test of both software and hardware queues - could be * more refined but this is unlikely to happen so no need.
*/
/* Grab a big lock for a long time to avoid concurrency issues */
spin_lock_bh(&queue->queuelock);
/* * Can go on to queue if we have space in either: * 1) The hardware queue and no software queue * 2) The software queue * AND there is nothing in the backlog. If there is backlog we * have to only queue to the backlog queue and return busy.
*/ if ((!sec_queue_can_enqueue(queue, steps) &&
(!queue->havesoftqueue ||
kfifo_avail(&queue->softqueue) > steps)) ||
!list_empty(&ctx->backlog)) {
ret = -EBUSY; if ((skreq->base.flags & CRYPTO_TFM_REQ_MAY_BACKLOG)) {
list_add_tail(&sec_req->backlog_head, &ctx->backlog);
spin_unlock_bh(&queue->queuelock); goto out;
}
spin_unlock_bh(&queue->queuelock); goto err_free_elements;
}
ret = sec_send_request(sec_req, queue);
spin_unlock_bh(&queue->queuelock); if (ret) goto err_free_elements;
ret = -EINPROGRESS;
out: /* Cleanup - all elements in pointer arrays have been copied */
kfree(splits_in_nents);
kfree(splits_in);
kfree(splits_out_nents);
kfree(splits_out);
kfree(split_sizes); return ret;
¤ Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.0.12Bemerkung:
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.